/*
 * ================================================================
 * JT NEXUS -- platform-wide UI/UX system
 * ================================================================
 * Loaded LAST in every role's head_.php, after jt-accent-theme.css and
 * jt-modern.css, so it is the final word on every visual decision it
 * makes. Those two files are deliberately left in place rather than
 * deleted: between them they carry a large amount of structural
 * plumbing (collapse-rail behavior, table/DataTables fixes, print
 * rules) that is still correct and still wanted -- this file replaces
 * the *visual language* on top of that, and overrides the parts of it
 * that clash.
 *
 * The design language here is a light, high-clarity operations console:
 * a pure-black sidebar, white surfaces on a near-white page, one orange
 * accent (already Kerildbert's own brand orange), hairline borders
 * instead of drop shadows, and a single consistent radius scale. The
 * previous look -- purple gradients, pastel status chips, a white brand
 * strip layered on top of a dark sidebar, and a tiled doodle background
 * behind everything -- is fully replaced.
 *
 * Sidebar width is the one change with knock-on effects worth calling
 * out: the theme shipped 150px, which is far too narrow for this app's
 * own labels ("Commercial Module", "Consignment Values") and forced
 * every one of them to wrap onto two lines. Widened to 264px so every
 * label in every role's sidebar sits on exactly one line.
 */

/* ================================================================
   1. Tokens
   ================================================================ */
:root {
	/* Surfaces */
	--nx-page: #F6F7F9;
	--nx-surface: #FFFFFF;
	--nx-surface-2: #FAFBFC;

	/* Hairlines */
	--nx-border: #E7E9EE;
	--nx-border-strong: #D9DDE4;

	/* Text -- a grayish black rather than near-black. #14161A against a
	   white card is close to maximum contrast, which on a screen full of
	   dense tabular data reads as harsh and makes every cell shout equally.
	   Softening the primary tone lets weight and size do the ranking. */
	--nx-text: #2A2F36;
	--nx-text-1: #2A2F36;
	--nx-text-2: #667085;
	--nx-text-3: #98A1AE;

	/* Accent: Kerildbert orange */
	--nx-accent: #F26A1B;
	--nx-accent-hover: #DC5A0F;
	--nx-accent-press: #C24E0B;
	--nx-accent-tint: #FFF3EB;
	--nx-accent-tint-border: #FBD6BB;

	/* Semantic */
	--nx-green: #12A150;
	--nx-green-tint: #E9F9F0;
	--nx-red: #E5484D;
	--nx-red-tint: #FDECEC;
	--nx-amber: #E0900A;
	--nx-amber-tint: #FFF6E5;
	--nx-blue: #2E6BE6;
	--nx-blue-tint: #EDF3FF;

	/* Sidebar */
	--nx-side: #000000;
	--nx-side-hover: #141518;
	--nx-side-line: rgba(255, 255, 255, 0.08);
	--nx-side-text: #9BA1AC;
	--nx-side-text-active: #FFFFFF;
	--nx-side-w: 264px;
	--nx-side-w-min: 76px;

	/* Shape */
	--nx-r-sm: 6px;
	--nx-r: 8px;
	--nx-r-lg: 12px;
	--nx-r-xl: 14px;

	/* Elevation: near-flat by design */
	--nx-shadow: 0 1px 2px rgba(16, 24, 40, 0.04);
	--nx-shadow-md: 0 4px 16px rgba(16, 24, 40, 0.06);
}

/* ================================================================
   2. Base
   ================================================================ */
body {
	background-color: var(--nx-page) !important;
	color: var(--nx-text);
	font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif;
	-webkit-font-smoothing: antialiased;
	letter-spacing: -0.006em;
}

/* The tiled logistics doodle behind all content is removed -- the
   reference language is clean, flat surfaces, and the pattern read as
   noise underneath dense tables. */
#kt_content::before,
.login-aside::before {
	display: none !important;
	content: none !important;
}
#kt_content {
	background-color: var(--nx-page);
}

a { color: var(--nx-accent); }
a:hover { color: var(--nx-accent-hover); }

/* ================================================================
   3. Sidebar
   ================================================================ */
@media (min-width: 992px) {
	.aside,
	#kt_aside {
		width: var(--nx-side-w) !important;
	}
	.aside-fixed .wrapper {
		padding-left: var(--nx-side-w) !important;
	}
	body.aside-minimize #kt_aside {
		width: var(--nx-side-w-min) !important;
	}
	body.aside-minimize.aside-fixed .wrapper {
		padding-left: var(--nx-side-w-min) !important;
	}
}

#kt_aside {
	background: var(--nx-side) !important;
	box-shadow: none !important;
	border-right: 1px solid rgba(255, 255, 255, 0.06);
}

/* ---- Brand row: logo mark + wordmark on the left, collapse toggle on
   the right, both inside the black sidebar. The previous build put a
   full-width WHITE strip here on top of a dark sidebar, which is what
   made the sidebar look like two mismatched layers stacked on top of
   each other. */
#kt_brand,
.jt-aside__brand {
	background: transparent !important;
	border-bottom: 1px solid var(--nx-side-line) !important;
	box-shadow: none !important;
	height: 64px;
	min-height: 64px;
	flex: 0 0 64px;
	padding: 0 16px !important;
	display: flex !important;
	align-items: center;
	justify-content: space-between;
	gap: 8px;
}
.jt-brand,
#kt_brand .brand-logo {
	display: flex;
	align-items: center;
	gap: 10px;
	min-width: 0;
	text-decoration: none !important;
}
/* The shipped logo is a JPG (opaque white/navy plate) -- it cannot sit
   on black without showing its own background box. Replaced with a
   composed mark: an orange rounded tile carrying the app glyph, plus a
   white wordmark, which is also what the reference design does. */
#kt_brand .brand-logo img {
	display: none !important;
}
.jt-brand-mark {
	width: 30px;
	height: 30px;
	flex: 0 0 30px;
	border-radius: 8px;
	background: var(--nx-accent);
	display: flex;
	align-items: center;
	justify-content: center;
	color: #fff;
}
.jt-brand-mark svg { width: 17px; height: 17px; display: block; }
.jt-brand-name {
	color: #fff;
	font-size: 0.9375rem;
	font-weight: 650;
	letter-spacing: -0.02em;
	white-space: nowrap;
}

/* Collapse toggle */
#kt_brand .jt-aside-toggle-btn,
.jt-aside-toggle-btn {
	width: 30px;
	height: 30px;
	flex: 0 0 30px;
	display: inline-flex !important;
	align-items: center;
	justify-content: center;
	border-radius: var(--nx-r-sm);
	background: transparent !important;
	border: none !important;
	color: var(--nx-side-text) !important;
	transition: background-color .14s ease, color .14s ease;
}
.jt-aside-toggle-btn:hover {
	background: rgba(255, 255, 255, 0.08) !important;
	color: #fff !important;
}
.jt-aside-toggle-btn .svg-icon svg,
.jt-aside-toggle-btn svg {
	width: 18px;
	height: 18px;
	fill: currentColor;
}

/* ---- Nav (own markup -- see jt_sidebar.php) ---- */
.jt-nav {
	flex: 1 1 auto;
	overflow-y: auto;
	overflow-x: hidden;
	padding: 12px 10px 8px;
	min-height: 0;
}
.jt-nav__label {
	color: #63697A;
	font-size: 0.6875rem;
	font-weight: 600;
	letter-spacing: 0.07em;
	text-transform: uppercase;
	padding: 14px 10px 6px;
}
.jt-nav__label:first-child { padding-top: 4px; }

.jt-nav__item {
	display: flex;
	align-items: center;
	gap: 11px;
	height: 40px;
	padding: 0 10px;
	margin: 1px 0;
	border-radius: var(--nx-r);
	color: var(--nx-side-text);
	text-decoration: none !important;
	transition: background-color .14s ease, color .14s ease;
}
.jt-nav__item:hover {
	background: var(--nx-side-hover);
	color: #fff;
}
.jt-nav__icon {
	flex: 0 0 18px;
	width: 18px;
	height: 18px;
	display: flex;
	align-items: center;
	justify-content: center;
	color: inherit;
}
.jt-nav__icon svg { width: 18px; height: 18px; display: block; }
.jt-nav__text {
	flex: 1 1 auto;
	min-width: 0;
	font-size: 0.875rem;
	font-weight: 500;
	letter-spacing: -0.01em;
	color: inherit;
	/* Single line, always -- the width this sidebar now has is chosen so
	   that every label in every role fits without wrapping. */
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}
.jt-nav__item.is-active {
	background: rgba(242, 106, 27, 0.14);
	color: var(--nx-accent);
}
.jt-nav__item.is-active .jt-nav__text { font-weight: 550; }

/* Collapsed rail */
body.aside-minimize .jt-nav { padding: 12px 8px 8px; }
body.aside-minimize .jt-nav__label { display: none; }
body.aside-minimize .jt-nav__item {
	justify-content: center;
	padding: 0;
	gap: 0;
}
body.aside-minimize .jt-nav__text { display: none; }

#kt_aside .menu-nav {
	padding: 0 !important;
}
/* The markup carried literal <br> tags between submenu items for
   spacing. They are neutralised here rather than hunted through five
   role sidebars, and real spacing comes from margins below. */
#kt_aside .menu-nav br {
	display: none !important;
}

/* ---- Top-level item ---- */
#kt_aside .menu-nav > .menu-item {
	margin: 2px 0;
}
#kt_aside .menu-nav > .menu-item > .menu-link {
	height: 40px;
	padding: 0 10px !important;
	border-radius: var(--nx-r) !important;
	display: flex;
	align-items: center;
	gap: 10px;
	background: transparent !important;
	transition: background-color .14s ease, color .14s ease;
}
#kt_aside .menu-nav > .menu-item > .menu-link:hover {
	background: var(--nx-side-hover) !important;
}
#kt_aside .menu-nav > .menu-item > .menu-link .menu-icon,
#kt_aside .menu-nav > .menu-item > .menu-link .menu-icon.flaticon-graphic-2,
#kt_aside .menu-nav > .menu-item > .menu-link .menu-icon i {
	width: 18px;
	min-width: 18px;
	margin: 0 !important;
	flex: 0 0 18px;
	font-size: 1.0625rem;
	color: var(--nx-side-text) !important;
	text-align: center;
	transition: color .14s ease;
}
#kt_aside .menu-nav > .menu-item > .menu-link .menu-text {
	color: var(--nx-side-text) !important;
	font-size: 0.875rem;
	font-weight: 500;
	letter-spacing: -0.01em;
	/* One line, always. The 150px sidebar this replaces wrapped almost
	   every label in this app onto two lines. */
	white-space: nowrap !important;
	overflow: hidden;
	text-overflow: ellipsis;
	text-align: left !important;
	flex: 1 1 auto;
	min-width: 0;
	transition: color .14s ease;
}
#kt_aside .menu-nav > .menu-item > .menu-link .menu-arrow {
	color: #5C616B !important;
	font-size: 0.625rem;
	flex: 0 0 auto;
	margin-left: 4px;
}
#kt_aside .menu-nav > .menu-item > .menu-link .menu-arrow:before {
	content: "\f105";
}
#kt_aside .menu-nav > .menu-item > .menu-link:hover .menu-text,
#kt_aside .menu-nav > .menu-item > .menu-link:hover .menu-icon,
#kt_aside .menu-nav > .menu-item > .menu-link:hover .menu-icon i {
	color: #fff !important;
}

/* Active top-level item: orange tint plate + orange glyph/label, the
   same treatment the reference uses for its selected nav row. */
#kt_aside .menu-nav > .menu-item.menu-item-open > .menu-link,
#kt_aside .menu-nav > .menu-item.jt-side-current > .menu-link {
	background: rgba(242, 106, 27, 0.14) !important;
}
#kt_aside .menu-nav > .menu-item.menu-item-open > .menu-link .menu-text,
#kt_aside .menu-nav > .menu-item.menu-item-open > .menu-link .menu-icon,
#kt_aside .menu-nav > .menu-item.menu-item-open > .menu-link .menu-icon i,
#kt_aside .menu-nav > .menu-item.jt-side-current > .menu-link .menu-text,
#kt_aside .menu-nav > .menu-item.jt-side-current > .menu-link .menu-icon,
#kt_aside .menu-nav > .menu-item.jt-side-current > .menu-link .menu-icon i {
	color: var(--nx-accent) !important;
}

/* ---- Submenu ---- */
#kt_aside .menu-nav .menu-submenu {
	background: transparent !important;
	padding: 2px 0 6px !important;
	margin: 0 !important;
}
#kt_aside .menu-nav .menu-submenu > .menu-arrow { display: none !important; }
#kt_aside .menu-nav .menu-subnav {
	padding: 0 !important;
	margin: 0 0 0 13px !important;
	border-left: 1px solid var(--nx-side-line);
}
/* The theme repeats the parent's own name as the first submenu row.
   With the parent row directly above it, that is pure duplication. */
#kt_aside .menu-nav .menu-item-parent {
	display: none !important;
}
#kt_aside .menu-nav .menu-subnav > .menu-item {
	margin: 1px 0;
}
#kt_aside .menu-nav .menu-subnav > .menu-item > .menu-link {
	height: 34px;
	padding: 0 10px 0 12px !important;
	margin-left: 6px;
	border-radius: var(--nx-r-sm) !important;
	display: flex;
	align-items: center;
	gap: 8px;
	background: transparent !important;
}
#kt_aside .menu-nav .menu-subnav > .menu-item > .menu-link:hover {
	background: var(--nx-side-hover) !important;
}
#kt_aside .menu-nav .menu-subnav .menu-bullet {
	display: none !important;
}
#kt_aside .menu-nav .menu-subnav > .menu-item > .menu-link .menu-text {
	color: #868C97 !important;
	font-size: 0.8125rem;
	font-weight: 450;
	white-space: nowrap !important;
	overflow: hidden;
	text-overflow: ellipsis;
	text-align: left !important;
}
#kt_aside .menu-nav .menu-subnav > .menu-item > .menu-link:hover .menu-text {
	color: #fff !important;
}
#kt_aside .menu-nav .menu-subnav > .menu-item.jt-side-current > .menu-link {
	background: rgba(242, 106, 27, 0.12) !important;
}
#kt_aside .menu-nav .menu-subnav > .menu-item.jt-side-current > .menu-link .menu-text {
	color: var(--nx-accent) !important;
	font-weight: 550;
}

/* ---- Collapsed rail ---- */
body.aside-minimize #kt_brand {
	justify-content: center;
	padding: 0 !important;
}
body.aside-minimize .jt-brand-name { display: none; }
body.aside-minimize #kt_aside .menu-nav > .menu-item > .menu-link {
	justify-content: center;
	padding: 0 !important;
}
body.aside-minimize #kt_aside .menu-nav > .menu-item > .menu-link .menu-text,
body.aside-minimize #kt_aside .menu-nav > .menu-item > .menu-link .menu-arrow {
	display: none !important;
}
body.aside-minimize .jt-side-foot { display: none !important; }

/* ---- Live-data footer, pinned to the bottom of the sidebar ---- */
.jt-side-foot {
	margin-top: auto;
	padding: 14px 16px 16px;
	border-top: 1px solid var(--nx-side-line);
}
.jt-side-foot__head {
	display: flex;
	align-items: center;
	gap: 7px;
	margin-bottom: 10px;
}
.jt-side-foot__dot {
	width: 6px;
	height: 6px;
	border-radius: 50%;
	background: #21C063;
	box-shadow: 0 0 0 3px rgba(33, 192, 99, 0.18);
	flex: 0 0 6px;
}
.jt-side-foot__title {
	color: #6E7480;
	font-size: 0.625rem;
	font-weight: 650;
	letter-spacing: 0.08em;
	text-transform: uppercase;
}
.jt-side-foot__row {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 8px;
	padding: 4px 0;
}
.jt-side-foot__label {
	color: #7C828D;
	font-size: 0.75rem;
	font-weight: 450;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}
.jt-side-foot__value {
	color: #fff;
	font-size: 0.8125rem;
	font-weight: 600;
	font-variant-numeric: tabular-nums;
	flex: 0 0 auto;
}

/* ================================================================
   4. Topbar
   ================================================================ */
#kt_header,
.header.header-fixed {
	background: var(--nx-surface) !important;
	border-bottom: 1px solid var(--nx-border);
	box-shadow: none !important;
	height: 64px !important;
	min-height: 64px !important;
}
#kt_header .container-fluid {
	padding: 0 24px;
	height: 100%;
}

/* ---- Fixed-layout geometry -----------------------------------------
   Both the header and the subheader are position:fixed and were offset
   for the theme's original 150px sidebar (`.aside-enabled .header
   .header-fixed { left: 150px }`, and a subheader pinned at `left: 0`
   outright). With the wider sidebar they have to be re-offset, or the
   sidebar paints over the left end of the search field and the profile
   chip pushes off the right edge -- both of which it did, confirmed on
   screen before this block existed. Heights are restated here too so
   the header/subheader stack and the content's top padding agree on one
   set of numbers rather than the theme's 65px/54px. */
@media (min-width: 992px) {
	.aside-enabled .header.header-fixed,
	.header.header-fixed {
		left: var(--nx-side-w) !important;
		right: 0 !important;
	}
	.header-fixed.subheader-fixed .subheader {
		left: var(--nx-side-w) !important;
		right: 0 !important;
		top: 64px !important;
		height: 60px !important;
	}
	body.aside-minimize .header.header-fixed,
	body.aside-minimize.aside-enabled .header.header-fixed {
		left: var(--nx-side-w-min) !important;
	}
	body.aside-minimize.header-fixed.subheader-fixed .subheader {
		left: var(--nx-side-w-min) !important;
	}
}
.header-fixed.subheader-fixed.subheader-enabled .wrapper,
.header-fixed.subheader-fixed .wrapper {
	padding-top: 124px !important; /* 64 header + 60 subheader */
}
.header-fixed .wrapper {
	padding-top: 64px;
}

/* The topbar's left slot carried a single orange "Open Help Desk
   Ticket" nav pill. It becomes the job search field -- the reference
   design's most prominent topbar element, and something this app never
   had at all. The help-desk link moves to an icon button on the right. */
.jt-topbar-left {
	display: flex;
	align-items: center;
	gap: 12px;
	flex: 1 1 auto;
	min-width: 0;
}
.jt-topbar-back {
	display: inline-flex;
	align-items: center;
	gap: 5px;
	height: 34px;
	padding: 0 12px 0 8px;
	border: 1px solid var(--nx-border);
	border-radius: var(--nx-r);
	background: var(--nx-surface);
	color: var(--nx-text-2) !important;
	font-size: 0.8125rem;
	font-weight: 500;
	text-decoration: none !important;
	white-space: nowrap;
	transition: background-color .14s ease, color .14s ease;
}
.jt-topbar-back:hover { background: var(--nx-surface-2); color: var(--nx-text) !important; }
.jt-topbar-back svg { width: 15px; height: 15px; }

.jt-search {
	position: relative;
	max-width: 420px;
	width: 100%;
}
.jt-search__icon {
	position: absolute;
	left: 12px;
	top: 50%;
	transform: translateY(-50%);
	color: var(--nx-text-3);
	pointer-events: none;
	display: flex;
}
.jt-search__icon svg { width: 15px; height: 15px; }
.jt-search input {
	width: 100%;
	height: 38px;
	border: 1px solid var(--nx-border);
	border-radius: 999px;
	background: var(--nx-surface-2);
	padding: 0 62px 0 34px;
	font-size: 0.8125rem;
	color: var(--nx-text);
	transition: border-color .14s ease, box-shadow .14s ease, background-color .14s ease;
}
.jt-search input::placeholder { color: var(--nx-text-3); }
.jt-search input:focus {
	outline: none;
	background: var(--nx-surface);
	border-color: var(--nx-accent);
	box-shadow: 0 0 0 3px rgba(242, 106, 27, 0.12);
}
.jt-search__kbd {
	position: absolute;
	right: 8px;
	top: 50%;
	transform: translateY(-50%);
	display: inline-flex;
	align-items: center;
	gap: 1px;
	height: 22px;
	padding: 0 7px;
	border: 1px solid var(--nx-border);
	border-radius: var(--nx-r-sm);
	background: var(--nx-surface);
	color: var(--nx-text-3);
	font-size: 0.6875rem;
	font-weight: 500;
	pointer-events: none;
}

/* Right cluster */
#kt_header .topbar {
	display: flex;
	align-items: center;
	gap: 6px;
	flex: 0 0 auto;
}
/* The icon buttons in the header are fixed 36px squares. The user chip
   shares .btn-icon but is not an icon button -- it holds an avatar, a name
   and a caret -- so it is excluded here rather than fighting this rule
   later with a more specific one. Its name was overflowing the 36px box
   and colliding with the bell to its left. */
#kt_header .topbar .btn.btn-icon:not(.jt-user-chip),
#kt_header .topbar .btn-dropdown,
.jt-top-icon {
	width: 36px !important;
	height: 36px !important;
	min-width: 36px;
	display: inline-flex !important;
	align-items: center;
	justify-content: center;
	border-radius: var(--nx-r) !important;
	border: 1px solid transparent !important;
	background: transparent !important;
	color: var(--nx-text-2) !important;
	margin: 0 !important;
	padding: 0 !important;
	transition: background-color .14s ease, border-color .14s ease, color .14s ease;
}
#kt_header .topbar .btn.btn-icon:hover,
#kt_header .topbar .btn-dropdown:hover,
.jt-top-icon:hover {
	background: var(--nx-surface-2) !important;
	border-color: var(--nx-border) !important;
	color: var(--nx-text) !important;
}
.jt-top-icon svg { width: 17px; height: 17px; }
#kt_header .topbar .btn.btn-icon i,
.jt-top-icon i {
	font-size: 1.0625rem;
	color: inherit !important;
}
/* The theme's pulsing ring on the KPI bell is replaced by a small
   static dot -- same "there is something here" signal, without the
   animation pulling the eye away from the page content. */
#kt_header .topbar .pulse-ring { display: none !important; }
.jt-top-icon--dot { position: relative; }
.jt-top-icon--dot::after {
	content: "";
	position: absolute;
	top: 7px;
	right: 8px;
	width: 6px;
	height: 6px;
	border-radius: 50%;
	background: var(--nx-accent);
	border: 2px solid var(--nx-surface);
}

/* Alerts dropdown */
.dropdown-menu.jt-alerts {
	min-width: 292px;
	padding: 0;
	border: 1px solid var(--nx-border);
	border-radius: var(--nx-r-lg);
	box-shadow: var(--nx-shadow-md);
	overflow: hidden;
}
.jt-alerts__head {
	padding: 12px 14px;
	border-bottom: 1px solid var(--nx-border);
	color: var(--nx-text);
	font-size: 0.8125rem;
	font-weight: 600;
}
.jt-alerts__item {
	display: flex;
	align-items: center;
	gap: 11px;
	padding: 12px 14px;
	text-decoration: none !important;
	transition: background-color .14s ease;
}
.jt-alerts__item:hover { background: var(--nx-surface-2); }
.jt-alerts__icon {
	width: 32px;
	height: 32px;
	flex: 0 0 32px;
	border-radius: var(--nx-r);
	background: var(--nx-accent-tint);
	color: var(--nx-accent);
	display: flex;
	align-items: center;
	justify-content: center;
}
.jt-alerts__icon svg { width: 16px; height: 16px; }
.jt-alerts__text { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.jt-alerts__title { color: var(--nx-text); font-size: 0.8125rem; font-weight: 550; }
.jt-alerts__meta { color: var(--nx-text-3); font-size: 0.75rem; }

/* Profile chip */
#kt_quick_user_toggle {
	height: 40px;
	display: inline-flex !important;
	align-items: center;
	gap: 8px;
	padding: 0 8px 0 6px !important;
	margin-left: 4px;
	border-radius: 999px !important;
	border: 1px solid var(--nx-border) !important;
	background: var(--nx-surface) !important;
	transition: background-color .14s ease, border-color .14s ease;
}
#kt_quick_user_toggle:hover {
	background: var(--nx-surface-2) !important;
	border-color: var(--nx-border-strong) !important;
}
#kt_quick_user_toggle .jt-hi { display: none !important; }
#kt_quick_user_toggle .symbol {
	width: 28px;
	height: 28px;
	flex: 0 0 28px;
	order: -1;
}
#kt_quick_user_toggle .symbol .symbol-label {
	width: 28px;
	height: 28px;
	border-radius: 50% !important;
	/* Colour only: the uploaded photo arrives as an inline background-image,
	   which the "background" shorthand used to wipe out (blank orange circle). */
	background-color: var(--nx-accent) !important;
	color: #fff !important;
	font-size: 0.75rem !important;
	font-weight: 600 !important;
	display: flex;
	align-items: center;
	justify-content: center;
}
#kt_quick_user_toggle .jt-user-name {
	color: var(--nx-text) !important;
	font-size: 0.8125rem !important;
	font-weight: 550 !important;
	margin: 0 !important;
	white-space: nowrap;
}
.jt-user-caret {
	color: var(--nx-text-3);
	display: inline-flex;
	flex: 0 0 auto;
}
.jt-user-caret svg { width: 13px; height: 13px; }

/* ================================================================
   5. Breadcrumb bar
   ================================================================ */
.subheader,
#kt_subheader {
	background: var(--nx-surface) !important;
	border-bottom: 1px solid var(--nx-border);
	box-shadow: none !important;
	padding: 0 !important;
	height: 60px;
	min-height: 60px;
	display: flex;
	align-items: center;
}
#kt_subheader .container-fluid {
	padding: 0 24px;
	width: 100%;
}
.subheader .breadcrumb {
	margin: 0 !important;
	padding: 0 !important;
	background: transparent;
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 0;
}
.subheader .breadcrumb .breadcrumb-item {
	display: inline-flex;
	align-items: center;
	font-size: 0.8125rem;
	font-weight: 450;
	padding: 0;
}
.subheader .breadcrumb .breadcrumb-item a,
.subheader .breadcrumb .breadcrumb-item a.text-muted {
	color: var(--nx-text-2) !important;
	font-weight: 450 !important;
	text-decoration: none !important;
	transition: color .14s ease;
}
.subheader .breadcrumb .breadcrumb-item a:hover {
	color: var(--nx-text) !important;
}
/* Chevron separators, replacing the theme's dot separators. */
.subheader .breadcrumb .breadcrumb-item + .breadcrumb-item {
	padding-left: 0;
}
.subheader .breadcrumb .breadcrumb-item + .breadcrumb-item::before {
	content: "" !important;
	display: inline-block;
	width: 5px;
	height: 5px;
	margin: 0 10px;
	border-right: 1.5px solid var(--nx-text-3);
	border-bottom: 1.5px solid var(--nx-text-3);
	transform: rotate(-45deg);
	background: none !important;
	border-radius: 0 !important;
	opacity: 1;
}
.subheader .breadcrumb .breadcrumb-item.jt-breadcrumb-current,
.jt-breadcrumb-current {
	color: var(--nx-text) !important;
	font-weight: 600 !important;
}
.jt-subheader-actions {
	display: flex;
	align-items: center;
	gap: 8px;
	flex: 0 0 auto;
}
.jt-subheader-actions .btn { white-space: nowrap; }
.jt-btn-icon-left {
	display: inline-flex !important;
	align-items: center;
	gap: 6px;
}
.jt-btn-icon-left svg { width: 15px; height: 15px; }

/* ================================================================
   6. Buttons
   ================================================================ */
.btn {
	border-radius: var(--nx-r) !important;
	font-size: 0.8125rem !important;
	font-weight: 550 !important;
	letter-spacing: -0.005em;
	padding: 0.6rem 1rem;
	transition: background-color .14s ease, border-color .14s ease, color .14s ease, box-shadow .14s ease;
}
.btn.btn-sm { padding: 0.45rem 0.8rem; font-size: 0.78125rem !important; }
.btn.btn-lg { padding: 0.75rem 1.25rem; font-size: 0.875rem !important; }

/* Primary + every colored variant the app already uses for a main
   action, unified onto the single orange accent. */
.btn.btn-primary,
.btn-primary,
.btn.btn-success,
.btn.btn-dark,
.btn.btn-info {
	background-color: var(--nx-accent) !important;
	border-color: var(--nx-accent) !important;
	color: #fff !important;
	box-shadow: none !important;
}
.btn.btn-primary:hover, .btn-primary:hover,
.btn.btn-success:hover, .btn.btn-dark:hover, .btn.btn-info:hover,
.btn.btn-primary:focus, .btn-primary:focus,
.btn.btn-success:focus, .btn.btn-dark:focus, .btn.btn-info:focus {
	background-color: var(--nx-accent-hover) !important;
	border-color: var(--nx-accent-hover) !important;
	color: #fff !important;
	box-shadow: none !important;
}
.btn.btn-primary:active, .btn.btn-success:active, .btn.btn-dark:active {
	background-color: var(--nx-accent-press) !important;
	border-color: var(--nx-accent-press) !important;
}

/* Secondary: outline on white */
.btn.btn-secondary,
.btn.btn-light,
.btn.btn-light-primary,
.btn.btn-white {
	background-color: var(--nx-surface) !important;
	border: 1px solid var(--nx-border) !important;
	color: var(--nx-text) !important;
	box-shadow: none !important;
}
.btn.btn-secondary:hover,
.btn.btn-light:hover,
.btn.btn-light-primary:hover,
.btn.btn-white:hover {
	background-color: var(--nx-surface-2) !important;
	border-color: var(--nx-border-strong) !important;
	color: var(--nx-text) !important;
}
.btn.btn-danger {
	background-color: var(--nx-red) !important;
	border-color: var(--nx-red) !important;
	color: #fff !important;
}
.btn.btn-danger:hover {
	background-color: #D13A3F !important;
	border-color: #D13A3F !important;
}
.btn.btn-shadow, .btn.btn-shadow-hover { box-shadow: none !important; }

/* Icon-only action buttons inside tables/rows */
.btn.btn-icon:not(.btn-lg) {
	width: 32px;
	height: 32px;
	padding: 0 !important;
	display: inline-flex;
	align-items: center;
	justify-content: center;
}

/* ================================================================
   7. Cards
   ================================================================ */
.card,
.card.card-custom {
	background: var(--nx-surface) !important;
	border: 1px solid var(--nx-border) !important;
	border-radius: var(--nx-r-lg) !important;
	box-shadow: var(--nx-shadow) !important;
}
.card.card-custom > .card-header,
.card > .card-header {
	background: transparent !important;
	border-bottom: 1px solid var(--nx-border) !important;
	min-height: 60px !important;
	padding: 0 20px !important;
}
.card.card-custom > .card-header .card-title,
.card > .card-header .card-title {
	margin: 0;
	align-items: center;
}
/* One card title size, everywhere. Measured across 22 pages, these
   were landing at 13px/400, 15px/500, 16.6px/500 and 16.6px/600
   depending on whether the markup wrapped the text in a .card-label,
   used the bare <h3.card-title>, or leaned on the theme's h3 size --
   three different-looking titles on one screen. The bare
   `.card-title` needs naming explicitly: on most cards in this app it
   IS the <h3>, so it never matched a descendant selector. */
.card.card-custom > .card-header .card-title .card-label,
.card > .card-header .card-title .card-label,
.card > .card-header > .card-title,
.card.card-custom > .card-header > .card-title,
.card > .card-header .card-title > b,
.card > .card-header h3,
.card > .card-header h4,
.card .card-title h3,
.card .card-label {
	color: var(--nx-text) !important;
	font-size: 15px !important;
	font-weight: 600 !important;
	letter-spacing: -0.01em;
	margin: 0 !important;
}
.card.card-custom > .card-body,
.card > .card-body {
	padding: 20px !important;
}
.card.card-custom > .card-footer,
.card > .card-footer {
	background: transparent !important;
	border-top: 1px solid var(--nx-border) !important;
	padding: 16px 20px !important;
}
/* The purple gradient hero card is flattened to a normal white card --
   it was the single loudest surface on the old dashboard. */
.card.bg-primary,
.card.card-custom.bg-primary,
.bg-primary.card {
	background: var(--nx-surface) !important;
}
.card.bg-primary .card-title .card-label,
.card.bg-primary .text-white {
	color: var(--nx-text) !important;
}

/* Section label above a group of cards */
.jt-section-label {
	display: flex;
	align-items: center;
	gap: 8px;
	color: var(--nx-text-3) !important;
	font-size: 0.6875rem !important;
	font-weight: 650 !important;
	letter-spacing: 0.07em !important;
	text-transform: uppercase;
	margin: 24px 0 12px !important;
	padding: 0 !important;
	background: none !important;
	border: none !important;
}
/* The first section in a card/modal body sits right under the header
   divider already -- no extra gap needed above it there. */
.card-body > .jt-section-label:first-child,
.modal-body > .jt-section-label:first-child {
	margin-top: 0 !important;
}
.jt-section-label__icon { color: var(--nx-text-3) !important; font-size: 0.875rem; }

/* ================================================================
   8. Stat strip
   ================================================================
   One white card, equal columns divided by hairlines: a big tabular
   figure, a quiet label under it, and a delta line. Replaces the row of
   pastel-tinted pills the old dashboard used, which gave five different
   background colors equal visual weight and made none of them readable
   as more or less important than the others. */
.jt-stats {
	display: flex;
	flex-wrap: wrap;
	background: var(--nx-surface);
	border: 1px solid var(--nx-border);
	border-radius: var(--nx-r-lg);
	box-shadow: var(--nx-shadow);
	overflow: hidden;
	margin-bottom: 20px;
}
.jt-stat {
	flex: 1 1 0;
	min-width: 168px;
	padding: 16px 20px;
	border-right: 1px solid var(--nx-border);
	text-decoration: none !important;
	display: block;
	transition: background-color .14s ease;
}
.jt-stat:last-child { border-right: none; }
.jt-stat:hover { background: var(--nx-surface-2); }
.jt-stat__top {
	display: flex;
	align-items: baseline;
	gap: 8px;
	margin-bottom: 0;
}
/* Value and label share one baseline ("7  In Preclearing"), with the
   delta on its own line underneath -- the reference's arrangement. */
.jt-stat__value {
	color: var(--nx-text);
	font-size: 1.75rem;
	font-weight: 700;
	line-height: 1.05;
	letter-spacing: -0.035em;
	font-variant-numeric: tabular-nums;
}
.jt-stat__label {
	color: var(--nx-text-2);
	font-size: 0.8125rem;
	font-weight: 500;
	white-space: nowrap;
}
.jt-stat__delta {
	display: flex;
	align-items: center;
	gap: 4px;
	margin-top: 7px;
	font-size: 0.75rem;
	font-weight: 500;
	color: var(--nx-text-3);
	white-space: nowrap;
}
.jt-stat__delta--up { color: var(--nx-green); }
.jt-stat__delta--down { color: var(--nx-red); }
.jt-stat__delta--warn { color: var(--nx-amber); }
.jt-stat__delta svg { width: 12px; height: 12px; flex: 0 0 12px; }
.jt-stat__delta-note { color: var(--nx-text-3); font-weight: 450; }
.jt-stat--alert .jt-stat__value { color: var(--nx-red); }

/* ================================================================
   9. Tables
   ================================================================ */
.table {
	color: var(--nx-text);
	margin: 0;
}
.table thead th,
.table.table-head-custom thead th {
	background: var(--nx-surface-2) !important;
	border-top: none !important;
	border-bottom: 1px solid var(--nx-border) !important;
	color: var(--nx-text-2) !important;
	/* px, for the reason given in the TYPOGRAPHY block: this theme's root
	   font-size is 13px, so 0.6875rem rendered at 8.9px -- smaller than the
	   caption text under it. */
	font-size: var(--jt-fs-micro) !important;
	font-weight: 600 !important;
	letter-spacing: 0.05em !important;
	text-transform: uppercase !important;
	padding: 11px 14px !important;
	white-space: nowrap;
	vertical-align: middle;
}
.table tbody td {
	border-top: none !important;
	border-bottom: 1px solid var(--nx-border) !important;
	padding: 12px 14px !important;
	font-size: 0.8125rem;
	color: var(--nx-text);
	vertical-align: middle;
}
.table tbody tr:hover > td { background: var(--nx-surface-2); }
.table tbody tr:last-child > td { border-bottom: none !important; }

/* DataTables chrome */
.dataTables_wrapper .dataTables_filter input,
.dataTables_wrapper .dataTables_length select {
	border: 1px solid var(--nx-border) !important;
	border-radius: var(--nx-r) !important;
	height: 36px;
	padding: 0 10px;
	font-size: 0.8125rem;
	background: var(--nx-surface);
	color: var(--nx-text);
}
.dataTables_wrapper .dataTables_filter input:focus {
	outline: none;
	border-color: var(--nx-accent) !important;
	box-shadow: 0 0 0 3px rgba(242, 106, 27, 0.1);
}
.dataTables_wrapper .dataTables_info,
.dataTables_wrapper .dataTables_length,
.dataTables_wrapper .dataTables_filter {
	color: var(--nx-text-2);
	font-size: 0.8125rem;
}
.dataTables_wrapper .pagination .page-link {
	border-radius: var(--nx-r-sm) !important;
	border: 1px solid transparent;
	color: var(--nx-text-2);
	font-size: 0.8125rem;
	min-width: 32px;
	height: 32px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
}
.dataTables_wrapper .pagination .page-item.active .page-link {
	background: var(--nx-accent) !important;
	border-color: var(--nx-accent) !important;
	color: #fff !important;
}
.dataTables_wrapper .pagination .page-link:hover {
	background: var(--nx-surface-2);
	color: var(--nx-text);
}

/* ================================================================
   10. Forms
   ================================================================ */
.form-control,
.form-control.form-control-solid,
.custom-select {
	background: var(--nx-surface) !important;
	border: 1px solid var(--nx-border) !important;
	border-radius: var(--nx-r) !important;
	color: var(--nx-text) !important;
	font-size: 0.8125rem !important;
	min-height: 40px;
	padding: 0.55rem 0.75rem;
	box-shadow: none !important;
	transition: border-color .14s ease, box-shadow .14s ease;
}
textarea.form-control { min-height: 76px; }
.form-control:focus,
.form-control.form-control-solid:focus {
	background: var(--nx-surface) !important;
	border-color: var(--nx-accent) !important;
	box-shadow: 0 0 0 3px rgba(242, 106, 27, 0.12) !important;
	color: var(--nx-text) !important;
}
.form-control::placeholder { color: var(--nx-text-3) !important; }
label,
.form-group > label {
	color: var(--nx-text) !important;
	font-size: 0.8125rem !important;
	font-weight: 550 !important;
	margin-bottom: 6px;
}
.form-text.text-muted { color: var(--nx-text-3) !important; font-size: 0.75rem !important; }

/* bootstrap-select, used across this app for searchable dropdowns */
.bootstrap-select > .dropdown-toggle,
.bootstrap-select.form-control > .dropdown-toggle {
	background: var(--nx-surface) !important;
	border: 1px solid var(--nx-border) !important;
	border-radius: var(--nx-r) !important;
	color: var(--nx-text) !important;
	font-size: 0.8125rem !important;
	min-height: 40px;
	box-shadow: none !important;
}
.bootstrap-select .dropdown-menu {
	border: 1px solid var(--nx-border) !important;
	border-radius: var(--nx-r) !important;
	box-shadow: var(--nx-shadow-md) !important;
	font-size: 0.8125rem;
}
.bootstrap-select .dropdown-item.active,
.bootstrap-select .dropdown-item:active {
	background: var(--nx-accent-tint) !important;
	color: var(--nx-accent) !important;
}

/* ================================================================
   11. Badges / labels / alerts
   ================================================================ */
.label, .badge {
	border-radius: 999px !important;
	font-size: 0.6875rem !important;
	font-weight: 600 !important;
	letter-spacing: 0.01em;
	padding: 0 9px;
	height: 22px;
	display: inline-flex;
	align-items: center;
}
.label.label-light-success, .badge-light-success { background: var(--nx-green-tint) !important; color: var(--nx-green) !important; }
.label.label-light-danger,  .badge-light-danger  { background: var(--nx-red-tint) !important;   color: var(--nx-red) !important; }
.label.label-light-warning, .badge-light-warning { background: var(--nx-amber-tint) !important; color: var(--nx-amber) !important; }
.label.label-light-primary, .badge-light-primary { background: var(--nx-accent-tint) !important; color: var(--nx-accent) !important; }
.label.label-light-info,    .badge-light-info    { background: var(--nx-blue-tint) !important;  color: var(--nx-blue) !important; }

.alert.alert-custom {
	border-radius: var(--nx-r-lg) !important;
	border: 1px solid var(--nx-border) !important;
	background: var(--nx-surface) !important;
	box-shadow: none !important;
	padding: 14px 18px !important;
}
.alert.alert-custom .alert-text { color: var(--nx-text) !important; font-size: 0.8125rem; }

/* Modals */
.modal-content {
	border: 1px solid var(--nx-border) !important;
	border-radius: var(--nx-r-lg) !important;
	box-shadow: var(--nx-shadow-md) !important;
}
.modal-header {
	border-bottom: 1px solid var(--nx-border) !important;
	padding: 18px 20px !important;
}
.modal-header .modal-title { font-size: 0.9375rem; font-weight: 600; color: var(--nx-text); }
.modal-body { padding: 20px !important; font-size: 0.875rem; }
.modal-footer { border-top: 1px solid var(--nx-border) !important; padding: 14px 20px !important; }

/* Toasts keep their own geometry, just re-tinted to this system. */
.jt-toast {
	border-radius: var(--nx-r-lg) !important;
	border: 1px solid var(--nx-border) !important;
	box-shadow: var(--nx-shadow-md) !important;
}

/* ================================================================
   12. Content rhythm
   ================================================================ */
#kt_content .container,
#kt_content .container-fluid {
	padding-left: 24px;
	padding-right: 24px;
}
#kt_content .d-flex.flex-column-fluid { padding-top: 20px; padding-bottom: 24px; }
.card + .card, .row + .row { margin-top: 0; }
#kt_content .gutter-b { margin-bottom: 20px !important; }

/* Footer */
.footer {
	background: var(--nx-surface) !important;
	border-top: 1px solid var(--nx-border);
	box-shadow: none !important;
}
.footer .text-dark-75, .footer a { font-size: 0.8125rem; }

/* Scrollbars, to match the flat surfaces */
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: #D6DAE1; border-radius: 999px; border: 3px solid var(--nx-page); }
::-webkit-scrollbar-thumb:hover { background: #BFC5CE; }
#kt_aside ::-webkit-scrollbar-thumb { background: rgba(255,255,255,.14); border-color: transparent; }

/* ================================================================
   13. Dashboard widget details
   ================================================================ */
/* Payment amounts. These were ten arbitrary pill colors (success,
   danger, primary, info, ...) assigned per row with no meaning behind
   the choice, which made a list of figures read as a status board.
   One quiet, tabular treatment instead. */
.jt-amount {
	background: transparent !important;
	color: var(--nx-text) !important;
	font-size: 0.8125rem !important;
	font-weight: 600 !important;
	font-variant-numeric: tabular-nums;
	padding: 0 !important;
	height: auto !important;
	border-radius: 0 !important;
}

/* The pastel icon tiles beside the haulage figures, retinted from five
   different pastels onto the one accent. */
.symbol.symbol-50 > .symbol-label,
.symbol.symbol-45 > .symbol-label,
.symbol.symbol-40 > .symbol-label {
	border-radius: var(--nx-r) !important;
	background: var(--nx-accent-tint) !important;
	color: var(--nx-accent) !important;
}
.symbol.symbol-light-success > .symbol-label,
.symbol.symbol-light-primary > .symbol-label,
.symbol.symbol-light-info > .symbol-label,
.symbol.symbol-light-warning > .symbol-label,
.symbol.symbol-light-danger > .symbol-label {
	background: var(--nx-accent-tint) !important;
	color: var(--nx-accent) !important;
}
.symbol .symbol-label i,
.symbol .symbol-label .svg-icon svg [fill] { color: var(--nx-accent) !important; }

/* Figures that sit next to those tiles */
.font-size-h4, .font-size-h5, .font-size-h6 { letter-spacing: -0.02em; }
.text-dark-75, .text-dark-50, .text-dark { color: var(--nx-text) !important; }
.text-muted { color: var(--nx-text-2) !important; }

/* Dashboard chart cards: even heights, chart flush to the card edges */
.card.card-stretch { height: auto; }

/* ---- Charts -------------------------------------------------------
   Most theme charts read their colors from KTAppSettings (retinted in
   each role's foot_.php), but a few in assets/js/pages/widgets.min.js
   carry a hardcoded literal instead -- kt_mixed_widget_2_chart's line
   is `var o = "#287ED7"`, a blue that survived every settings change.
   Rather than patch a minified vendor bundle, these override the
   rendered SVG: CSS properties beat SVG presentation attributes, so a
   `stroke` here wins over the attribute ApexCharts wrote inline. The
   dropShadow filter that bundle also applies is dropped, since it was
   tinted to the same blue. */
#kt_mixed_widget_2_chart .apexcharts-series path,
#kt_mixed_widget_2_chart .apexcharts-line,
.apexcharts-canvas .apexcharts-series path[stroke="#287ED7"] {
	stroke: var(--nx-accent) !important;
	filter: none !important;
}
#kt_mixed_widget_2_chart .apexcharts-series,
#kt_mixed_widget_2_chart svg {
	filter: none !important;
}
.apexcharts-tooltip {
	border: 1px solid var(--nx-border) !important;
	border-radius: var(--nx-r) !important;
	box-shadow: var(--nx-shadow-md) !important;
	font-family: 'Inter', sans-serif !important;
}
.apexcharts-tooltip .apexcharts-tooltip-title {
	background: var(--nx-surface-2) !important;
	border-bottom: 1px solid var(--nx-border) !important;
	font-weight: 600 !important;
}

/* ================================================================
   14. Table row actions
   ================================================================
   Row action buttons in this app are .btn-success / .btn-primary with
   white glyphs, which under section 6's unified accent turned every
   list into a wall of solid orange -- two filled buttons on every row,
   competing with the data. Inside a table cell they become quiet
   bordered icon buttons that only pick up the accent on hover. */
.table td .btn,
.table td .btn.btn-primary,
.table td .btn.btn-success,
.table td .btn.btn-info,
.table td .btn.btn-danger,
.table td .btn.btn-dark {
	background: var(--nx-surface) !important;
	border: 1px solid var(--nx-border) !important;
	color: var(--nx-text-2) !important;
	/* Bug fix: this used to force every .btn in a table cell to a 32x32
	   square with zero padding. That is right for the icon-only row
	   actions it was written for, and wrong for every text button that
	   shares the selector -- on admin/user_approvals "Resend Email" and
	   "Verify Manually" were squashed into 32px boxes and their labels
	   overlapped each other. Text buttons now size to their content; the
	   square is applied below, only to buttons that really are just an
	   icon. */
	min-height: 32px;
	padding: 5px 12px !important;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 6px;
	box-shadow: none !important;
}
/* The icon-only case: a button whose entire content is one <i>. :has() is
   the only way to tell them apart without touching the markup in every
   list in the app. Where it is unsupported these simply stay text-width,
   which is harmless. */
.table td .btn.jt-icon-only,
.table td .btn.jt-icon-only.jt-icon-only {
	width: 32px;
	padding: 0 !important;
}
.table td .btn + .btn { margin-left: 4px; }
.table td .btn i,
.table td .btn i.text-light,
.table td .btn .svg-icon svg [fill] {
	color: var(--nx-text-2) !important;
	font-size: 0.9375rem;
}
.table td .btn:hover {
	background: var(--nx-accent-tint) !important;
	border-color: var(--nx-accent-tint-border) !important;
	color: var(--nx-accent) !important;
}
.table td .btn:hover i,
.table td .btn:hover i.text-light { color: var(--nx-accent) !important; }
/* A genuinely destructive row action stays legible as destructive. */
.table td .btn.btn-danger:hover {
	background: var(--nx-red-tint) !important;
	border-color: #F7CFD0 !important;
	color: var(--nx-red) !important;
}
.table td .btn.btn-danger:hover i { color: var(--nx-red) !important; }
/* Each action sits in its own <form>, which would otherwise stack them
   vertically and double every row's height. */
.table td form { display: inline-block; margin: 0; }
/* ...except the spaced action groups, which are flex rows on purpose. */
.table td form.jt-row-actions,
.table td .jt-row-actions { display: flex !important; }

/* Data cells hold job numbers, dates and codes -- none of which should
   wrap mid-value. These tables already scroll horizontally. */
.table tbody td,
.table thead th { white-space: nowrap; }
.table tbody td { padding: 10px 14px !important; }

/* Card-header glyphs were inheriting the old brand purple. */
.card-header .card-title i,
.card-title > i {
	color: var(--nx-text-3) !important;
	font-size: 1rem;
	margin-right: 8px;
}

/* Progress meter used in the job lists */
.progress { background: var(--nx-border) !important; border-radius: 999px !important; height: 5px !important; }
.progress-bar { background: var(--nx-accent) !important; border-radius: 999px !important; }

/* ================================================================
   15. Master-data tiles (admin dashboard)
   ================================================================
   These were six color variants (--purple/--slate/--teal/--blue/
   --orange/--pink) applied round-robin to what is one kind of thing:
   a count of rows in a master-data table. One treatment for all of
   them, with the figure as the loudest element instead of the tile. */
.jt-tile-grid {
	display: grid;
	/* auto-fill packed six across on a wide screen, which left the admin
	   dashboard's ten master-data tiles as a row of six and a row of four
	   with two empty slots trailing -- it read as two tiles having gone
	   missing rather than as a grid. Five across gives two even rows for
	   ten; auto-fit keeps other counts and narrower widths sensible. */
	grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
	/* Equal rows: one tile carrying a supporting line made its whole
	   row taller than the row beneath it. */
	grid-auto-rows: 1fr;
	gap: 12px;
}
@media (min-width: 1200px) {
	.jt-tile-grid { grid-template-columns: repeat(5, minmax(0, 1fr)); }
}
.jt-tile,
.jt-tile.jt-tile--purple,
.jt-tile.jt-tile--slate,
.jt-tile.jt-tile--teal,
.jt-tile.jt-tile--blue,
.jt-tile.jt-tile--orange,
.jt-tile.jt-tile--pink {
	/* Markup order is icon, label, value. Grid areas put the figure
	   first and the icon alongside, so a tile reads the same way as a
	   .jt-stat or a .jt-fig instead of label-then-number. */
	display: grid;
	grid-template-columns: 42px minmax(0, 1fr);
	grid-template-areas:
		"icon value"
		"icon label"
		"icon meta";
	column-gap: 12px;
	align-content: center;
	background: var(--nx-surface) !important;
	border: 1px solid var(--nx-border) !important;
	border-radius: var(--nx-r-lg) !important;
	box-shadow: var(--nx-shadow) !important;
	padding: 14px 16px !important;
	text-decoration: none !important;
	transition: border-color .14s ease, box-shadow .14s ease;
}
.jt-tile:hover {
	border-color: var(--nx-accent-tint-border) !important;
	box-shadow: var(--nx-shadow-md) !important;
}
.jt-tile__icon {
	grid-area: icon;
	align-self: center;
	width: 42px;
	height: 42px;
	border-radius: 12px;
	background: var(--nx-accent-tint) !important;
	color: var(--nx-accent) !important;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	margin-bottom: 0;
}
.jt-tile__icon i { color: var(--nx-accent) !important; font-size: 1.0625rem; }
.jt-tile__label {
	grid-area: label;
	color: var(--nx-text-2) !important;
	font-size: 0.8125rem !important;
	font-weight: 500 !important;
	margin: 2px 0 0 !important;
	line-height: 1.3;
}
.jt-tile__meta {
	grid-area: meta;
	margin-top: 3px;
	font-size: 0.75rem;
	font-weight: 500;
	color: var(--nx-text-3);
}
.jt-tile__value {
	grid-area: value;
	color: var(--nx-text) !important;
	font-size: 1.375rem !important;
	font-weight: 680 !important;
	letter-spacing: -0.03em;
	font-variant-numeric: tabular-nums;
	line-height: 1.15;
}

/* Sidebar: the live-data panel is pinned, and the nav above it scrolls
   independently. Padding-bottom keeps the last item from ending flush
   against the panel's border when the list is long enough to scroll
   (admin's is). */
.jt-nav { padding-bottom: 14px; }
.jt-side-foot {
	flex: 0 0 auto;
	background: var(--nx-side);
}

/* ================================================================
   16. Auth pages
   ================================================================
   login / signup / recoverpw / reset_password / set_password use their
   own jt-auth-* component system (see jt-modern.css). It was built
   around the old brand purple, which after this change was the only
   purple left anywhere in the product -- the front door didn't match
   the app behind it. Retinted onto the same tokens as everything else
   by redefining the variables it already reads, so no auth markup or
   component rule has to change. */
:root {
	--jt-auth-accent: #F26A1B;
	--jt-auth-accent-hover: #DC5A0F;
	--jt-auth-accent-bg: #FFF3EB;
	--jt-auth-accent-bdr: #FBD6BB;
	--jt-auth-border: #E7E9EE;
	--jt-auth-border-light: #EFF1F4;
	--jt-auth-text: #14161A;
	--jt-auth-text-sec: #6B7280;
	--jt-auth-text-mut: #9AA1AC;
	--jt-auth-radius-sm: 8px;
	--jt-auth-radius-md: 12px;
}
.jt-auth-submit {
	height: 42px;
	font-size: 0.875rem !important;
	font-weight: 550 !important;
}
.jt-auth-card {
	border-radius: var(--nx-r-lg) !important;
	box-shadow: var(--nx-shadow-md) !important;
}
.jt-auth-input-wrap input {
	min-height: 40px;
}
/* The auth pages' own submit button is not a .btn, so section 6 doesn't
   reach it; and where they DO use .btn (reset_password's dark button),
   the accent rules there already apply. */

/* ================================================================
   17. Choice cards
   ================================================================
   The reference design's "Select Transport Mode" pattern, used on
   Create Job for the Process and Mode decisions. Selected state is an
   accent border + accent title + a filled check in the corner. See
   assets/js/custom/jt-choice.js for the wiring to the real selects. */
.jt-choice-block { margin-bottom: 26px; }
.jt-choice-head {
	display: flex;
	align-items: flex-start;
	gap: 11px;
	margin-bottom: 12px;
}
.jt-choice-step {
	width: 24px;
	height: 24px;
	flex: 0 0 24px;
	border-radius: 50%;
	background: var(--nx-accent);
	color: #fff;
	font-size: 0.75rem;
	font-weight: 650;
	display: flex;
	align-items: center;
	justify-content: center;
	margin-top: 1px;
}
.jt-choice-title {
	color: var(--nx-text);
	font-size: 0.9375rem;
	font-weight: 600;
	letter-spacing: -0.01em;
}
.jt-choice-sub {
	color: var(--nx-text-2);
	font-size: 0.8125rem;
	margin-top: 1px;
}
.jt-choice-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
	gap: 12px;
}
.jt-choice {
	display: flex;
	flex-direction: column;
	gap: 7px;
	text-align: left;
	padding: 15px 16px;
	background: var(--nx-surface);
	border: 1px solid var(--nx-border);
	border-radius: var(--nx-r-lg);
	cursor: pointer;
	transition: border-color .14s ease, box-shadow .14s ease, background-color .14s ease;
}
.jt-choice:hover {
	border-color: var(--nx-border-strong);
	box-shadow: var(--nx-shadow-md);
}
.jt-choice__top {
	display: flex;
	align-items: center;
	gap: 9px;
}
.jt-choice__icon {
	width: 28px;
	height: 28px;
	flex: 0 0 28px;
	border-radius: var(--nx-r-sm);
	background: var(--nx-surface-2);
	border: 1px solid var(--nx-border);
	color: var(--nx-text-2);
	display: flex;
	align-items: center;
	justify-content: center;
}
.jt-choice__icon svg { width: 15px; height: 15px; }
.jt-choice__name {
	flex: 1 1 auto;
	color: var(--nx-text);
	font-size: 0.875rem;
	font-weight: 600;
	letter-spacing: -0.01em;
}
.jt-choice__check {
	width: 19px;
	height: 19px;
	flex: 0 0 19px;
	border-radius: 50%;
	background: var(--nx-accent);
	color: #fff;
	display: none;
	align-items: center;
	justify-content: center;
}
.jt-choice__check svg { width: 11px; height: 11px; }
.jt-choice__desc {
	color: var(--nx-text-2);
	font-size: 0.8125rem;
	line-height: 1.45;
}
.jt-choice__meta {
	display: inline-flex;
	align-self: flex-start;
	align-items: center;
	height: 21px;
	padding: 0 8px;
	border-radius: var(--nx-r-sm);
	background: var(--nx-surface-2);
	border: 1px solid var(--nx-border);
	color: var(--nx-text-3);
	font-size: 0.6875rem;
	font-weight: 550;
	letter-spacing: 0.02em;
	text-transform: uppercase;
	white-space: nowrap;
}
.jt-choice.is-selected {
	border-color: var(--nx-accent);
	background: #FFFCFA;
	box-shadow: 0 0 0 1px var(--nx-accent) inset;
}
.jt-choice.is-selected .jt-choice__name { color: var(--nx-accent); }
.jt-choice.is-selected .jt-choice__icon {
	background: var(--nx-accent-tint);
	border-color: var(--nx-accent-tint-border);
	color: var(--nx-accent);
}
.jt-choice.is-selected .jt-choice__check { display: flex; }

/* The real selects these cards drive stay in the DOM (and stay
   submitted) but are taken out of the visual flow. */
.jt-choice-driven { display: none !important; }

/* Form rhythm: the Create Job form's label/field rows sat ~26px apart
   with a col-3 label column, which on a fifteen-field form pushed the
   submit button well below the fold. */
#kt_form .form-group.row { margin-bottom: 14px; align-items: center; }
#kt_form .form-group.row > label.col-3 { padding-top: 0; margin-bottom: 0; }

/* Card header with a supporting line under the title (reference's
   "New Shipment / Create Shipment in under 90 seconds" pattern). */
.jt-card-sub {
	color: var(--nx-text-2);
	font-size: 0.8125rem;
	font-weight: 450;
	margin-top: 3px;
	letter-spacing: -0.005em;
}
/* Scoped to the stacked (title + supporting line) variant only. On most
   cards in this app `.card-title` IS the <h3> itself rather than a
   wrapper around one, so making it a column flex container top-aligned
   the heading against the header's 60px box instead of centring it --
   confirmed on screen before this was scoped. */
.card > .card-header .card-title.jt-title-stack {
	flex-direction: column;
	align-items: flex-start;
	justify-content: center;
}
.card > .card-header { align-items: center; }

/* ================================================================
   18. DataTables chrome, continued
   ================================================================ */
/* "Search:" as a real search field with room for an icon, rather than a
   bare label + input pair. The icon is drawn on the label so no markup
   change is needed in the ~20 pages that build these tables. */
.dataTables_filter { margin: 0; }
/* The literal "Search:" text node is removed by
   assets/js/custom/jt-tables.js; this only has to lay out the input and
   place the icon inside it. */
.dataTables_filter label {
	position: relative;
	display: inline-flex;
	align-items: center;
	margin: 0;
}
.dataTables_filter label::before {
	content: "";
	position: absolute;
	left: 11px;
	top: 50%;
	width: 15px;
	height: 15px;
	transform: translateY(-50%);
	background: no-repeat center/15px 15px url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%239AA1AC' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m20 20-3.5-3.5'/%3E%3C/svg%3E");
	pointer-events: none;
	z-index: 1;
}
.dataTables_filter label input[type="search"],
.dataTables_filter input {
	margin: 0 !important;
	width: 268px;
	max-width: 100%;
	height: 38px !important;
	padding: 0 12px 0 32px !important;
	font-size: 0.8125rem !important;
	color: var(--nx-text) !important;
	border-radius: var(--nx-r) !important;
}
.dataTables_filter input::placeholder { color: var(--nx-text-3) !important; }

/* Column headers are labels, not controls. Lists come from the server 15
   rows at a time, so a header click only re-sorted the rows on screen --
   of no use, and misleading. No pointer, no hover change, no arrows, no
   clicks (jt-tables.js also takes them out of the keyboard order). */
.table thead th.sorting,
.table thead th.sorting_asc,
.table thead th.sorting_desc,
.table thead th.sorting_disabled {
	cursor: default !important;
	pointer-events: none;
	padding-right: 0.75rem !important;
}
.table thead th.sorting::before, .table thead th.sorting::after,
.table thead th.sorting_asc::before, .table thead th.sorting_asc::after,
.table thead th.sorting_desc::before, .table thead th.sorting_desc::after {
	display: none !important;
}
/* A header that holds a real control (a select-all checkbox) stays usable. */
.table thead th input, .table thead th label, .table thead th button, .table thead th a { pointer-events: auto; }

/* Empty state: an empty table body was rendering as a bare stretch of
   white with no explanation. */
.table td.dataTables_empty,
.table td.jt-empty {
	padding: 46px 20px !important;
	text-align: center !important;
	color: var(--nx-text-3) !important;
	font-size: 0.875rem !important;
	white-space: normal !important;
}
.dataTables_wrapper .dataTables_paginate { padding-top: 12px; }
.dataTables_wrapper .row { align-items: center; }

/* ================================================================
   19. Focus visibility
   ================================================================
   The theme removes focus outlines broadly. These restore a visible,
   consistent keyboard focus ring on everything interactive, which the
   product needs regardless of how it looks. */
a:focus-visible,
button:focus-visible,
.btn:focus-visible,
.jt-nav__item:focus-visible,
.jt-choice:focus-visible,
.jt-stat:focus-visible,
[tabindex]:focus-visible {
	outline: 2px solid var(--nx-accent) !important;
	outline-offset: 2px !important;
	border-radius: var(--nx-r-sm);
}
#kt_aside a:focus-visible,
.jt-nav__item:focus-visible {
	outline-color: #fff !important;
	outline-offset: -2px !important;
}

/* ================================================================
   20. Stat strip when it wraps
   ================================================================
   Six columns at a 168px floor wrap to a second row below ~1180px. The
   right-hand border of whichever tile lands last in a row would
   otherwise dangle, and the wrapped row needs a top hairline. */
.jt-stats { row-gap: 0; }
.jt-stat {
	border-bottom: 1px solid var(--nx-border);
}
.jt-stats > .jt-stat:last-child { border-right: none; }
@media (min-width: 1181px) {
	.jt-stat { border-bottom: none; }
}

/* ================================================================
   21. Card header geometry + last purple holdouts
   ================================================================ */
/* The theme only makes `.card.card-custom > .card-header` a flex row;
   a plain `.card > .card-header` stays display:block, so vertical
   centring silently did nothing there and the title sat against the top
   of the 60px header (measured -23px off centre on all_client /
   agent_stat / all_transporter). Same geometry for both now. */
.card > .card-header,
.card.card-custom > .card-header {
	display: flex !important;
	align-items: center !important;
	justify-content: space-between;
	flex-wrap: wrap;
	row-gap: 8px;
}
.card > .card-header > .card-title,
.card > .card-header > .card-toolbar { margin: 0 !important; }

/* Remaining old-brand purple (#29156e). These come from
   jt-accent-theme.css (the generated accent layer);
   found by walking computed styles across every page rather than by
   reading that 108KB file. */
.text-primary,
.text-primary i,
i.text-primary,
th.sorting_asc, th.sorting_desc,
.table thead th.sorting_asc, .table thead th.sorting_desc {
	color: var(--nx-accent) !important;
}
th.sorting_asc, th.sorting_desc,
.table thead th.sorting_asc, .table thead th.sorting_desc {
	border-color: var(--nx-border) !important;
}
/* Scroll-to-top button */
.scrolltop {
	background: var(--nx-accent) !important;
	border-radius: var(--nx-r) !important;
	box-shadow: var(--nx-shadow-md) !important;
	width: 36px !important;
	height: 36px !important;
}
.scrolltop:hover { background: var(--nx-accent-hover) !important; }
.scrolltop .svg-icon svg [fill], .scrolltop i { color: #fff !important; fill: #fff !important; }

.bg-primary, .btn.btn-primary.bg-primary { background-color: var(--nx-accent) !important; }
.label.label-primary, .badge-primary { background-color: var(--nx-accent) !important; color: #fff !important; }
.border-primary { border-color: var(--nx-accent) !important; }

/* ================================================================
   22. Analytics charts
   ================================================================
   See assets/js/custom/jt-charts.js and jt_chart_data.php. Replaces the
   axis-less sparklines the dashboards used to draw from the theme's
   hardcoded demo series. */
.jt-chart { position: relative; }
.jt-chart__canvas { margin: 0 -4px; }
.jt-chart__foot {
	display: flex;
	align-items: center;
	gap: 12px;
	flex-wrap: wrap;
	padding-top: 14px;
	margin-top: 10px;
	border-top: 1px solid var(--nx-border);
}
.jt-chart__delta {
	display: inline-flex;
	align-items: center;
	gap: 5px;
	height: 26px;
	padding: 0 10px;
	border-radius: 999px;
	background: var(--nx-surface-2);
	border: 1px solid var(--nx-border);
	color: var(--nx-text-2);
	font-size: 0.75rem;
	font-weight: 550;
	white-space: nowrap;
}
.jt-chart__delta svg { width: 12px; height: 12px; }
.jt-chart__delta.is-up { background: var(--nx-green-tint); border-color: #CDEEDC; color: var(--nx-green); }
.jt-chart__delta.is-down { background: var(--nx-red-tint); border-color: #F7CFD0; color: var(--nx-red); }
.jt-chart__headline {
	margin-left: auto;
	display: flex;
	align-items: baseline;
	gap: 7px;
	color: var(--nx-text);
	font-size: 1.375rem;
	font-weight: 700;
	letter-spacing: -0.03em;
	font-variant-numeric: tabular-nums;
	white-space: nowrap;
}
.jt-chart__headline-sub {
	color: var(--nx-text-2);
	font-size: 0.75rem;
	font-weight: 500;
	letter-spacing: 0;
}
/* An empty chart is the shared empty state (jt-empty-state), centred in
   whatever height its card has -- side-by-side cards stretch to match, so
   it sits in the middle rather than at the top of a blank area. */
.jt-chart.is-empty { flex: 1 1 auto; display: flex; align-items: center; justify-content: center; }
.jt-chart__empty { min-height: 220px; }
.card-body:has(> .jt-chart.is-empty), .card-body:has(> div > .jt-chart.is-empty) { display: flex; flex-direction: column; }
.card-body:has(> div > .jt-chart.is-empty) > div:has(> .jt-chart.is-empty) { flex: 1 1 auto; display: flex; flex-direction: column; }

/* ApexCharts internals */
.apexcharts-legend-text { color: var(--nx-text-2) !important; font-family: 'Inter', sans-serif !important; }
.apexcharts-tooltip.apexcharts-theme-dark {
	background: #14161A !important;
	border: none !important;
	border-radius: var(--nx-r) !important;
	box-shadow: 0 8px 24px rgba(0,0,0,.22) !important;
}
.apexcharts-tooltip.apexcharts-theme-dark .apexcharts-tooltip-title {
	background: rgba(255,255,255,.06) !important;
	border-bottom: 1px solid rgba(255,255,255,.08) !important;
	font-weight: 600 !important;
	font-size: 0.75rem !important;
}
.apexcharts-gridline { stroke: var(--nx-border) !important; }

/* ---- Figure strip ---------------------------------------------------
   The four haulage counters used to sit two-to-a-row in the theme's
   .row/.col markup. In a full-width card that left most of the width
   empty and wrapped every label onto three lines. Four across, one line
   each, with the value leading. */
.jt-figs {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 14px;
	margin-top: 26px;
	padding-top: 22px;
	border-top: 1px solid var(--nx-border);
}
.jt-fig {
	display: flex;
	align-items: center;
	gap: 12px;
	min-width: 0;
}
.jt-fig__icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 42px;
	height: 42px;
	flex: 0 0 42px;
	border-radius: 12px;
	font-size: 17px;
}
.jt-fig__icon i { line-height: 1; }
.jt-fig__icon.is-accent { background: rgba(242, 106, 27, .11); color: var(--nx-accent); }
.jt-fig__icon.is-blue   { background: rgba(46, 107, 230, .11); color: var(--nx-blue, #2E6BE6); }
.jt-fig__icon.is-green  { background: rgba(23, 162, 118, .11); color: #17A276; }
.jt-fig__icon.is-violet { background: rgba(124, 92, 232, .11); color: #7C5CE8; }
.jt-fig__body { min-width: 0; }
.jt-fig__value {
	font-size: 20px;
	font-weight: 700;
	line-height: 1.15;
	color: var(--nx-text-1, #14181F);
	font-variant-numeric: tabular-nums;
}
.jt-fig__label {
	margin-top: 2px;
	font-size: 12px;
	font-weight: 500;
	color: var(--nx-text-2, #6B7280);
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}
@media (max-width: 1399px) { .jt-figs { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 575px)  { .jt-figs { grid-template-columns: 1fr; } }

/* The chart footer sat flush against the bottom edge of its card. */
.card > .card-body > .jt-chart:last-child .jt-chart__foot { padding-bottom: 2px; }
.jt-chart__foot { margin-bottom: 0; }


/* An empty chart should not reserve the space a populated one needs --
   jt-charts.js clears the inline min-height on the container when it
   renders the empty state, and the state itself stays compact. */
.jt-chart.is-empty { min-height: 0 !important; }

/* Tables that render no rows showed a header and then a blank card
   body, which reads as a failed load. jt-tables.js appends this. */
.jt-empty-row td {
	padding: 34px 16px !important;
	text-align: center;
	border-top: 0 !important;
}
.jt-empty-row__title {
	font-size: 0.875rem;
	font-weight: 600;
	color: var(--nx-text-2);
}
.jt-empty-row__sub {
	margin-top: 3px;
	font-size: 0.8125rem;
	font-weight: 400;
	color: var(--nx-text-3);
}

/* ---- Scroll caps ----------------------------------------------------
   Panels that list rows grow without bound as data accumulates: the
   dashboard's attention lists, the client and agent tables, the
   transporter stats. Several pages already capped theirs with an
   inline `max-height: 420px; overflow-y: auto`, which is why the same
   card scrolled on one page and pushed the footer off-screen on
   another. This is that cap as a class, with a scrollbar that does
   not look like a 2009 desktop widget. */
.jt-scroll,
.card > .card-body > [style*="overflow-y"] {
	max-height: 420px;
	overflow-y: auto;
	overscroll-behavior: contain;
	scrollbar-width: thin;
	scrollbar-color: var(--nx-border-strong, #D3D7DE) transparent;
}
.jt-scroll--sm { max-height: 300px; }
.jt-scroll::-webkit-scrollbar,
.card > .card-body > [style*="overflow-y"]::-webkit-scrollbar { width: 8px; height: 8px; }
.jt-scroll::-webkit-scrollbar-track,
.card > .card-body > [style*="overflow-y"]::-webkit-scrollbar-track { background: transparent; }
.jt-scroll::-webkit-scrollbar-thumb,
.card > .card-body > [style*="overflow-y"]::-webkit-scrollbar-thumb {
	background: #D3D7DE;
	border-radius: 8px;
	border: 2px solid transparent;
	background-clip: content-box;
}
.jt-scroll:hover::-webkit-scrollbar-thumb,
.card > .card-body > [style*="overflow-y"]:hover::-webkit-scrollbar-thumb { background: #B9BFC9; background-clip: content-box; }

/* A sticky header keeps the column names in view while the body of a
   capped table scrolls under them. */
.jt-scroll > table > thead th,
.jt-scroll table.table > thead th {
	position: sticky;
	top: 0;
	z-index: 2;
	background: var(--nx-surface);
}

/* ---- Type scale -----------------------------------------------------
   The theme's display sizes (font-size-h1..h3, 22.75px divs) were
   sized for a marketing page, not for figures sitting in a 300px-wide
   card. Brought down one step each so a number reads as a number
   rather than as a headline. */
.content .font-size-h1 { font-size: 24px !important; }
.content .font-size-h2 { font-size: 20px !important; }
.content .font-size-h3 { font-size: 18px !important; }
.content .font-size-h4 { font-size: 16px !important; }
.content .font-size-h5 { font-size: 15px !important; }
.content .font-size-h6 { font-size: 14px !important; }
.content h1 { font-size: 24px !important; }
.content h2 { font-size: 20px !important; }
.content h3:not(.card-title) { font-size: 17px !important; }
.content h4:not(.card-title) { font-size: 15px !important; }
.content h5:not(.card-title) { font-size: 14px !important; }
.content .display-1,
.content .display-2,
.content .display-3,
.content .display-4 { font-size: 28px !important; letter-spacing: -0.03em; }
.jt-tile__value { font-size: 20px !important; }
.jt-fig__value { font-size: 18px; }

/* ---- Vertical rhythm ------------------------------------------------
   The theme sprinkles mb-10/mt-10/py-10 (40px) and stray <br> runs
   between blocks inside cards, which on a dense operations screen
   reads as the layout having come apart. Inside a card body, cap the
   largest steps. */
.card > .card-body .mb-10 { margin-bottom: 1.5rem !important; }
.card > .card-body .mt-10 { margin-top: 1.5rem !important; }
.card > .card-body .my-10 { margin-top: 1.5rem !important; margin-bottom: 1.5rem !important; }
.card > .card-body .py-10 { padding-top: 1.5rem !important; padding-bottom: 1.5rem !important; }
.card > .card-body br + br { display: none; }

/* Every table panel scrolls once it outgrows its card, instead of
   stretching the card until the page footer is pushed off-screen. The
   theme's .table-responsive only ever handled the horizontal axis. */
.card > .card-body .table-responsive {
	max-height: 460px;
	overflow: auto;
	overscroll-behavior: contain;
	scrollbar-width: thin;
	scrollbar-color: #D3D7DE transparent;
}
.card > .card-body .table-responsive > table > thead th,
.card > .card-body .table-responsive > table > thead td {
	position: sticky;
	top: 0;
	z-index: 2;
	background: var(--nx-surface);
	box-shadow: inset 0 -1px 0 var(--nx-border);
}
.card > .card-body .table-responsive::-webkit-scrollbar { width: 8px; height: 8px; }
.card > .card-body .table-responsive::-webkit-scrollbar-track { background: transparent; }
.card > .card-body .table-responsive::-webkit-scrollbar-thumb {
	background: #D3D7DE;
	border-radius: 8px;
	border: 2px solid transparent;
	background-clip: content-box;
}
.card > .card-body .table-responsive:hover::-webkit-scrollbar-thumb { background: #B9BFC9; background-clip: content-box; }

/* ---- Progress cell --------------------------------------------------
   Was: a percentage and the literal word "Progress" pushed to opposite
   ends of a ~90px table column (so the word wrapped under the number),
   with a red bar beneath it at every value -- a job at 96% looked as
   alarming as one at 3%. Now one line: bar, then figure, coloured by
   how far along the job actually is. */
.jt-progress {
	display: flex;
	align-items: center;
	gap: 8px;
	min-width: 96px;
}
.jt-progress__track {
	flex: 1 1 auto;
	height: 6px;
	min-width: 44px;
	border-radius: 999px;
	background: var(--nx-border);
	overflow: hidden;
}
.jt-progress__bar {
	display: block;
	height: 100%;
	border-radius: 999px;
	transition: width .3s ease;
}
.jt-progress__bar.is-low  { background: #E5484D; }
.jt-progress__bar.is-mid  { background: var(--nx-accent); }
.jt-progress__bar.is-high { background: #17A276; }
.jt-progress__value {
	flex: 0 0 auto;
	font-size: 12px;
	font-weight: 600;
	color: var(--nx-text-2);
	font-variant-numeric: tabular-nums;
}

/* ---- DataTables footer ----------------------------------------------
   The length control renders as the bare text "Show", a <select>, then
   "entries". With the select styled to 36px tall and no horizontal
   margin, the box sat on top of the word after it. */
.dataTables_wrapper .dataTables_length {
	display: flex;
	align-items: center;
	gap: 8px;
	white-space: nowrap;
}
.dataTables_wrapper .dataTables_length label {
	display: flex;
	align-items: center;
	gap: 8px;
	margin: 0;
	font-weight: 500;
}
.dataTables_wrapper .dataTables_length select {
	width: auto !important;
	min-width: 62px;
	margin: 0 !important;
	padding-right: 26px;
}
.dataTables_wrapper .dataTables_info {
	padding-top: 12px;
	white-space: nowrap;
}

/* Sort arrows were reading as loud as the column labels themselves. */
.table thead th.sorting::after { opacity: 0.22 !important; font-size: 0.6875rem !important; }
.table thead th.sorting:hover::after { opacity: 0.5 !important; }

/* ---- Horizontal scroll affordance -----------------------------------
   These job tables are 12+ columns wide and always run past the card
   edge, which just looked like the layout was broken. A fade on the
   right edge says the rest is over there. */
.card > .card-body .table-responsive { position: relative; }
.jt-hscroll-shade {
	position: absolute;
	top: 0;
	bottom: 0;
	width: 44px;
	pointer-events: none;
	z-index: 3;
	opacity: 0;
	transition: opacity .18s ease;
}
.jt-hscroll-shade.is-on { opacity: 1; }
.jt-hscroll-shade--right {
	right: 0;
	background: linear-gradient(to right, rgba(255,255,255,0), var(--nx-surface) 85%);
}
.jt-hscroll-shade--left {
	left: 0;
	background: linear-gradient(to left, rgba(255,255,255,0), var(--nx-surface) 85%);
}

/* Page-level header used by the log screens, which print a title and a
   one-line explanation above their table. Was an <h3> carrying an
   inline `color: #29156e` -- the last two places the old brand purple
   survived anywhere in the UI. */
.jt-page-head__title {
	font-size: 17px !important;
	font-weight: 650 !important;
	letter-spacing: -0.015em;
	color: var(--nx-text) !important;
}
.jt-page-head__sub {
	font-size: 13px;
	color: var(--nx-text-2);
	max-width: 78ch;
	line-height: 1.5;
}

/* Six tiles in an auto-fill grid landed as five across plus a lone
   orphan on a second row, and the squeeze wrapped half the labels onto
   two lines so no two tiles were the same height. Three across, twice. */
@media (min-width: 1200px) {
	.jt-tile-grid--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
.jt-tile-grid--3 .jt-tile__label { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

/* ---- Row action buttons ---------------------------------------------
   Flattening the theme's solid .btn-success / .btn-primary / .btn-info
   went one step too far here: the three icon buttons on every job row
   (Update Job, Manage Job, View full job details) all came out as a
   white square with a grey glyph, so they were indistinguishable at a
   glance and only told apart by hovering for the tooltip. Keeps the
   flat surface, puts the meaning back in the glyph. */
.table td .btn.btn-success > i,
.table td .btn.btn-success > i::before { color: #17A276 !important; }
.table td .btn.btn-primary > i,
.table td .btn.btn-primary > i::before { color: var(--nx-accent) !important; }
.table td .btn.btn-info > i,
.table td .btn.btn-info > i::before { color: var(--nx-blue, #2E6BE6) !important; }
.table td .btn.btn-danger > i,
.table td .btn.btn-danger > i::before { color: #E5484D !important; }
.table td .btn.btn-warning > i,
.table td .btn.btn-warning > i::before { color: #C2740B !important; }

.table td .btn.btn-success:hover { background: rgba(23, 162, 118, .10) !important; border-color: rgba(23, 162, 118, .32) !important; }
.table td .btn.btn-primary:hover { background: var(--nx-accent-tint) !important; border-color: var(--nx-accent-tint-border) !important; }
.table td .btn.btn-info:hover    { background: rgba(46, 107, 230, .10) !important; border-color: rgba(46, 107, 230, .32) !important; }
.table td .btn.btn-danger:hover  { background: rgba(229, 72, 77, .10) !important; border-color: rgba(229, 72, 77, .32) !important; }

/* A disabled action must not read as an available one. */
.table td .btn:disabled,
.table td .btn.disabled { opacity: .42 !important; cursor: not-allowed; }

/* ---- Post-clearing handover (N-04) ----------------------------------
   Who dispatched the job to Invoicing, who in Accounts received it, and
   when. Two lines so the names read as a pair and the timestamp stays
   secondary. */
.jt-handover { display: inline-flex; flex-direction: column; gap: 2px; line-height: 1.3; }
.jt-handover__who { font-weight: 600; color: var(--nx-text-1, #14181F); white-space: nowrap; }
.jt-handover__arrow { color: var(--nx-accent); font-weight: 700; margin: 0 2px; }
.jt-handover__when { font-size: 11px; color: var(--nx-text-3, #9AA1AC); font-variant-numeric: tabular-nums; }

/* ---- Row action groups ----------------------------------------------
   Two sibling <form>s in one table cell were carrying `form-inline
   d-inline` together: Bootstrap's .form-inline is display:flex and .d-inline
   is display:inline, and the pair collapsed the buttons on top of each
   other -- "Resend Email" and "Verify Manually" rendered as overlapping
   text on admin/user_approvals. A flex row with a real gap instead, so
   the controls sit apart whatever they contain. */
.jt-row-actions {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px;
	margin: 0;
}
.jt-row-actions > form { margin: 0; }
.jt-row-actions .btn { white-space: nowrap; }
td .jt-row-actions { justify-content: flex-start; }

/* =====================================================================
   TYPOGRAPHY -- one scale for the whole application
   =====================================================================
   The theme's markup applies size and weight per element, and the result
   drifted badly: on admin/user_approvals a table header rendered at
   8.9px/650 while the cell beneath it rendered at 14px/600 -- the label
   smaller than a caption and the data heavier than a heading, in the same
   table. Roughly forty pages carry `font-size-lg` on ordinary table text
   and `font-weight-bolder` on values that are not emphasis.

   Rather than edit forty files, the scale is set here, once. Data is the
   quiet default; only headings and figures carry weight. Sizes are in rem
   so a viewer's own text-size preference still applies.
   --------------------------------------------------------------------- */
:root {
	/* px, not rem: this theme sets its root font-size to 13px, so rem
	   values here computed about 20% smaller than intended -- the "13px"
	   body size rendered at 10.5px. Absolute units keep the scale
	   predictable against a base nobody expects. */
	--jt-fs-micro: 11px;   /* table headers, captions   */
	--jt-fs-small: 12px;   /* helper text, meta         */
	--jt-fs-body:  13px;   /* body and table cells      */
	--jt-fs-lead:  14px;   /* emphasised body           */
	--jt-fs-title: 16px;   /* card titles               */
	--jt-fs-head:  18px;   /* page headings             */
	--jt-lh:       1.55;
}

body,
.card-body,
.form-control,
.btn {
	font-size: var(--jt-fs-body);
	line-height: var(--jt-lh);
}

/* Table headers: readable rather than shrunk to a whisper. */
.table thead th,
.table th {
	font-size: var(--jt-fs-micro) !important;
	font-weight: 600 !important;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	color: var(--nx-text-2, #6B7280) !important;
}

/* Table data: one size, normal weight. This is where `font-size-lg` and
   `font-weight-bolder` were making every cell shout. */
.table td,
.table td span,
.table td div,
.table td a:not(.btn) {
	font-size: var(--jt-fs-body) !important;
	line-height: var(--jt-lh);
}
.table td .font-size-lg,
.table td .font-size-h6,
.table td .font-weight-bolder,
.table td .font-weight-bold {
	font-size: var(--jt-fs-body) !important;
	font-weight: 500 !important;
}
/* The job number stays the one emphasised thing in a row. */
.table td:first-child .font-weight-bolder,
.table td:nth-child(2) .font-weight-bolder {
	font-weight: 600 !important;
	color: var(--nx-text-1, #14181F) !important;
}

/* Headings: a real ladder instead of six near-identical sizes. */
.card > .card-header .card-label,
.card > .card-header .card-title { font-size: var(--jt-fs-title) !important; font-weight: 600 !important; }
h1, .h1 { font-size: 22px; font-weight: 650; }
h2, .h2 { font-size: var(--jt-fs-head); font-weight: 620; }
h3, .h3 { font-size: var(--jt-fs-title); font-weight: 600; }
h4, .h4 { font-size: var(--jt-fs-lead); font-weight: 600; }
h5, .h5,
h6, .h6 { font-size: var(--jt-fs-body); font-weight: 600; }

/* Forms: label quiet, value clear. */
label,
.form-group > label { font-size: var(--jt-fs-small) !important; font-weight: 550 !important; color: var(--nx-text-2, #6B7280); }
.form-text, .text-muted, small, .small { font-size: var(--jt-fs-small) !important; }

/* Stop the theme's utility sizes from reintroducing the drift in ordinary
   page copy. The dashboard figure styles are their own components and are
   deliberately not caught by these. */
.card-body p,
.card-body li,
.card-body .font-size-lg { font-size: var(--jt-fs-body) !important; }
.card-body .font-weight-bolder:not(.jt-stat__value):not(.jt-fig__value):not(.jt-tile__value) { font-weight: 600 !important; }

/* ---- Page doodle -----------------------------------------------------
   A tiled line-art watermark behind the page content -- truck, container,
   box, anchor, pin, checklist. It sits on the page background, never on a
   card, so nothing readable competes with it.

   The opacity goes on the layer carrying the image, not on a near-opaque
   sheet over the top: the first attempt covered a full-strength pattern
   with a 96.5%-opaque panel and the doodles still came through as bright
   orange line art all over the dashboard. At 0.05 it reads as paper
   texture, which is the point. */
.content { position: relative; }
.content::before {
	content: "";
	position: absolute;
	inset: 0;
	background-image: url("../../media/svg/illustrations/logistics-doodle-pattern.svg");
	background-repeat: repeat;
	background-size: 460px 460px;
	background-position: center top;
	opacity: 0.05;
	pointer-events: none;
	z-index: 0;
}
.content > * { position: relative; z-index: 1; }

/* ---- Type: dashboards and lists, one notch down ----------------------
   The scale above is right for forms and prose but still loud on the
   screens that are mostly numbers and rows. These are the two places a
   user spends all day, so they get the quieter end of the scale, and
   Inter's tabular figures so columns of numbers line up. */
:root {
	--jt-fs-micro: 10.5px;
	--jt-fs-small: 11.5px;
	--jt-fs-body:  12.5px;
	--jt-fs-lead:  13.5px;
	--jt-fs-title: 15px;
	--jt-fs-head:  17px;
}

body {
	color: var(--nx-text);
	font-feature-settings: 'cv05' 1, 'cv11' 1, 'ss01' 1;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	letter-spacing: -0.005em;
}

/* Numbers: tabular, so columns and figures do not jitter between rows. */
.table td,
.jt-stat__value,
.jt-fig__value,
.jt-tile__value,
.jt-handover__when,
.apexcharts-text {
	font-variant-numeric: tabular-nums;
	font-feature-settings: 'tnum' 1;
}

/* Dashboard figures: still the loudest thing on the page, just not shouting. */
.jt-stat__value { font-size: 1.5rem !important; letter-spacing: -0.02em; }
.jt-stat__label { font-size: var(--jt-fs-small) !important; }
.jt-tile__value { font-size: 18px !important; }
.jt-fig__value  { font-size: 16px !important; }
.jt-fig__label  { font-size: var(--jt-fs-small) !important; }

/* Cards and lists inherit the softened tone rather than pure black. */
.card > .card-header .card-label,
.card > .card-header .card-title,
.table td .font-weight-bolder,
h1, h2, h3, h4, h5, h6 { color: var(--nx-text) !important; }

/* =====================================================================
   ACCOUNT PANEL  (jt_user_panel.php)
   =====================================================================
   Density matters more than anything else here. The first pass sized every
   element sensibly on its own and the panel still read as loose, because
   the gaps between blocks were doing nothing: a 17px name, generous
   margins on three stacked lines, a three-line paragraph, then tall role
   rows. Tightened as a whole -- one rhythm, smaller steps, and the copy
   cut to a single line so the roles start near the top of the panel.
   --------------------------------------------------------------------- */
.jt-account {
	width: 380px !important;
	max-width: 92vw;
	padding: 0 !important;
	background: var(--nx-surface) !important;
	display: flex;
	flex-direction: column;
	/* The theme parks its offcanvas off-screen with a right offset equal to
	   its own width; widening it without moving that offset left a strip of
	   the panel visible against the right edge of every page. Tied together
	   so they cannot drift apart again. */
	right: -380px !important;
	transition: right .28s ease;
}
.jt-account.offcanvas-on { right: 0 !important; }

.jt-account__head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: 14px 18px;
	border-bottom: 1px solid var(--nx-border);
	flex: 0 0 auto;
}
.jt-account__heading { margin: 0; font-size: var(--jt-fs-lead); font-weight: 650; color: var(--nx-text); }
.jt-account__close {
	width: 28px; height: 28px;
	display: inline-flex; align-items: center; justify-content: center;
	border: 1px solid var(--nx-border);
	border-radius: var(--nx-r);
	background: var(--nx-surface);
	color: var(--nx-text-3);
	cursor: pointer;
	transition: border-color .14s ease, color .14s ease;
}
.jt-account__close:hover { border-color: var(--nx-accent-tint-border); color: var(--nx-accent); }
.jt-account__close svg { width: 13px; height: 13px; }

.jt-account__body { padding: 16px 18px 20px; overflow-y: auto; flex: 1 1 auto; }

/* Identity. Three left-aligned lines floating above two wide buttons had
   no shape to them -- nothing said "this is who you are" as a unit. Given
   its own tinted panel, with the name and role sharing a baseline so the
   block is two lines instead of three, and the email marked as an email. */
.jt-account__identity {
	display: block;
	padding: 12px 14px;
	background: var(--nx-surface-2);
	border: 1px solid var(--nx-border);
	border-radius: var(--nx-r-lg);
}
.jt-account__line {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 8px;
}
.jt-account__name {
	font-size: var(--jt-fs-lead);
	font-weight: 650;
	color: var(--nx-text);
	line-height: 1.25;
	letter-spacing: -0.01em;
}
.jt-account__role {
	display: inline-block;
	padding: 2px 8px;
	border-radius: 999px;
	background: var(--nx-accent-tint);
	color: var(--nx-accent);
	font-size: 10px;
	font-weight: 650;
	letter-spacing: .03em;
	text-transform: uppercase;
	line-height: 1.6;
	white-space: nowrap;
}
.jt-account__email {
	display: flex;
	align-items: center;
	gap: 6px;
	margin-top: 6px;
	font-size: var(--jt-fs-small);
	color: var(--nx-text-2);
	min-width: 0;
}
.jt-account__email svg { width: 13px; height: 13px; flex: 0 0 13px; color: var(--nx-text-3); }
.jt-account__email span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.jt-account__email:hover { color: var(--nx-accent); }
.jt-account__email:hover svg { color: var(--nx-accent); }

.jt-account__actions {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 8px;
	margin-top: 10px;
}
.jt-account__btn {
	display: inline-flex; align-items: center; justify-content: center; gap: 6px;
	padding: 7px 10px;
	border: 1px solid var(--nx-border);
	border-radius: var(--nx-r);
	background: var(--nx-surface);
	color: var(--nx-text) !important;
	font-size: var(--jt-fs-small);
	font-weight: 550;
	transition: border-color .14s ease, background .14s ease, color .14s ease;
}
.jt-account__btn:hover { border-color: var(--nx-accent-tint-border); background: var(--nx-accent-tint); color: var(--nx-accent) !important; }
.jt-account__btn-icon svg { width: 14px; height: 14px; display: block; }
.jt-account__btn--quiet:hover { border-color: rgba(229,72,77,.32); background: rgba(229,72,77,.08); color: #E5484D !important; }

/* Section */
.jt-account__section { margin-top: 18px; padding-top: 16px; border-top: 1px solid var(--nx-border); }
.jt-account__section-title {
	font-size: var(--jt-fs-micro);
	font-weight: 650;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--nx-text-3);
}
.jt-account__section-note {
	margin: 5px 0 12px;
	font-size: var(--jt-fs-small);
	line-height: 1.5;
	color: var(--nx-text-2);
}

/* The "you are not yourself right now" banner. Still the loudest thing
   here -- acting on the wrong role's screens without noticing is the
   failure this feature can cause -- but no longer the tallest. */
.jt-viewing {
	display: flex; align-items: center; gap: 9px;
	padding: 9px 11px;
	margin-bottom: 12px;
	border: 1px solid rgba(224,144,10,.34);
	background: rgba(224,144,10,.09);
	border-radius: var(--nx-r);
}
.jt-viewing__pulse {
	width: 7px; height: 7px; flex: 0 0 7px;
	border-radius: 50%;
	background: #E0900A;
	box-shadow: 0 0 0 0 rgba(224,144,10,.55);
	animation: jt-viewing-pulse 2.2s ease-out infinite;
}
@keyframes jt-viewing-pulse {
	70%  { box-shadow: 0 0 0 6px rgba(224,144,10,0); }
	100% { box-shadow: 0 0 0 0 rgba(224,144,10,0); }
}
@media (prefers-reduced-motion: reduce) { .jt-viewing__pulse { animation: none; } }
.jt-viewing__text { display: flex; flex-direction: column; min-width: 0; flex: 1 1 auto; line-height: 1.35; }
.jt-viewing__label { font-size: 9.5px; color: #8A6206; letter-spacing: .05em; text-transform: uppercase; font-weight: 650; }
.jt-viewing__role { font-size: var(--jt-fs-small); font-weight: 650; color: #6B4C05; }
.jt-viewing__form { margin: 0; }
.jt-viewing__exit {
	border: 1px solid rgba(224,144,10,.45);
	background: #fff;
	color: #8A6206;
	font-size: var(--jt-fs-micro);
	font-weight: 600;
	padding: 5px 9px;
	border-radius: var(--nx-r);
	cursor: pointer;
	white-space: nowrap;
}
.jt-viewing__exit:hover { background: #E0900A; border-color: #E0900A; color: #fff; }

/* Role list: compact rows, one click each. */
.jt-roles { display: flex; flex-direction: column; gap: 5px; }
.jt-roles__form { margin: 0; }
.jt-role {
	width: 100%;
	display: flex; align-items: center; gap: 10px;
	padding: 7px 10px;
	border: 1px solid var(--nx-border);
	border-radius: var(--nx-r);
	background: var(--nx-surface);
	text-align: left;
	cursor: pointer;
	transition: border-color .14s ease, background .14s ease;
}
.jt-role:hover:not(:disabled) { border-color: var(--nx-accent-tint-border); background: var(--nx-accent-tint); }
.jt-role:disabled { cursor: default; opacity: 1; background: var(--nx-surface-2); }
.jt-role__icon {
	width: 26px; height: 26px; flex: 0 0 26px;
	display: inline-flex; align-items: center; justify-content: center;
	border-radius: 7px;
	background: var(--nx-accent-tint);
	color: var(--nx-accent);
}
.jt-role__icon svg { width: 14px; height: 14px; }
.jt-role:disabled .jt-role__icon { background: var(--nx-border); color: var(--nx-text-3); }
.jt-role__text { display: flex; flex-direction: column; min-width: 0; flex: 1 1 auto; line-height: 1.3; }
.jt-role__name { font-size: var(--jt-fs-small); font-weight: 600; color: var(--nx-text); }
.jt-role__blurb { font-size: 10px; color: var(--nx-text-3); line-height: 1.4; }
.jt-role__state {
	font-size: 9.5px;
	font-weight: 650;
	color: var(--nx-accent);
	text-transform: uppercase;
	letter-spacing: .05em;
	white-space: nowrap;
}

@media (max-width: 480px) {
	.jt-account { width: 100% !important; right: -100% !important; }
	.jt-account__actions { grid-template-columns: 1fr; }
}

/* ---- Topbar: user cluster + view-as pill -----------------------------
   The right-hand cluster was cramped -- the icons, avatar, name and caret
   sat almost touching with no rhythm between them. */
.topbar { display: flex; align-items: center; gap: 6px; }
/* The chip's own wrapper is what was pinned, not the chip. */
.topbar-item:has(.jt-user-chip) { width: auto !important; flex: 0 0 auto; }

.jt-user-chip {
	/* The markup carries Metronic's .btn-icon, which pins a square 36px box.
	   The avatar fitted; the name and caret spilled outside it and collided
	   with whatever sat to the left. */
	width: auto !important;
	height: auto !important;
	min-width: 0 !important;
	gap: 9px;
	padding: 4px 8px 4px 4px !important;
	border-radius: 999px !important;
	margin-left: 4px;
	transition: background .14s ease;
}
.jt-user-chip:hover { background: var(--nx-surface-2) !important; }
.jt-user-chip .jt-user-name {
	font-size: var(--jt-fs-body);
	font-weight: 550;
	color: var(--nx-text);
	line-height: 1;
}
.jt-user-chip .jt-user-caret { display: inline-flex; color: var(--nx-text-3); }
.jt-user-chip .jt-user-caret svg { width: 14px; height: 14px; display: block; }
.jt-top-icon + .jt-top-icon { margin-left: 2px; }

/* The persistent "you are someone else right now" pill. Amber, because it
   is a state to leave, not an error and not a success. */
.jt-viewas-pill {
	display: inline-flex; align-items: center; gap: 6px;
	padding: 3px 10px;
	border: 1px solid rgba(224,144,10,.38);
	background: rgba(224,144,10,.1);
	border-radius: 999px;
	color: #8A6206;
	cursor: default;
}
.jt-viewas-pill__dot {
	width: 6px; height: 6px; border-radius: 50%;
	background: #E0900A; flex: 0 0 6px;
}
.jt-viewas-pill__text { font-size: var(--jt-fs-micro); white-space: nowrap; line-height: 1.6; }
.jt-viewas-pill__text strong { font-weight: 650; }
@media (max-width: 860px) {
	.jt-viewas-pill__text { display: none; }
	.jt-viewas-pill { padding: 5px 8px; }
}

/* =====================================================================
   MOBILE  (below 992px)
   =====================================================================
   The desktop shell is a fixed sidebar plus a fixed header offset by its
   width. Below 992px the sidebar becomes a drawer, so every one of those
   offsets has to be unwound -- the previous rules left a header indented
   by a sidebar that was no longer there, and a large dead band under the
   bar where the desktop header's height was still being reserved.
   --------------------------------------------------------------------- */
.jt-mobile-bar {
	display: none;
	align-items: center;
	gap: 10px;
	height: 56px;
	padding: 0 12px;
	background: var(--nx-side, #000) !important;
	border-bottom: 1px solid rgba(255,255,255,.08);
}
.jt-mobile-burger,
.jt-mobile-search,
.jt-mobile-user {
	width: 36px; height: 36px;
	display: inline-flex; align-items: center; justify-content: center;
	border: none; background: transparent; padding: 0;
	border-radius: var(--nx-r);
	color: rgba(255,255,255,.82);
	cursor: pointer;
	flex: 0 0 auto;
}
.jt-mobile-burger:active,
.jt-mobile-search:active { background: rgba(255,255,255,.1); }
.jt-mobile-burger svg,
.jt-mobile-search svg { width: 20px; height: 20px; }
.jt-mobile-brand {
	display: inline-flex; align-items: center; gap: 9px;
	flex: 1 1 auto; min-width: 0;
	text-decoration: none !important;
}
.jt-mobile-brand .jt-brand-name { color: #fff; font-size: var(--jt-fs-lead); font-weight: 650; letter-spacing: -0.01em; }
.jt-mobile-user__avatar {
	width: 30px; height: 30px; border-radius: 50%;
	background-size: cover; background-position: center;
	display: inline-flex; align-items: center; justify-content: center;
}
.jt-mobile-user__avatar--initial { background: var(--nx-accent); color: #fff; font-size: 13px; font-weight: 650; }

@media (max-width: 991.98px) {
	.jt-mobile-bar { display: flex !important; }

	/* Unwind every desktop offset. */
	.header.header-fixed,
	.aside-enabled .header.header-fixed { left: 0 !important; right: 0 !important; }
	/* The subheader is fixed on desktop, sitting under a fixed header. With
	   the header hidden here there is nothing to sit under, and leaving it
	   fixed both reserved a band of empty page above it and let the content
	   scroll underneath it. Put it back in the flow. */
	.header-fixed.subheader-fixed .subheader,
	.subheader {
		position: static !important;
		left: auto !important; right: auto !important; top: auto !important;
		height: auto !important;
		padding-top: 12px !important;
		padding-bottom: 12px !important;
	}
	/* Specificity matters here: the desktop offset is set on
	   two selectors, one of which adds .subheader-enabled for a third class.
	   A two-class rule loses to it however late it appears and however many
	   !importants it carries, so both are matched here. Only the mobile bar
	   is fixed, so its height is the only offset the page needs. */
	.header-fixed.subheader-fixed.subheader-enabled .wrapper,
	.header-fixed.subheader-fixed .wrapper,
	body .wrapper { padding-top: 56px !important; padding-left: 0 !important; }

	/* Bug fix: this comment used to claim the desktop search/topbar row
	   was redundant beside the mobile bar because "the same search lives
	   on every list", it does not, most list pages have no job search
	   at all, so hiding #kt_header here left phones with no way to reach
	   it. header_mobile.php's .jt-mobile-search icon is the replacement;
	   the account panel is still one tap away on the bar itself. */
	#kt_header { display: none !important; }

	.content { padding-top: 0 !important; }

	/* Sidebar becomes a drawer. */
	.jt-aside {
		position: fixed !important;
		top: 0; bottom: 0; left: 0;
		z-index: 1001;
		transform: translateX(-100%);
		transition: transform .28s ease;
		width: 268px !important;
	}
	.aside-on .jt-aside,
	.jt-aside.aside-on { transform: translateX(0); }

	/* Give the page breathing room without the desktop gutters. */
	.container, .container-fluid { padding-left: 14px !important; padding-right: 14px !important; }
	.card { border-radius: var(--nx-r-lg); }
	.subheader { padding-left: 14px !important; padding-right: 14px !important; }

	/* Stat strip: two up reads far better than six squeezed. */
	.jt-stat-strip { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
	.jt-tile-grid { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
	.jt-figs { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }

	/* Subheader actions wrap instead of colliding with the breadcrumb. */
	.subheader .d-flex { flex-wrap: wrap; gap: 8px; }

	/* Bug fix: create_job.php's title/Cancel header (.card-sticky) is
	   Metronic's own KTCardSticky widget, which switches the header to
	   position:fixed on scroll (style.bundle.css's `.card-sticky-on
	   .card.card-custom.card-sticky > .card-header`), with its own `top`
	   offset computed in JS from the desktop header's real height. Below
	   992px that header is hidden entirely (#kt_header { display: none }
	   above) and replaced by the 56px .jt-mobile-bar, which the widget
	   knows nothing about, so the fixed header lands at the wrong offset
	   and scrolled-past form fields show through above and below it,
	   confirmed on screen, scrolling create_job on a 390px viewport. Same
	   fix as every other desktop-only fixed position already unwound in
	   this block: switch it back to a normal, in-flow header on phones,
	   so it scrolls away with the rest of the card instead of floating. */
	.card-sticky-on .card.card-custom.card-sticky > .card-header,
	.card.card-custom.card-sticky > .card-header {
		position: static !important;
		box-shadow: none !important;
	}
}

@media (max-width: 575.98px) {
	.jt-stat-strip,
	.jt-tile-grid,
	.jt-figs { grid-template-columns: 1fr !important; }
	.jt-mobile-brand .jt-brand-name { font-size: var(--jt-fs-body); }
	.container, .container-fluid { padding-left: 12px !important; padding-right: 12px !important; }
}

/* =====================================================================
   PAGINATION
   =====================================================================
   Every page number rendered as a solid accent block, so a row of pages
   read as four "current" buttons and there was no way to see which page
   you were actually on. Only the current page is filled now; the rest are
   quiet until hovered, and the arrows are separated from the numbers so
   the group has a direction to it.
   --------------------------------------------------------------------- */
.dataTables_wrapper .dataTables_paginate {
	padding-top: 14px;
	display: flex;
	justify-content: flex-end;
}
.dataTables_paginate .pagination {
	display: inline-flex;
	align-items: center;
	gap: 3px;
	margin: 0;
	padding: 3px;
	background: var(--nx-surface-2);
	border: 1px solid var(--nx-border);
	border-radius: 999px;
}
.dataTables_paginate .pagination .page-item { margin: 0; }
.dataTables_paginate .pagination .page-link,
.dataTables_paginate .pagination .paginate_button .page-link {
	min-width: 28px;
	height: 28px;
	padding: 0 9px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	border: none !important;
	border-radius: 999px !important;
	background: transparent !important;
	color: var(--nx-text-2) !important;
	font-size: var(--jt-fs-small);
	font-weight: 550;
	line-height: 1;
	font-variant-numeric: tabular-nums;
	transition: background .14s ease, color .14s ease;
	box-shadow: none !important;
}
.dataTables_paginate .pagination .page-item:not(.active):not(.disabled) .page-link:hover {
	background: var(--nx-surface) !important;
	color: var(--nx-text) !important;
}
/* The one filled thing on the row: where you are. */
.dataTables_paginate .pagination .page-item.active .page-link {
	background: var(--nx-accent) !important;
	color: #fff !important;
	font-weight: 650;
	box-shadow: 0 1px 2px rgba(242,106,27,.35) !important;
}
.dataTables_paginate .pagination .page-item.disabled .page-link {
	color: var(--nx-text-3) !important;
	opacity: .55;
	cursor: not-allowed;
}
/* Arrows: same size, set slightly apart from the numbers. */
.dataTables_paginate .pagination .page-item.previous { margin-right: 3px; }
.dataTables_paginate .pagination .page-item.next { margin-left: 3px; }
.dataTables_paginate .pagination .page-item.previous .page-link,
.dataTables_paginate .pagination .page-item.next .page-link { padding: 0; min-width: 28px; }
.dataTables_paginate .pagination .page-link i { font-size: 11px; line-height: 1; }

/* "Showing 1 to 10 of 79" and the rows-per-page select share the footer. */
.dataTables_wrapper .dataTables_info {
	padding-top: 18px;
	font-size: var(--jt-fs-small);
	color: var(--nx-text-2);
}
.dataTables_wrapper .dataTables_length label { font-size: var(--jt-fs-small); color: var(--nx-text-2); }

@media (max-width: 575.98px) {
	.dataTables_wrapper .dataTables_paginate { justify-content: center; padding-top: 10px; }
	.dataTables_wrapper .dataTables_info { text-align: center; padding-top: 10px; }
}

/* Backdrop for the account panel when it is opened from the mobile bar --
   the theme only creates one for its own offcanvas triggers. */
.jt-quick-user-overlay {
	position: fixed;
	inset: 0;
	background: rgba(20, 22, 26, .45);
	z-index: 1000;
}

@media (max-width: 767.98px) {
	/* The DataTables toolbar puts the filter and the page's own buttons on
	   one row. At phone widths they overlap: the search box shrinks to a
	   sliver and Export CSV sits on top of it. Stack them. */
	.dataTables_wrapper .row:first-child > [class*="col-"] {
		width: 100% !important;
		max-width: 100% !important;
		flex: 0 0 100% !important;
	}
	.dataTables_wrapper .dataTables_filter { float: none !important; text-align: left !important; }
	.dataTables_wrapper .dataTables_filter label,
	.dataTables_wrapper .dataTables_filter input { width: 100% !important; }
	.dataTables_wrapper .dt-buttons,
	.dataTables_wrapper .dataTables_length {
		float: none !important;
		margin-top: 8px;
		display: flex;
		justify-content: flex-start;
	}
	.dataTables_wrapper .dt-buttons .btn { width: 100%; justify-content: center; }

	/* Card headers with an action on the right wrap instead of squeezing. */
	.card > .card-header {
		flex-wrap: wrap !important;
		gap: 10px;
		padding-top: 14px !important;
		padding-bottom: 14px !important;
	}
	.card > .card-header .card-toolbar { width: 100%; }
	.card > .card-header .card-toolbar .btn { width: 100%; justify-content: center; }
}

/* jt-multi-value: the chip-entry widget replacing the never-actually-working
   Tagify inputs (see assets/js/custom/jt-multi-value.js for the full story). */
.jt-multi-value {
	border: 1px solid #E4E6EF;
	border-radius: 0.42rem;
	padding: 6px 8px;
	background: #fff;
}
.jt-multi-value__chips {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
	margin-bottom: 6px;
}
.jt-multi-value__chips:empty {
	display: none;
}
.jt-multi-value__chip {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	background: #F3F6F9;
	color: #3F4254;
	border-radius: 0.42rem;
	padding: 3px 8px;
	font-size: 0.95rem;
}
.jt-multi-value__remove {
	border: none;
	background: transparent;
	color: #B5B5C3;
	font-size: 1rem;
	line-height: 1;
	cursor: pointer;
	padding: 0;
}
.jt-multi-value__remove:hover {
	color: #F64E60;
}
.jt-multi-value__entry {
	border: none;
	padding: 4px 2px;
}
.jt-multi-value__entry:focus {
	outline: none;
	box-shadow: none;
}

/* jt-lineitems: the container-number/quantity/weight repeater replacing the
   three disconnected free-text lists (see jt-container-lineitems.js). */
.jt-lineitems {
	margin-top: 6px;
}
.jt-lineitems__head {
	display: grid;
	grid-template-columns: 1fr 1fr 1fr 40px;
	gap: 10px;
	padding: 0 6px 6px;
}
.jt-lineitems__head-col {
	font-size: 0.8rem;
	font-weight: 600;
	color: #B5B5C3;
	text-transform: uppercase;
	letter-spacing: 0.03em;
}
.jt-lineitems__rows {
	display: flex;
	flex-direction: column;
	gap: 8px;
}
.jt-lineitems__row {
	display: grid;
	grid-template-columns: 1fr 1fr 1fr 40px;
	gap: 10px;
	align-items: center;
	background: #F8F9FB;
	border: 1px solid #EBEDF3;
	border-radius: 0.62rem;
	padding: 6px;
	transition: border-color 0.15s ease, background 0.15s ease;
}
.jt-lineitems__row:focus-within {
	border-color: #F1650F;
	background: #fff;
}
.jt-lineitems__field {
	border: 1px solid transparent;
	background: #fff;
}
.jt-lineitems__remove {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 32px;
	height: 32px;
	margin: 0 auto;
	border: none;
	border-radius: 50%;
	background: transparent;
	color: #B5B5C3;
	cursor: pointer;
	transition: background 0.15s ease, color 0.15s ease;
}
.jt-lineitems__remove:hover {
	background: #FFF5F8;
	color: #F64E60;
}
.jt-lineitems__add {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	margin-top: 10px;
	padding: 8px 16px;
	border: 1px dashed #D6D9E0;
	border-radius: 0.62rem;
	background: transparent;
	color: #F1650F;
	font-weight: 600;
	font-size: 0.95rem;
	cursor: pointer;
	transition: border-color 0.15s ease, background 0.15s ease;
}
.jt-lineitems__add:hover {
	border-color: #F1650F;
	background: #FFF8F3;
}
@media (max-width: 576px) {
	.jt-lineitems__head { display: none; }
	.jt-lineitems__row {
		grid-template-columns: 1fr;
		position: relative;
		padding-right: 44px;
	}
	.jt-lineitems__remove { position: absolute; top: 6px; right: 6px; }
}

/* jt-container-list: read-only per-container number/qty/weight list on the
   Preclearing consignments table -- companion to jt-lineitems' create-form
   rows, same grouping idea, styled to read (not to be edited). */
.jt-container-list {
	display: flex;
	flex-direction: column;
	gap: 4px;
	min-width: 220px;
}
.jt-container-list__head {
	display: grid;
	grid-template-columns: 1.4fr 0.8fr 0.8fr;
	gap: 8px;
	padding: 0 8px;
	font-size: 0.7rem;
	font-weight: 650;
	letter-spacing: 0.05em;
	text-transform: uppercase;
	color: #B5B5C3;
}
.jt-container-list__row {
	display: grid;
	grid-template-columns: 1.4fr 0.8fr 0.8fr;
	gap: 8px;
	padding: 6px 8px;
	border-radius: 0.42rem;
	font-size: 0.95rem;
	color: #3F4254;
}
.jt-container-list__row:nth-child(even) {
	background: #F8F9FB;
}
.jt-container-list__number {
	font-weight: 600;
	font-variant-numeric: tabular-nums;
}

/* ================================================================
   40. Unified list toolbar + advanced-search drawer
   ================================================================
   Every DataTable gets the same toolbar, built by
   assets/js/custom/jt-tables.js from the controls DataTables already
   made (so each page keeps its own search and export behaviour):

     [filter]  [ search ......... 70% ]            [Excel] [CSV]

   The filter button only appears where the page has advanced filters
   (marked data-jt-advanced-search); it opens them in a drawer from the
   right. DataTables' "Show N entries" is gone everywhere: lists are
   paged by the server, 15 rows at a time. */
.dataTables_length { display: none !important; }

.jt-toolbar {
	display: flex;
	align-items: center;
	gap: 10px;
	flex-wrap: wrap;
	margin: 0 0 18px;
}
.jt-toolbar__search { flex: 0 1 70%; min-width: 240px; }
.jt-toolbar__search .dataTables_filter,
.jt-toolbar__search .dataTables_filter label { display: block; width: 100%; margin: 0; }
.jt-toolbar__search .dataTables_filter label::before { left: 16px; }
.jt-toolbar .jt-toolbar__search .dataTables_filter input,
.jt-toolbar .jt-toolbar__search .dataTables_filter input.form-control {
	width: 100% !important;
	height: 44px !important;
	padding: 0 18px 0 42px !important;
	border-radius: 999px !important;
	border: 1px solid var(--nx-border) !important;
	background: var(--nx-surface-2) !important;
	font-size: 0.875rem !important;
	transition: border-color .15s ease, box-shadow .15s ease, background .15s ease;
}
.jt-toolbar .jt-toolbar__search .dataTables_filter input:hover { border-color: var(--nx-border-strong) !important; }
.jt-toolbar .jt-toolbar__search .dataTables_filter input:focus {
	outline: none;
	background: var(--nx-surface) !important;
	border-color: var(--nx-accent) !important;
	box-shadow: 0 0 0 4px var(--nx-accent-tint) !important;
}

.jt-toolbar__filter {
	flex: 0 0 auto;
	width: 44px;
	height: 44px;
	border-radius: 999px;
	border: 1px solid var(--nx-border);
	background: var(--nx-surface);
	color: var(--nx-text-2);
	display: inline-flex;
	align-items: center;
	justify-content: center;
	cursor: pointer;
	position: relative;
	transition: border-color .15s ease, color .15s ease, background .15s ease, box-shadow .15s ease;
}
.jt-toolbar__filter svg { width: 18px; height: 18px; }
.jt-toolbar__filter:hover,
.jt-toolbar__filter[aria-expanded="true"] {
	border-color: var(--nx-accent);
	color: var(--nx-accent);
	background: var(--nx-accent-tint);
}
.jt-toolbar__filter:focus-visible { outline: none; box-shadow: 0 0 0 4px var(--nx-accent-tint); }

.jt-toolbar__exports { margin-left: auto; display: flex; gap: 8px; flex-wrap: wrap; }
.jt-toolbar__exports .dt-buttons { display: flex; gap: 8px; margin: 0; float: none; }
.jt-toolbar__exports .dt-buttons .btn,
.jt-toolbar__exports .btn {
	height: 44px;
	margin: 0 !important;
	padding: 0 18px;
	border-radius: 999px !important;
	border: 1px solid var(--nx-border) !important;
	background: var(--nx-surface) !important;
	color: var(--nx-text) !important;
	font-size: 0.8125rem;
	font-weight: 600;
	display: inline-flex;
	align-items: center;
	gap: 8px;
	box-shadow: var(--nx-shadow);
	transition: border-color .15s ease, background .15s ease, color .15s ease;
}
.jt-toolbar__exports .btn i { color: var(--nx-accent) !important; margin: 0 !important; }
.jt-toolbar__exports .btn:hover {
	border-color: var(--nx-accent-tint-border) !important;
	background: var(--nx-accent-tint) !important;
	color: var(--nx-accent-press) !important;
}

@media (max-width: 767.98px) {
	.jt-toolbar__search { flex: 1 1 calc(100% - 54px); }
	.jt-toolbar__exports { margin-left: 0; width: 100%; }
	.jt-toolbar__exports .dt-buttons { width: 100%; }
	.jt-toolbar__exports .btn { flex: 1 1 0; justify-content: center; }
}

/* Drawer: slides in from the right over a dimmed page. */
.jt-drawer { position: fixed; inset: 0; z-index: 1060; visibility: hidden; pointer-events: none; }
.jt-drawer.is-open { visibility: visible; pointer-events: auto; }
.jt-drawer__backdrop {
	position: absolute; inset: 0;
	background: rgba(16, 24, 40, 0.38);
	opacity: 0; transition: opacity .22s ease;
}
.jt-drawer.is-open .jt-drawer__backdrop { opacity: 1; }
.jt-drawer__panel {
	position: absolute; top: 0; right: 0; height: 100%;
	width: min(460px, 100%);
	background: var(--nx-surface);
	box-shadow: -12px 0 40px rgba(16, 24, 40, 0.16);
	display: flex; flex-direction: column;
	transform: translateX(100%);
	transition: transform .26s cubic-bezier(.2, .8, .2, 1);
}
.jt-drawer.is-open .jt-drawer__panel { transform: none; }
.jt-drawer__head {
	display: flex; align-items: center; justify-content: space-between;
	padding: 20px 24px;
	border-bottom: 1px solid var(--nx-border);
}
.jt-drawer__title { margin: 0; font-size: 1.05rem; font-weight: 700; color: var(--nx-text); }
.jt-drawer__sub { margin: 2px 0 0; font-size: 0.8125rem; color: var(--nx-text-3); }
.jt-drawer__close {
	width: 36px; height: 36px; border-radius: 999px;
	border: 1px solid var(--nx-border); background: var(--nx-surface);
	color: var(--nx-text-2); display: inline-flex; align-items: center; justify-content: center;
	cursor: pointer;
}
.jt-drawer__close:hover { color: var(--nx-accent); border-color: var(--nx-accent); }
.jt-drawer__body { flex: 1 1 auto; overflow-y: auto; padding: 22px 24px 28px; }
/* Calendars opened from the drawer sit above it. */
body.jt-drawer-open .datepicker-dropdown { z-index: 1075 !important; }
/* The page's own filter grid, stacked for the narrow panel. */
.jt-drawer__body .row { margin-left: 0; margin-right: 0; }
.jt-drawer__body .row > [class*="col-"] { flex: 0 0 100%; max-width: 100%; padding-left: 0; padding-right: 0; margin-bottom: 14px !important; }
.jt-drawer__body br { display: none; }
.jt-drawer__body .form-control,
.jt-drawer__body .bootstrap-select > .dropdown-toggle { border-radius: var(--nx-r) !important; min-height: 42px; }
.jt-drawer__body .btn { border-radius: 999px !important; height: 42px; padding: 0 20px; }
body.jt-drawer-open { overflow: hidden; }
.jt-drawer__body [type="submit"] { width: 100%; justify-content: center; margin-top: 6px; }
/* Filters in force: a dot on the filter button. */
.jt-toolbar__filter.is-active::after {
	content: ""; position: absolute; top: 9px; right: 9px;
	width: 8px; height: 8px; border-radius: 50%;
	background: var(--nx-accent); box-shadow: 0 0 0 2px var(--nx-surface);
}
/* Inline and multi-column filter forms, stacked in the drawer. */
.jt-drawer__body .form-inline { display: block; }
.jt-drawer__body .form-inline > *,
.jt-drawer__body .form-inline .form-group { display: block; width: 100%; margin: 0 0 14px !important; }
.jt-drawer__body .form-inline .form-control,
.jt-drawer__body input[type="date"],
.jt-drawer__body select.form-control { width: 100% !important; display: block; }
.jt-drawer__body label { display: block; margin-bottom: 6px; font-size: 0.8125rem; font-weight: 600; color: var(--nx-text-2); }
.jt-drawer__body .btn + .btn,
.jt-drawer__body a.btn { margin-top: 8px; }
.jt-drawer__body a.btn { display: inline-flex; align-items: center; justify-content: center; width: 100%; }
/* Dashboard widgets: the same export pair, sized for a card header. */
.card-toolbar .jt-widget-exports { margin: 0 8px 0 0; }
.card-toolbar .jt-widget-exports .btn { height: 34px; padding: 0 14px; font-size: 0.75rem; box-shadow: none; }
/* Exporting widget cards with a long title: the header wraps onto two
   lines inside the card instead of pushing the title over its edge. */
.card.card-custom[data-jt-export] > .card-header,
.card[data-jt-export] > .card-header { flex-wrap: wrap; height: auto; min-height: 70px; row-gap: 12px; padding-top: 18px !important; padding-bottom: 16px !important; align-items: center; }
.card[data-jt-export] > .card-header .card-title { margin: 0; }

/* G-49: a wide editing table whose last column is its Save button (Update
   Haulage, Stage 1): that column stays pinned at the right edge of the
   table's own scroll box, so Save is always on screen. */
.table.jt-sticky-last thead th:last-child,
.table.jt-sticky-last tbody td:last-child {
	position: sticky;
	right: 0;
	z-index: 2;
	background: var(--nx-surface);
	box-shadow: -10px 0 14px -10px rgba(16, 24, 40, 0.18);
}
.table.jt-sticky-last thead th:last-child { z-index: 3; }

/* A recorded ATA a non-admin cannot change (update_preclear.php, data-locked):
   it looked like every other date field (G-39). */
.form-control[data-locked="1"],
.form-control[data-locked="1"]:focus {
	background-color: var(--nx-page) !important;
	color: var(--nx-text-2) !important;
	border-color: var(--nx-border) !important;
	cursor: not-allowed;
	box-shadow: none !important;
}

/* =====================================================================
   41. Foundation: buttons, fields, validation, toasts, dialogs
   (UI roadmap 0.3 / 0.4 / 0.6 / 0.7; behaviour in jt-ui.js / jt-toast.js)
   ===================================================================== */
:root {
	--nx-ease: cubic-bezier(.2, .8, .2, 1);
	--nx-ring: 0 0 0 3px rgba(242, 106, 27, .16);
	--nx-ring-red: 0 0 0 3px rgba(229, 72, 77, .14);
	--nx-shadow-lg: 0 12px 32px -8px rgba(16, 24, 40, .18), 0 4px 10px -4px rgba(16, 24, 40, .08);
	--nx-shadow-xl: 0 24px 56px -12px rgba(16, 24, 40, .28), 0 8px 20px -8px rgba(16, 24, 40, .12);
}

/* ---- Buttons ------------------------------------------------------- */
.btn:not(.btn-icon):not(.btn-sm):not(.btn-xs):not(.btn-lg) { min-height: 38px; }
.btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	line-height: 1.2;
	transition: background-color .16s var(--nx-ease), border-color .16s var(--nx-ease), color .16s var(--nx-ease), box-shadow .16s var(--nx-ease), transform .08s ease, opacity .16s ease !important;
}
.btn:active:not(:disabled):not(.is-blocked):not(.is-loading) { transform: translateY(.5px); }
.btn:focus-visible { outline: none !important; box-shadow: var(--nx-ring) !important; }
.btn.btn-primary, .btn-primary, .btn.btn-success, .btn.btn-dark, .btn.btn-info {
	box-shadow: 0 1px 2px rgba(194, 78, 11, .22), inset 0 1px 0 rgba(255, 255, 255, .14) !important;
}
.btn.btn-primary:focus-visible, .btn.btn-success:focus-visible, .btn.btn-info:focus-visible { box-shadow: var(--nx-ring) !important; }
.btn.btn-secondary, .btn.btn-light, .btn.btn-light-primary, .btn.btn-white {
	box-shadow: 0 1px 2px rgba(16, 24, 40, .05) !important;
}
.btn.btn-danger { box-shadow: 0 1px 2px rgba(209, 58, 63, .25) !important; }
.btn.btn-danger:focus-visible { box-shadow: var(--nx-ring-red) !important; }
.btn:disabled, .btn.disabled {
	opacity: .5 !important;
	cursor: not-allowed !important;
	box-shadow: none !important;
}

/* Blocked: the form is not complete yet. Still clickable -- a click shows
   what is missing -- but it reads as not ready. */
.btn.is-blocked {
	position: relative;
	opacity: .5;
	cursor: not-allowed;
	box-shadow: none !important;
}
.btn.is-blocked[data-jt-hint]:hover::after,
.btn.is-blocked[data-jt-hint]:focus-visible::after {
	content: attr(data-jt-hint);
	position: absolute;
	bottom: calc(100% + 8px);
	left: 50%;
	transform: translateX(-50%);
	padding: 6px 10px;
	border-radius: 8px;
	background: #14161A;
	color: #fff;
	font-size: 12px;
	font-weight: 500;
	white-space: normal;
	width: max-content;
	max-width: 280px;
	text-align: center;
	pointer-events: none;
	z-index: 10;
	animation: jt-fade-up .16s var(--nx-ease);
}

/* Working: spinner in place of the label, width held so nothing jumps. */
.btn.is-loading { cursor: progress !important; opacity: .85 !important; }
.jt-spinner {
	width: 14px;
	height: 14px;
	flex: 0 0 14px;
	border-radius: 50%;
	border: 2px solid currentColor;
	border-right-color: transparent;
	animation: jt-spin .7s linear infinite;
}
@keyframes jt-spin { to { transform: rotate(360deg); } }
@keyframes jt-fade-up { from { opacity: 0; transform: translate(-50%, 4px); } to { opacity: 1; transform: translate(-50%, 0); } }

/* ---- Fields ---------------------------------------------------------- */
.form-control:hover:not(:focus):not([readonly]):not(:disabled),
.bootstrap-select > .dropdown-toggle:hover {
	border-color: var(--nx-border-strong) !important;
}
.bootstrap-select.show > .dropdown-toggle,
.bootstrap-select > .dropdown-toggle:focus {
	border-color: var(--nx-accent) !important;
	box-shadow: var(--nx-ring) !important;
	outline: none !important;
}
.form-control:disabled { background: var(--nx-surface-2) !important; color: var(--nx-text-3) !important; cursor: not-allowed; }

/* Required marker: quiet, after the label. */
label.jt-label-required::after {
	content: "*";
	margin-left: 3px;
	color: var(--nx-red);
	font-weight: 600;
	opacity: .85;
}

/* Invalid */
.form-control.is-invalid,
.form-control.is-invalid:hover,
.bootstrap-select.is-invalid > .dropdown-toggle,
.input-group.is-invalid .form-control {
	border-color: var(--nx-red) !important;
	background-image: none !important;
	padding-right: .75rem;
}
.form-control.is-invalid:focus,
.bootstrap-select.is-invalid.show > .dropdown-toggle,
.bootstrap-select.is-invalid > .dropdown-toggle:focus {
	border-color: var(--nx-red) !important;
	box-shadow: var(--nx-ring-red) !important;
}
.jt-field-error {
	display: flex;
	align-items: flex-start;
	gap: 6px;
	margin-top: 6px;
	color: #C9353A;
	font-size: 12.5px;
	font-weight: 500;
	line-height: 1.35;
	animation: jt-err-in .18s var(--nx-ease);
}
.jt-field-error svg { width: 14px; height: 14px; flex: 0 0 14px; margin-top: 1px; }
@keyframes jt-err-in { from { opacity: 0; transform: translateY(-3px); } to { opacity: 1; transform: none; } }
.jt-nudge { animation: jt-nudge .36s ease; }
@keyframes jt-nudge {
	0%, 100% { transform: translateX(0); }
	20% { transform: translateX(-4px); }
	40% { transform: translateX(4px); }
	60% { transform: translateX(-2px); }
	80% { transform: translateX(2px); }
}
/* The theme's own invalid icon and message would double ours. */
.form-control.is-invalid ~ .invalid-feedback { display: none !important; }

/* ---- Toasts ---------------------------------------------------------- */
.jt-toast-container {
	position: fixed !important;
	right: 20px !important;
	bottom: 20px !important;
	left: auto !important;
	top: auto !important;
	z-index: 2100 !important;
	display: flex !important;
	flex-direction: column !important;
	gap: 10px !important;
	width: 380px;
	max-width: calc(100vw - 32px) !important;
	pointer-events: none;
}
.jt-toast {
	position: relative;
	display: grid !important;
	grid-template-columns: 30px 1fr 24px;
	align-items: start;
	gap: 12px !important;
	padding: 14px 12px 15px 14px !important;
	background: var(--nx-surface) !important;
	border: 1px solid var(--nx-border) !important;
	border-left: 1px solid var(--nx-border) !important;
	border-radius: 14px !important;
	box-shadow: var(--nx-shadow-lg) !important;
	color: var(--nx-text) !important;
	overflow: hidden;
	pointer-events: auto;
	opacity: 0;
	transform: translateY(10px) scale(.98);
	transition: opacity .26s var(--nx-ease), transform .32s var(--nx-ease) !important;
}
.jt-toast.is-visible { opacity: 1; transform: none; }
.jt-toast.is-leaving { opacity: 0; transform: translateX(16px); transition-duration: .2s !important; }
.jt-toast--bump { animation: jt-bump .3s var(--nx-ease); }
@keyframes jt-bump { 50% { transform: scale(1.02); } }
.jt-toast__icon {
	width: 30px !important;
	height: 30px !important;
	margin: 0 !important;
	border-radius: 50% !important;
	display: inline-flex !important;
	align-items: center;
	justify-content: center;
}
.jt-toast__icon svg { width: 18px; height: 18px; }
.jt-toast--success .jt-toast__icon { background: var(--nx-green-tint) !important; color: var(--nx-green) !important; }
.jt-toast--danger  .jt-toast__icon { background: var(--nx-red-tint) !important;   color: var(--nx-red) !important; }
.jt-toast--warning .jt-toast__icon { background: var(--nx-amber-tint) !important; color: var(--nx-amber) !important; }
.jt-toast--info    .jt-toast__icon { background: var(--nx-blue-tint) !important;  color: var(--nx-blue) !important; }
.jt-toast__body { min-width: 0; padding-top: 5px; }
.jt-toast__title {
	font-size: 14px;
	font-weight: 600;
	line-height: 1.35;
	letter-spacing: -0.01em;
	color: var(--nx-text);
}
.jt-toast__detail {
	margin-top: 3px;
	font-size: 13px;
	line-height: 1.5;
	color: var(--nx-text-2);
	overflow-wrap: anywhere;
}
.jt-toast__title:only-child, .jt-toast__detail:only-child { margin-top: 0; }
.jt-toast__detail:only-child { color: var(--nx-text); font-size: 13.5px; }
.jt-toast__detail a, .jt-toast__title a { color: var(--nx-accent); font-weight: 600; text-decoration: none; }
.jt-toast__detail a:hover { text-decoration: underline; }
.jt-toast__detail ol, .jt-toast__detail ul { margin: 6px 0 0; padding-left: 18px; }
.jt-toast__close {
	width: 24px;
	height: 24px;
	margin-top: 3px;
	padding: 0;
	border: 0;
	border-radius: 6px;
	background: transparent;
	color: var(--nx-text-3);
	display: inline-flex;
	align-items: center;
	justify-content: center;
	cursor: pointer;
	transition: background-color .14s ease, color .14s ease;
}
.jt-toast__close svg { width: 16px; height: 16px; }
.jt-toast__close:hover { background: var(--nx-surface-2); color: var(--nx-text); }
.jt-toast__close:focus-visible { outline: none; box-shadow: var(--nx-ring); }
.jt-toast__timer {
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0;
	height: 2px;
	transform-origin: left center;
	opacity: .55;
}
.jt-toast--success .jt-toast__timer { background: var(--nx-green); }
.jt-toast--danger  .jt-toast__timer { background: var(--nx-red); }
.jt-toast--warning .jt-toast__timer { background: var(--nx-amber); }
.jt-toast--info    .jt-toast__timer { background: var(--nx-blue); }
@media (max-width: 575.98px) {
	.jt-toast-container { left: 12px !important; right: 12px !important; bottom: 12px !important; width: auto; max-width: none !important; }
}

/* ---- Modals ------------------------------------------------------------ */
.modal-backdrop.show { opacity: 1 !important; background: rgba(15, 17, 21, .42) !important; backdrop-filter: blur(2px); }
.modal-content {
	border: 1px solid var(--nx-border) !important;
	border-radius: 16px !important;
	box-shadow: var(--nx-shadow-xl) !important;
	overflow: hidden;
}
.modal.fade .modal-dialog { transform: translateY(12px) scale(.985); transition: transform .28s var(--nx-ease), opacity .2s ease; }
.modal.show .modal-dialog { transform: none; }
.modal-header { padding: 18px 22px !important; border-bottom: 1px solid var(--nx-border) !important; align-items: center; }
.modal-header .modal-title { font-size: 16px !important; font-weight: 600 !important; letter-spacing: -0.01em; }
.modal-header .close {
	margin: 0 !important;
	padding: 0 !important;
	width: 32px;
	height: 32px;
	border-radius: 8px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	opacity: 1;
	color: var(--nx-text-3);
	transition: background-color .14s ease, color .14s ease;
}
.modal-header .close:hover { background: var(--nx-surface-2); color: var(--nx-text); }
.modal-body { padding: 22px !important; }
.modal-footer { padding: 14px 22px !important; gap: 8px; background: var(--nx-surface-2); }
.modal-footer > * { margin: 0 !important; }

/* ---- Confirm dialog (jtConfirm) --------------------------------------- */
.jt-confirm {
	position: fixed;
	inset: 0;
	z-index: 2200;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 16px;
	background: rgba(15, 17, 21, .42);
	backdrop-filter: blur(2px);
	opacity: 0;
	transition: opacity .18s ease;
}
.jt-confirm.is-open { opacity: 1; }
.jt-confirm__panel {
	width: 100%;
	max-width: 420px;
	padding: 24px;
	background: var(--nx-surface);
	border-radius: 16px;
	box-shadow: var(--nx-shadow-xl);
	transform: translateY(10px) scale(.98);
	transition: transform .28s var(--nx-ease);
}
.jt-confirm.is-open .jt-confirm__panel { transform: none; }
.jt-confirm__icon {
	width: 40px;
	height: 40px;
	margin-bottom: 14px;
	border-radius: 12px;
	background: var(--nx-accent-tint);
	color: var(--nx-accent);
	display: flex;
	align-items: center;
	justify-content: center;
}
.jt-confirm__icon.is-danger { background: var(--nx-red-tint); color: var(--nx-red); }
.jt-confirm__icon svg { width: 22px; height: 22px; }
.jt-confirm__title { margin: 0 0 6px; font-size: 16px; font-weight: 600; letter-spacing: -0.01em; color: var(--nx-text); }
.jt-confirm__body { margin: 0; font-size: 13.5px; line-height: 1.55; color: var(--nx-text-2); }
.jt-confirm__actions { display: flex; justify-content: flex-end; gap: 8px; margin-top: 22px; }

@media (prefers-reduced-motion: reduce) {
	.jt-toast, .jt-confirm, .jt-confirm__panel, .modal.fade .modal-dialog, .jt-field-error { transition: none !important; animation: none !important; }
	.jt-nudge { animation: none; }
}
/* Choice cards standing in for a required select (Create Job's process / mode). */
.jt-choice-grid.is-invalid .jt-choice:not(.is-selected) { border-color: rgba(229, 72, 77, .55) !important; }

/* ---- Hover and press: everything you can click answers the pointer ---- */
.btn.btn-primary:hover:not(:disabled):not(.is-blocked):not(.is-loading),
.btn.btn-success:hover:not(:disabled):not(.is-blocked):not(.is-loading),
.btn.btn-info:hover:not(:disabled):not(.is-blocked):not(.is-loading) {
	box-shadow: 0 4px 12px -2px rgba(242, 106, 27, .35), inset 0 1px 0 rgba(255, 255, 255, .16) !important;
	transform: translateY(-1px);
}
.btn.btn-danger:hover:not(:disabled):not(.is-blocked) { box-shadow: 0 4px 12px -2px rgba(229, 72, 77, .35) !important; transform: translateY(-1px); }
.btn.btn-secondary:hover:not(:disabled):not(.is-blocked),
.btn.btn-light:hover:not(:disabled):not(.is-blocked),
.btn.btn-light-primary:hover:not(:disabled):not(.is-blocked),
.btn.btn-white:hover:not(:disabled):not(.is-blocked) {
	box-shadow: 0 2px 6px -1px rgba(16, 24, 40, .08) !important;
}
.btn.is-blocked:hover, .btn:disabled:hover { transform: none !important; }

/* Clickable cards and tiles lift a little. */
a.card, a.card-custom, .jt-master-tile, .jt-choice {
	transition: transform .18s var(--nx-ease), box-shadow .18s var(--nx-ease), border-color .18s var(--nx-ease), background-color .18s var(--nx-ease) !important;
}
a.card:hover, .jt-master-tile:hover, .jt-choice:hover:not(.is-selected) {
	transform: translateY(-2px);
	box-shadow: var(--nx-shadow-lg) !important;
	border-color: var(--nx-border-strong) !important;
}
a.card:active, .jt-choice:active { transform: translateY(0); }
.jt-stat { transition: background-color .16s ease !important; }

/* Rows: a soft wash, eased in. */
.table tbody tr > td { transition: background-color .14s ease; }
.table tbody tr:hover > td { background: #F8F9FB; }

/* Tabs, dropdown items, menu links, text links. */
.nav-tabs .nav-link { transition: color .14s ease, border-color .14s ease; }
.nav-tabs .nav-link:not(.active):hover { color: var(--nx-text) !important; border-bottom-color: var(--nx-border-strong) !important; }
.dropdown-menu .dropdown-item { transition: background-color .12s ease, color .12s ease; border-radius: 6px; }
.dropdown-menu .dropdown-item:hover { background: var(--nx-surface-2) !important; color: var(--nx-text) !important; }
.jt-nav__item { transition: background-color .14s ease, color .14s ease !important; }
#kt_content a:not(.btn):not(.nav-link):not(.card):not(.jt-stat):not(.dropdown-item):not(.page-link) {
	text-underline-offset: 3px;
	text-decoration-thickness: 1px;
	transition: color .14s ease;
}
#kt_content a:not(.btn):not(.nav-link):not(.card):not(.jt-stat):not(.dropdown-item):not(.page-link):hover { text-decoration: underline; }
.page-link { transition: background-color .14s ease, color .14s ease, border-color .14s ease; }
.form-control, .bootstrap-select > .dropdown-toggle { transition: border-color .14s ease, box-shadow .16s var(--nx-ease), background-color .14s ease !important; }
@media (hover: none) {
	.btn:hover, a.card:hover, .jt-choice:hover { transform: none !important; }
}
/* bootstrap-select's wrapper carries .form-control too: only its button shows the error. */
.bootstrap-select.form-control.is-invalid { border-color: transparent !important; box-shadow: none !important; }
/* Blocked, without transparency: a see-through button also faded its hint. */
.btn.is-blocked { opacity: 1 !important; }
.btn.is-blocked.btn-primary, .btn.is-blocked.btn-success, .btn.is-blocked.btn-info, .btn.is-blocked.btn-dark {
	background-color: #F6B690 !important;
	border-color: #F6B690 !important;
	color: #fff !important;
}
.btn.is-blocked.btn-danger { background-color: #F1A3A6 !important; border-color: #F1A3A6 !important; }
.btn.is-blocked.btn-light, .btn.is-blocked.btn-secondary, .btn.is-blocked.btn-white, .btn.is-blocked.btn-light-primary {
	color: var(--nx-text-3) !important;
	background-color: var(--nx-surface-2) !important;
}

/* =====================================================================
   42. Foundation, part 2: tables, tabs, status, empty / loading, access
   (UI roadmap 0.5 / 0.8 / 0.9 / 0.11 / 0.12; server/ui.php, jt-ui.js)
   ===================================================================== */
:root {
	--nx-violet: #7C5CD6;  --nx-violet-tint: #F3EFFD;
	--nx-teal: #0E9384;    --nx-teal-tint: #E7F7F5;
	--nx-slate: #5B6B82;   --nx-slate-tint: #EEF1F6;
	/* 0.12: the old --nx-text-3 (#98A1AE) was 2.6:1 on white, under the
	   4.5:1 small text needs. Hints and placeholders now use this. */
	--nx-text-3: #7D8594;
}

/* ---- Tables ------------------------------------------------------------- */
/* Tabular figures only where columns of numbers line up (dates, amounts);
   applied to every cell they spaced out job numbers: "IMP - 2026 - 0116". */
.table td { font-variant-numeric: normal; font-feature-settings: normal; }
.table td[data-sort], .table td[data-order], .table td.text-right, .table td.jt-num { font-variant-numeric: tabular-nums; }
.table thead th, .table.table-head-custom thead th { color: var(--nx-text-2) !important; }
.table thead th *, .table thead th .text-primary, .table thead th a { color: inherit !important; }
html body .table thead th.sorting_asc, html body .table thead th.sorting_desc,
html body table.dataTable thead th.sorting_asc, html body table.dataTable thead th.sorting_desc { color: var(--nx-text-2) !important; }
/* Sort arrows only where they mean something: the sorted column, and the
   one under the pointer. */
.table thead th.sorting::after { opacity: 0 !important; transition: opacity .14s ease; }
.table thead th.sorting:hover::after { opacity: .5 !important; }
.table thead th.sorting_asc::after, .table thead th.sorting_desc::after { opacity: .9 !important; color: var(--nx-text-2) !important; }
.table tbody td { padding-top: 11px !important; padding-bottom: 11px !important; }
/* The job / container number is what people scan for. */
.table tbody td:is(:first-child, :nth-child(2)) > .text-dark-75.font-weight-bolder,
.table tbody td a.jt-id, .table tbody td .jt-id { font-weight: 600 !important; color: var(--nx-text) !important; letter-spacing: -0.005em; }
/* Row actions with words ("Allocate", "Update") are quiet until wanted:
   a column of solid orange buttons shouted over the data. */
.table td .btn:not(.btn-icon).btn-primary,
.table td .btn:not(.btn-icon).btn-success,
.table td .btn:not(.btn-icon).btn-info {
	background: var(--nx-accent-tint) !important;
	border: 1px solid var(--nx-accent-tint-border) !important;
	color: var(--nx-accent-press) !important;
	box-shadow: none !important;
	min-height: 32px !important;
	padding: 0.35rem 0.85rem !important;
}
.table td .btn:not(.btn-icon).btn-primary:hover,
.table td .btn:not(.btn-icon).btn-success:hover,
.table td .btn:not(.btn-icon).btn-info:hover {
	background: var(--nx-accent) !important;
	border-color: var(--nx-accent) !important;
	color: #fff !important;
	transform: none;
}
/* Icon row actions: one size, one quiet frame, clear hover. */
.table td .btn.btn-icon, .table td form .btn:not(.btn-sm).jt-icon-only {
	width: 32px !important; height: 32px !important; min-height: 32px !important;
	padding: 0 !important;
	background: var(--nx-surface) !important;
	border: 1px solid var(--nx-border) !important;
	border-radius: 8px !important;
	box-shadow: none !important;
}
.table td form { display: inline-block; margin: 0 2px 0 0; }

/* ---- Tabs: one raised switch, everywhere (jt-tabs.js) --------------------
   A recessed track with a thick, lit thumb that slides to the selected tab.
   Covers the segmented "pills" and the underlined job-page tabs alike, and
   sits centred above its content. */
ul.nav.jt-switch {
	position: relative !important;
	display: flex !important; flex-wrap: nowrap !important; align-items: center;
	gap: 2px; width: max-content !important; max-width: 100%;
	margin: 20px auto 8px !important; padding: 6px !important;
	overflow-x: auto; overflow-y: hidden; scrollbar-width: none;
	list-style: none;
	background: linear-gradient(180deg, #E8EBF0 0%, #F3F4F7 100%) !important;
	border: 1px solid #DDE1E8 !important; border-radius: 16px !important;
	box-shadow: inset 0 2px 5px rgba(16, 24, 40, .10), inset 0 -1px 0 rgba(255, 255, 255, .85), 0 1px 0 rgba(255, 255, 255, .9) !important;
}
ul.nav.jt-switch::-webkit-scrollbar { display: none; }
ul.nav.jt-switch > .nav-item { position: relative; z-index: 1; margin: 0 !important; flex: 0 0 auto; border: 0 !important; }
ul.nav.jt-switch .nav-link {
	position: relative; z-index: 1;
	display: inline-flex !important; align-items: center; justify-content: center; gap: 8px;
	height: 40px; padding: 0 18px !important; margin: 0 !important;
	border: 0 !important; border-radius: 11px !important;
	background: transparent !important; box-shadow: none !important;
	color: var(--nx-text-2) !important; font-size: 13.5px !important; font-weight: 600 !important; white-space: nowrap;
	transition: color .28s ease;
	cursor: pointer;
}
ul.nav.jt-switch .nav-link::after, ul.nav.jt-switch .nav-link::before { display: none !important; }
ul.nav.jt-switch .nav-link:hover:not(.active) { color: var(--nx-text) !important; }
ul.nav.jt-switch .nav-link.active { color: #fff !important; text-shadow: 0 1px 0 rgba(120, 40, 0, .25); }
ul.nav.jt-switch .nav-link .nav-icon, ul.nav.jt-switch .nav-link i, ul.nav.jt-switch .nav-link svg,
ul.nav.jt-switch .nav-link .nav-text { color: currentColor !important; opacity: 1; }
ul.nav.jt-switch .nav-link .nav-icon svg { width: 17px; height: 17px; }
ul.nav.jt-switch .nav-link:focus-visible { outline: none; box-shadow: 0 0 0 3px var(--nx-ring) !important; }
.jt-switch__thumb {
	position: absolute; top: 0; left: 0; z-index: 0; pointer-events: none; opacity: 0;
	border-radius: 11px;
	background: linear-gradient(180deg, #FF8C42 0%, #F26A1B 55%, #E0560B 100%);
	box-shadow:
		inset 0 1px 0 rgba(255, 255, 255, .45),
		inset 0 -2px 0 rgba(120, 40, 0, .18),
		0 8px 18px -6px rgba(242, 106, 27, .65),
		0 3px 6px -2px rgba(16, 24, 40, .25);
	transition: transform .42s cubic-bezier(.34, 1.25, .5, 1), width .42s cubic-bezier(.34, 1.25, .5, 1), height .2s ease, opacity .2s ease;
	will-change: transform, width;
}
ul.nav.jt-switch.is-moving .jt-switch__thumb { box-shadow: inset 0 1px 0 rgba(255, 255, 255, .45), inset 0 -2px 0 rgba(120, 40, 0, .18), 0 12px 24px -8px rgba(242, 106, 27, .7), 0 4px 8px -2px rgba(16, 24, 40, .28); }
/* The underlined job-page tabs lose their line and border. */
ul.nav.nav-tabs.jt-switch, ul.nav.nav-tabs.jt-switch .nav-link { border-bottom: 0 !important; }
.card-header:has(> ul.nav.jt-switch), .card-header:has(> .card-toolbar > ul.nav.jt-switch) { justify-content: center !important; border-bottom: 0 !important; }
@media (prefers-reduced-motion: reduce) { .jt-switch__thumb { transition: none; } }
@media (max-width: 767.98px) {
	ul.nav.jt-switch { margin: 14px 12px 6px !important; width: auto !important; }
	ul.nav.jt-switch .nav-link { height: 36px; padding: 0 14px !important; font-size: 13px !important; }
}

/* ---- Stage pills (jt_status_pill) --------------------------------------- */
.jt-status {
	display: inline-flex; align-items: center; gap: 6px;
	padding: 3px 9px 3px 8px;
	border-radius: 999px;
	font-size: 13px; font-weight: 650; line-height: 1.35;
	white-space: nowrap;
}
.jt-status__dot { width: 6px; height: 6px; border-radius: 50%; background: currentColor; flex: 0 0 6px; }
/* Stage colours: solid, so each stage reads at a glance on a white row. */
.jt-status--blue   { background: #2E6BE6; color: #fff; }
.jt-status--violet { background: #7C5CD6; color: #fff; }
.jt-status--amber  { background: #D9820A; color: #fff; }
.jt-status--teal   { background: #0E9384; color: #fff; }
.jt-status--green  { background: #12A150; color: #fff; }
.jt-status--slate  { background: #5B6B82; color: #fff; }
.jt-status--gray   { background: #E4E7EC; color: #3E4654; }
.jt-status .jt-status__dot { background: #fff; }
/* Job numbers in the lists: the first thing to find on a row. */
.jt-jobno { font-weight: 700; color: var(--nx-text, #1B2433); white-space: nowrap; }
.jt-muted { color: var(--nx-text-3); }

/* ---- Icons (jt_icon) ------------------------------------------------------ */
.jt-icon { width: 18px; height: 18px; flex: 0 0 auto; vertical-align: -3px; }

/* ---- Empty states (jt_empty_state, and every DataTables empty row) ------- */
.jt-empty-state {
	display: flex; flex-direction: column; align-items: center; justify-content: center;
	gap: 6px;
	padding: 44px 20px;
	text-align: center;
}
.jt-empty-state__icon {
	width: 44px; height: 44px; margin-bottom: 6px;
	border-radius: 12px;
	background: var(--nx-surface-2);
	border: 1px solid var(--nx-border);
	color: var(--nx-text-2);
	display: inline-flex; align-items: center; justify-content: center;
}
.jt-empty-state__icon .jt-icon { width: 22px; height: 22px; }
.jt-empty-state__title { font-size: 14px; font-weight: 600; color: var(--nx-text); }
.jt-empty-state__hint { max-width: 420px; font-size: 13px; line-height: 1.5; color: var(--nx-text-2); }
.jt-empty-state__action { margin-top: 8px; }
.table td.dataTables_empty, .table td.jt-empty { padding: 0 !important; color: inherit !important; text-align: left !important; }
/* A wide table scrolls sideways; its empty message stays in view. */
.table td.dataTables_empty .jt-empty-state, .table td.jt-empty .jt-empty-state { position: sticky; left: 0; }

/* ---- Loading ---------------------------------------------------------------- */
/* Top progress bar: any page load or in-place save. */
.jt-pagebar {
	position: fixed; top: 0; left: 0; right: 0; height: 2px; z-index: 3000;
	pointer-events: none;
	opacity: 0; transition: opacity .3s ease .1s;
}
.jt-pagebar.is-active { opacity: 1; transition-delay: 0s; }
.jt-pagebar__bar {
	height: 100%;
	width: 100%;
	transform-origin: left center;
	transform: scaleX(0);
	background: linear-gradient(90deg, var(--nx-accent), #FF9A5A);
	box-shadow: 0 0 8px rgba(242, 106, 27, .5);
}
.jt-pagebar.is-active .jt-pagebar__bar { animation: jt-pagebar 8s cubic-bezier(.1, .7, .2, 1) forwards; }
.jt-pagebar.is-done .jt-pagebar__bar { animation: none; transform: scaleX(1); transition: transform .2s ease; }
@keyframes jt-pagebar { 0% { transform: scaleX(0); } 20% { transform: scaleX(.45); } 60% { transform: scaleX(.8); } 100% { transform: scaleX(.94); } }

/* Search box while a search is on its way. */
.jt-toolbar__search { position: relative; }
.jt-toolbar__search.is-searching::after {
	content: "";
	position: absolute; right: 16px; top: 50%;
	width: 14px; height: 14px; margin-top: -7px;
	border-radius: 50%;
	border: 2px solid var(--nx-accent);
	border-right-color: transparent;
	animation: jt-spin .7s linear infinite;
}

/* Skeleton: placeholder shapes while something loads. */
.jt-skeleton {
	display: block;
	height: 12px;
	border-radius: 6px;
	background: linear-gradient(90deg, #EEF0F3 25%, #F6F7F9 37%, #EEF0F3 63%);
	background-size: 400% 100%;
	animation: jt-shimmer 1.3s ease infinite;
}
@keyframes jt-shimmer { 0% { background-position: 100% 50%; } 100% { background-position: 0 50%; } }

/* ---- Accessibility --------------------------------------------------------- */
.jt-skip {
	position: fixed; left: 12px; top: -60px; z-index: 3100;
	padding: 10px 14px;
	border-radius: 10px;
	background: #14161A; color: #fff !important;
	font-weight: 600; font-size: 13px;
	transition: top .16s var(--nx-ease);
}
.jt-skip:focus { top: 12px; outline: none; box-shadow: var(--nx-ring); }
#kt_content .form-text.text-muted, #kt_content .text-muted, .modal .text-muted { color: var(--nx-text-2) !important; }
.form-control::placeholder { color: #8A92A0 !important; }
.jt-nav__item:focus-visible, .nav-link:focus-visible, .page-link:focus-visible, a:focus-visible {
	outline: none !important;
	box-shadow: var(--nx-ring) !important;
	border-radius: 8px;
}
@media (prefers-reduced-motion: reduce) {
	.jt-pagebar .jt-pagebar__bar, .jt-skeleton, .jt-toolbar__search.is-searching::after { animation: none !important; }
}
/* The accent theme paints the sorted column orange with !important; the
   sorted column is ordinary text with a quiet arrow. Unsorted columns
   show their arrows only on hover. */
html body .dataTables_wrapper .dataTable th.sorting_asc,
html body .dataTables_wrapper .dataTable th.sorting_desc { color: var(--nx-text-2) !important; }
html body .dataTables_wrapper .dataTable td.sorting_asc,
html body .dataTables_wrapper .dataTable td.sorting_desc { color: var(--nx-text) !important; }
html body .dataTables_wrapper .dataTable td.sorting_1 { color: inherit !important; }
html body .dataTables_wrapper .dataTable thead th.sorting::before,
html body .dataTables_wrapper .dataTable thead th.sorting::after { opacity: 0 !important; transition: opacity .14s ease; }
html body .dataTables_wrapper .dataTable thead th.sorting:hover::before,
html body .dataTables_wrapper .dataTable thead th.sorting:hover::after { opacity: .35 !important; }
html body .dataTables_wrapper .dataTable thead th.sorting_asc::before,
html body .dataTables_wrapper .dataTable thead th.sorting_desc::after { color: var(--nx-text-2) !important; opacity: .9 !important; }
html body .dataTables_wrapper .dataTable thead th.sorting_asc::after,
html body .dataTables_wrapper .dataTable thead th.sorting_desc::before { opacity: 0 !important; }

/* =====================================================================
   43. Refinements (feedback 2026-09-27)
   ===================================================================== */

/* No sort arrows at all, not even on hover. Headers still sort on click. */
html body .dataTables_wrapper .dataTable thead th::before,
html body .dataTables_wrapper .dataTable thead th::after,
html body .table thead th.sorting::before, html body .table thead th.sorting::after,
html body .table thead th.sorting_asc::before, html body .table thead th.sorting_asc::after,
html body .table thead th.sorting_desc::before, html body .table thead th.sorting_desc::after {
	display: none !important;
	content: none !important;
}
html body .table thead th.sorting, html body .table thead th.sorting_asc, html body .table thead th.sorting_desc { padding-right: 14px !important; }

/* One horizontal scroller per table. Wrappers around the table (a
   .table-responsive inside another, #table_wrapper) showed a second,
   empty scrollbar that moved a few pixels. */
.table-responsive:has(.table-responsive),
div:has(> .dataTables_wrapper):not(.table-responsive):not(.dataTables_scrollBody) { overflow-x: visible !important; }
.dataTables_wrapper > .row { margin-left: 0 !important; margin-right: 0 !important; }
.dataTables_wrapper > .row > [class*="col-"] { padding-left: 0 !important; padding-right: 0 !important; }

/* The old filter form never shows: it is hidden until the drawer takes it. */
[data-jt-advanced-search]:not([data-jt-advanced-moved]) { display: none !important; }
form[data-jt-list-filter]:not([data-jt-built]) { visibility: hidden; max-height: 0; overflow: hidden; margin: 0 !important; }

/* ---- Advanced search drawer, clean layout (jtTidyDrawerForm) ----------- */
.jt-drawer__panel { width: min(440px, 100vw) !important; display: flex !important; flex-direction: column; }
.jt-drawer__head { padding: 20px 22px !important; border-bottom: 1px solid var(--nx-border); }
.jt-drawer__title { font-size: 16px !important; font-weight: 600 !important; letter-spacing: -0.01em; margin: 0 0 3px !important; }
.jt-drawer__sub { font-size: 13px !important; color: var(--nx-text-2) !important; margin: 0 !important; }
.jt-drawer__body { flex: 1 1 auto; min-height: 0; overflow-y: auto; overflow-x: hidden; padding: 0 !important; }
.jt-drawer__body form.jt-dform-host { margin: 0 !important; min-height: 100%; display: flex; flex-direction: column; }
.jt-dform { display: flex; flex-direction: column; min-height: 100%; }
.jt-dform__fields { flex: 1 1 auto; display: flex; flex-direction: column; gap: 16px; padding: 20px 22px 24px; }
.jt-dfield { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.jt-dfield__label { margin: 0 !important; font-size: 12.5px !important; font-weight: 550 !important; color: var(--nx-text) !important; }
.jt-dfield .form-control, .jt-dfield .bootstrap-select, .jt-dfield .bootstrap-select > .dropdown-toggle { width: 100% !important; min-height: 40px; margin: 0 !important; }
.jt-dfield .bootstrap-select.form-control { border: 0 !important; padding: 0 !important; height: auto !important; }
.jt-dfield .bootstrap-select > .dropdown-toggle { padding: 0 12px !important; display: flex !important; align-items: center; }
.jt-dfield .bootstrap-select .filter-option-inner-inner { font-size: 13px; color: var(--nx-text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.jt-dfield .bootstrap-select > .dropdown-toggle.bs-placeholder .filter-option-inner-inner { color: var(--nx-text-3); }
.jt-dfield .bootstrap-select .dropdown-menu { max-width: 100%; }
.jt-drange { display: grid; grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr); align-items: center; gap: 8px; }
.jt-drange__cell { min-width: 0; }
.jt-drange__sep { font-size: 12.5px; color: var(--nx-text-3); }
.jt-dfield--check label { display: inline-flex !important; align-items: center; gap: 10px; margin: 0 !important; font-weight: 500 !important; }
.jt-dform__foot {
	position: sticky; bottom: 0;
	display: flex; justify-content: space-between; gap: 10px;
	padding: 14px 22px;
	background: var(--nx-surface);
	border-top: 1px solid var(--nx-border);
}
.jt-dform__foot .btn { flex: 1 1 0; min-height: 40px; margin: 0 !important; }
.jt-toolbar__filter svg { width: 18px !important; height: 18px !important; }
/* bootstrap-select in the drawer: the chosen value centred in the box. */
.jt-dfield .bootstrap-select > .dropdown-toggle { height: 40px !important; }
.jt-dfield .bootstrap-select > .dropdown-toggle .filter-option {
	position: static !important; display: flex !important; align-items: center;
	height: 100% !important; padding: 0 !important; width: 100%;
}
.jt-dfield .bootstrap-select > .dropdown-toggle .filter-option-inner { width: 100%; padding: 0 !important; }
.jt-dfield .bootstrap-select > .dropdown-toggle::after { margin-left: 8px; }
/* The drawer of a page without tabs still sits right under the tabs. */
.card-body > [data-jt-advanced-moved] + .jt-toolbar, [data-jt-advanced-moved] { margin: 0 !important; }

/* ---- The pager (jt_pager_html), and DataTables' own, drawn the same ---- */
.jt-pager {
	display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap;
	gap: 12px;
	padding: 14px 0 2px;
}
.jt-pager__summary { font-size: 13px; color: var(--nx-text-2); }
.jt-pager__summary b { font-weight: 600; color: var(--nx-text); font-variant-numeric: tabular-nums; }
.jt-pager__nav { display: inline-flex; align-items: center; gap: 4px; }
.jt-pager__btn,
.dataTables_wrapper .dataTables_paginate .pagination .page-link {
	min-width: 34px; height: 34px;
	padding: 0 10px !important;
	display: inline-flex !important; align-items: center; justify-content: center;
	border-radius: 9px !important;
	border: 1px solid transparent !important;
	background: transparent !important;
	color: var(--nx-text-2) !important;
	font-size: 13px !important; font-weight: 550 !important;
	font-variant-numeric: tabular-nums;
	text-decoration: none !important;
	transition: background-color .14s ease, color .14s ease, border-color .14s ease;
}
a.jt-pager__btn:hover,
.dataTables_wrapper .dataTables_paginate .pagination .page-item:not(.active):not(.disabled) .page-link:hover {
	background: var(--nx-surface-2) !important;
	border-color: var(--nx-border) !important;
	color: var(--nx-text) !important;
}
.jt-pager__btn.is-current,
.dataTables_wrapper .dataTables_paginate .pagination .page-item.active .page-link {
	background: var(--nx-text) !important;
	border-color: var(--nx-text) !important;
	color: #fff !important;
}
.jt-pager__step { border-color: var(--nx-border) !important; background: var(--nx-surface) !important; }
.jt-pager__step svg { width: 16px; height: 16px; }
.jt-pager__btn.is-disabled,
.dataTables_wrapper .dataTables_paginate .pagination .page-item.disabled .page-link { opacity: .4; cursor: default; }
.jt-pager__gap { min-width: 22px; text-align: center; color: var(--nx-text-3); font-size: 13px; }
.jt-frag-pager { padding-top: 6px; }
.jt-frag-pager .jt-pager { padding-top: 8px; }
.dataTables_wrapper .dataTables_paginate .pagination { gap: 4px; margin: 0; }
.dataTables_wrapper .dataTables_info { font-size: 13px; color: var(--nx-text-2); }
@media (max-width: 575.98px) {
	.jt-pager { justify-content: center; }
	.jt-pager__summary { width: 100%; text-align: center; }
}

/* The theme's "info" was Metronic purple (#8950FC): one blue, the app's own. */
.text-info, .text-hover-info:hover { color: var(--nx-blue) !important; }
.bg-info { background-color: var(--nx-blue) !important; }
.bg-light-info, .label-light-info, .btn-light-info { background-color: var(--nx-blue-tint) !important; color: var(--nx-blue) !important; }
.label-info, .badge-info { background-color: var(--nx-blue) !important; color: #fff !important; }
.svg-icon.svg-icon-info svg g [fill], .svg-icon-info svg [fill] { fill: var(--nx-blue) !important; }

/* The job banner on every stage page used a two-tone theme glyph; the same
   clean set instead (a package: this is the job). */
.alert .alert-icon .svg-icon svg { display: none !important; }
.alert .alert-icon .svg-icon::before {
	content: ""; display: inline-block; width: 28px; height: 28px;
	background-color: var(--nx-accent);
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z'/%3E%3Cpath d='M12 22V12'/%3E%3Cpath d='m3.3 7 7.7 4.73a2 2 0 0 0 2 0L20.7 7'/%3E%3C/svg%3E") center / contain no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z'/%3E%3Cpath d='M12 22V12'/%3E%3Cpath d='m3.3 7 7.7 4.73a2 2 0 0 0 2 0L20.7 7'/%3E%3C/svg%3E") center / contain no-repeat;
}

/* =====================================================================
   45. Dashboards: even, scrollable, nothing spills (UI roadmap phase 2)
   ===================================================================== */
/* Cards in a dashboard row share one height; their bodies scroll. */
#kt_content .container > .row > [class*="col-"] > .card.card-stretch { height: calc(100% - 25px); display: flex; flex-direction: column; }
#kt_content .container > .row > [class*="col-"] > .card.card-stretch > .card-body { flex: 1 1 auto; min-height: 0; }

/* Long names end in "..." (full text on hover, jt-ui.js), never wrap a row apart. */
.jt-trunc, .jt-payment-row__label, .jt-job-alert-card__field-value {
	overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 100%;
}
.jt-trunc { display: block; min-width: 0; }
#kt_content .card .d-flex.flex-column.flex-grow-1 { min-width: 0; }

/* Payments: one list, label and amount, nil amounts quiet. */
.jt-payment-grid { display: flex !important; flex-direction: column; gap: 0 !important; }
.jt-payment-row {
	display: flex !important; align-items: center; justify-content: space-between; gap: 12px;
	padding: 11px 0 !important; margin: 0 !important;
	border-bottom: 1px solid var(--nx-border) !important;
}
.jt-payment-row:last-child { border-bottom: 0 !important; }
.jt-payment-row__label { font-size: 13.5px !important; font-weight: 500 !important; color: var(--nx-text) !important; min-width: 0; }
.jt-payment-row__label:hover { color: var(--nx-accent) !important; text-decoration: none !important; }
.jt-payment-row__amount { flex: 0 0 auto; font-size: 13.5px !important; font-weight: 600 !important; color: var(--nx-text) !important; font-variant-numeric: tabular-nums; }
.jt-payment-row__amount.is-zero { color: var(--nx-text-3) !important; font-weight: 500 !important; }

/* Needs attention: white cards with a thin edge in the alert colour. */
.jt-job-alert-card {
	background: var(--nx-surface) !important;
	border: 1px solid var(--nx-border);
	border-left: 3px solid var(--nx-amber);
	border-radius: 12px !important;
	padding: 14px 16px !important;
	margin-bottom: 10px !important;
	transition: box-shadow .16s var(--nx-ease), border-color .16s ease;
}
.jt-job-alert-card--danger { border-left-color: var(--nx-red) !important; }
.jt-job-alert-card:hover { box-shadow: var(--nx-shadow-md); }
.jt-job-alert-card__jobno { font-weight: 600 !important; font-size: 14px !important; color: var(--nx-text) !important; }
.jt-job-alert-card__fields { display: grid !important; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 10px 16px !important; }
.jt-job-alert-card__field { min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.jt-job-alert-card__field-label { font-size: 11.5px !important; font-weight: 500 !important; letter-spacing: 0 !important; text-transform: none !important; color: var(--nx-text-2) !important; }
.jt-job-alert-card__field-value { font-size: 13px !important; font-weight: 500 !important; color: var(--nx-text) !important; }
/* Each list scrolls inside its card; its pager stays in view. */
.jt-fragment { max-height: 620px; overflow-y: auto; overscroll-behavior: contain; padding-right: 4px; scrollbar-width: thin; }
.jt-fragment .jt-frag-pager { position: sticky; bottom: 0; background: linear-gradient(to bottom, rgba(255,255,255,0), var(--nx-surface) 30%); padding-top: 14px; }

/* Master data tiles: an even grid, no orphan on the last row. */
.jt-tile-grid { display: grid !important; grid-template-columns: repeat(auto-fill, minmax(168px, 1fr)) !important; gap: 12px !important; }
.jt-tile-grid > * { min-width: 0; }

/* Client dashboard: jobs by stage. */
.jt-stage-bars { display: flex; flex-direction: column; gap: 14px; padding-top: 6px; }
.jt-stage-bars__total { font-size: 13px; color: var(--nx-text-2); margin-bottom: 4px; }
.jt-stage-bars__total b { font-size: 24px; font-weight: 650; color: var(--nx-text); letter-spacing: -0.02em; margin-right: 6px; }
.jt-stage-bar { display: grid; grid-template-columns: 170px minmax(0, 1fr) 48px; align-items: center; gap: 14px; }
.jt-stage-bar__track { height: 8px; border-radius: 999px; background: var(--nx-surface-2); border: 1px solid var(--nx-border); overflow: hidden; }
.jt-stage-bar__fill { display: block; height: 100%; border-radius: 999px; background: var(--nx-accent); transition: width .5s var(--nx-ease); }
.jt-stage-bar__fill--blue { background: #2E6BE6; } .jt-stage-bar__fill--violet { background: var(--nx-violet); }
.jt-stage-bar__fill--amber { background: var(--nx-amber); } .jt-stage-bar__fill--teal { background: var(--nx-teal); }
.jt-stage-bar__fill--green { background: var(--nx-green); }
.jt-stage-bar__n { text-align: right; font-weight: 600; font-variant-numeric: tabular-nums; }
@media (max-width: 575.98px) { .jt-stage-bar { grid-template-columns: 120px minmax(0, 1fr) 36px; } }
/* Payments card title sits left, like every other card title. */
.card:has(.jt-payment-grid) .flex-center { align-items: flex-start !important; }
.card:has(.jt-payment-grid) .card-title, .card:has(.jt-payment-grid) h3, .card:has(.jt-payment-grid) .card-label { text-align: left !important; }

/* DataTables' own small search box and "Show N entries" never show: the
   list toolbar (jt-tables.js) takes the search; nothing flickers on load. */
.dataTables_wrapper .dataTables_filter:not(.jt-toolbar .dataTables_filter),
.dataTables_wrapper .dataTables_length { display: none !important; }
/* Redrawn two-tone icons: stroke, current colour, the theme's size. */
.svg-icon svg.jt-icon { width: 1.25rem; height: 1.25rem; fill: none !important; }
.svg-icon svg.jt-icon * { fill: none !important; stroke: currentColor; }
.svg-icon.svg-icon-md svg.jt-icon { width: 1.25rem; height: 1.25rem; }

/* No "scroll to top" button anywhere (the theme's floating orange square). */
#kt_scrolltop, .scrolltop { display: none !important; }

/* ---- Type: one font, soft weights, gentle ink (all pages) ------------- */
/* The theme's Poppins still reached the dashboards (chart labels, legends). */
body, button, input, select, textarea,
.apexcharts-text, .apexcharts-legend-text, .apexcharts-title-text, .apexcharts-tooltip, .apexcharts-xaxistooltip,
svg text, svg tspan {
	font-family: Inter, system-ui, -apple-system, "Segoe UI", sans-serif !important;
}
/* Table cells read as data, not headings: no bold inside rows. (Scoped to
   #kt_content so these win over the content-wide rules just below.) */
#kt_content .table tbody td .font-weight-bolder, #kt_content .table tbody td .font-weight-boldest,
#kt_content .table tbody td .font-weight-bold, #kt_content .table tbody td b, #kt_content .table tbody td strong,
#kt_content .table tbody td .text-dark-75 { font-weight: 400 !important; color: #434955 !important; }
#kt_content .table tbody td, #kt_content .table tbody td .font-size-lg { color: #434955; font-weight: 400; font-size: 13px !important; }
/* The identifier column stays easy to scan, a touch firmer. */
#kt_content .table tbody td:first-child > .text-dark-75, #kt_content .table tbody td .jt-id,
#kt_content .table tbody td:is(:first-child, :nth-child(2)) > .text-dark-75.font-weight-bolder,
#kt_content .table tbody td:first-child > span.font-weight-bolder { font-weight: 500 !important; color: var(--nx-text) !important; }
/* Headings and figures keep their weight; body copy softens. */
#kt_content .font-weight-bolder:not(h1):not(h2):not(h3):not(h4):not(.card-label):not(.jt-stat__value):not(.table *) { font-weight: 550 !important; }
#kt_content .font-weight-boldest { font-weight: 600 !important; }
#kt_content .text-dark, #kt_content .text-dark-75 { color: var(--nx-text) !important; }
#kt_content .text-dark-50 { color: var(--nx-text-2) !important; }
#kt_content b, #kt_content strong { font-weight: 600; }

/* Working buttons: three small dots in a wave (the boot loader's motion),
   not a ring. Shadows without a colour take the text colour. */
.jt-spinner {
	width: 4px !important; height: 4px !important; flex: 0 0 4px !important;
	margin: 0 7px !important;
	border: 0 !important; border-radius: 50% !important;
	background: currentColor !important;
	box-shadow: -7px 0 0 0, 7px 0 0 0;
	opacity: .9;
	animation: jt-btn-dots .9s ease-in-out infinite !important;
}
@keyframes jt-btn-dots {
	0%, 100% { transform: translateY(0);    box-shadow: -7px 0 0 0, 7px 0 0 0; }
	20%      { transform: translateY(0);    box-shadow: -7px -3px 0 0, 7px 0 0 0; }
	40%      { transform: translateY(-3px); box-shadow: -7px 3px 0 0, 7px 3px 0 0; }
	60%      { transform: translateY(0);    box-shadow: -7px 0 0 0, 7px -3px 0 0; }
}
@media (prefers-reduced-motion: reduce) { .jt-spinner { animation: none !important; } }

/* No coloured left edges anywhere: a card is a card. */
.jt-job-alert-card, .jt-job-alert-card--danger, .jt-job-alert-card--warning,
.jt-job-actions-card, .jt-stat-pill, .alert.alert-custom.alert-notice {
	border-left: 1px solid var(--nx-border) !important;
}
.jt-stat-pill { border-left-color: transparent !important; }
#kt_aside .aside-menu .menu-nav > .menu-item > .menu-link { box-shadow: none !important; }
/* Sign-in messages: a soft tint, no outline. */
.jt-auth-banner { border: 0 !important; }
/* Searching: the same three dots, in the accent colour. */
.jt-toolbar__search.is-searching::after {
	width: 4px !important; height: 4px !important; margin-top: -2px !important; right: 30px !important;
	border: 0 !important; border-radius: 50% !important;
	background: var(--nx-accent) !important; color: var(--nx-accent);
	box-shadow: -7px 0 0 0, 7px 0 0 0;
	animation: jt-btn-dots .9s ease-in-out infinite !important;
}

/* ---- Profile (profile.php) ---------------------------------------------------
   Deliberately plain: who you are, then three quiet cards in one column. */
.jt-acct { max-width: 760px; margin: 0 auto; padding-bottom: 24px; }

.jt-acct-head { display: flex; align-items: center; gap: 20px; margin: 4px 0 36px; }
.jt-acct-head__photo { margin: 0; flex: 0 0 auto; }
.jt-acct-head__photo label { position: relative; display: block; margin: 0; cursor: pointer; border-radius: 50%; }
.jt-acct-head__photo label:focus-within { box-shadow: 0 0 0 3px var(--nx-ring); }
.jt-acct-head__camera {
	position: absolute; inset: 0; border-radius: 50%; display: flex; align-items: center; justify-content: center;
	background: rgba(15, 23, 42, .45); color: #fff; opacity: 0; transition: opacity .15s ease;
}
.jt-acct-head__camera .jt-icon { width: 20px; height: 20px; }
.jt-acct-head__photo label:hover .jt-acct-head__camera, .jt-acct-head__photo [data-jt-drop].is-over .jt-acct-head__camera { opacity: 1; }
.jt-acct-head__photo [data-jt-drop].is-busy .jt-acct-avatar { opacity: .5; }
.jt-acct-head__who { min-width: 0; }
.jt-acct-head__name { margin: 0; font-size: 22px; line-height: 1.25; font-weight: 600; letter-spacing: -0.02em; color: var(--nx-text); }
.jt-acct-head__meta { margin-top: 4px; font-size: 13.5px; color: var(--nx-text-2); overflow-wrap: anywhere; }
.jt-acct-head__photo-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 4px 14px; margin-top: 8px; font-size: 12.5px; }
.jt-acct-head__photo-actions form { margin: 0; }
.jt-acct-head__hint { color: var(--nx-text-3); }
.jt-acct-textbtn { margin: 0; padding: 0; border: 0; background: none; font-size: 12.5px; font-weight: 500; color: var(--nx-accent); cursor: pointer; }
.jt-acct-textbtn:hover { text-decoration: underline; }
.jt-acct-textbtn--muted { color: var(--nx-text-2); }
.jt-drop__input { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }

.jt-acct-avatar {
	display: inline-flex; align-items: center; justify-content: center; overflow: hidden; border-radius: 50%;
	background: var(--nx-accent-tint); color: var(--nx-accent); flex: 0 0 auto;
}
.jt-acct-avatar img { width: 100%; height: 100%; object-fit: cover; display: block; }
.jt-acct-avatar__initials { font-weight: 600; }
.jt-acct-avatar--lg { width: 72px; height: 72px; font-size: 24px; }

.jt-acct-sec { margin-bottom: 24px; scroll-margin-top: 96px; }
.jt-acct-sec__head { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; margin-bottom: 10px; }
.jt-acct-sec__head h2 { margin: 0; font-size: 14px; font-weight: 600; color: var(--nx-text); }
.jt-acct-sec__aside { font-size: 12.5px; color: var(--nx-text-3); }
.jt-acct-sec__aside.is-warn { color: var(--nx-amber); }
.jt-acct-card { margin: 0; transition: box-shadow .3s ease; }
.jt-acct-card .card-toolbar { margin: 0; }
.jt-acct-sec.is-flash .jt-acct-card { box-shadow: 0 0 0 3px var(--nx-ring); }
.jt-acct-card label:not(.dropdown-item) { font-size: 13px; font-weight: 500; color: var(--nx-text); margin-bottom: 6px; }
.jt-acct-card .form-group { margin-bottom: 16px; }
.jt-acct-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 16px; }
.jt-acct-card input[readonly] { background: var(--nx-surface-2) !important; color: var(--nx-text-2) !important; cursor: default; }
.jt-acct-note { margin: 0; font-size: 12.5px; color: var(--nx-text-3); }

.jt-pw-input { position: relative; }
.jt-pw-input .form-control { padding-right: 42px; }
.jt-pw-input__toggle {
	position: absolute; top: 50%; right: 6px; transform: translateY(-50%); width: 30px; height: 30px;
	display: flex; align-items: center; justify-content: center; border: 0; border-radius: 6px;
	background: transparent; color: var(--nx-text-3); cursor: pointer;
}
.jt-pw-input__toggle:hover, .jt-pw-input__toggle.is-on { color: var(--nx-text); }
.jt-pw-input__toggle .jt-icon { width: 16px; height: 16px; }
.jt-pw-rules { display: flex; flex-wrap: wrap; gap: 6px 16px; list-style: none; margin: 0; padding: 0; }
.jt-pw-rules li { position: relative; padding-left: 14px; font-size: 12.5px; color: var(--nx-text-3); transition: color .15s ease; }
.jt-pw-rules li::before { content: ""; position: absolute; left: 0; top: 50%; width: 6px; height: 6px; margin-top: -3px; border-radius: 50%; background: var(--nx-border-strong); transition: background-color .15s ease; }
.jt-pw-rules li.is-met { color: var(--nx-green); }
.jt-pw-rules li.is-met::before { background: var(--nx-green); }

/* My tasks */
.jt-todo__composer { display: flex; align-items: center; gap: 8px; margin: 0; padding: 8px 8px 8px 16px; border-bottom: 1px solid var(--nx-border); }
.jt-todo__composer.is-shake { animation: jt-shake .3s ease; }
@keyframes jt-shake { 25% { transform: translateX(-4px); } 75% { transform: translateX(4px); } }
.jt-todo__plus { display: flex; color: var(--nx-text-3); }
.jt-todo__plus .jt-icon { width: 17px; height: 17px; }
.jt-todo__composer:focus-within .jt-todo__plus { color: var(--nx-accent); }
.jt-todo__input { flex: 1 1 auto; min-width: 0; height: 36px; border: 0; outline: 0; background: transparent; font-size: 14px; color: var(--nx-text); }
.jt-todo__input::placeholder { color: var(--nx-text-3); }
.jt-todo__duebtn {
	display: inline-flex; align-items: center; gap: 6px; height: 30px; padding: 0 10px; border: 0; border-radius: 6px;
	background: transparent; font-size: 12.5px; color: var(--nx-text-2); cursor: pointer; white-space: nowrap;
}
.jt-todo__duebtn:hover, .jt-todo__duebtn[aria-expanded="true"] { background: var(--nx-surface-2); color: var(--nx-text); }
.jt-todo__duebtn.is-set { color: var(--nx-accent); }
.jt-todo__duebtn .jt-icon { width: 15px; height: 15px; }
.jt-todo__menu { min-width: 200px; padding: 6px; border-radius: 10px; }
.jt-todo__menu .dropdown-item { display: flex; justify-content: space-between; gap: 16px; padding: 7px 10px; border-radius: 6px; font-size: 13px; cursor: pointer; position: relative; margin: 0; }
.jt-todo__menu .dropdown-item span { color: var(--nx-text-3); font-size: 12px; }
.jt-todo__pick input { position: absolute; left: 0; bottom: 0; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
.jt-todo__addbtn { height: 30px; padding: 0 14px; }

.jt-tgroup + .jt-tgroup { border-top: 1px solid var(--nx-border); }
.jt-tgroup__head {
	display: flex; align-items: center; gap: 6px; width: 100%; margin: 0; padding: 12px 16px 4px; border: 0; background: none; text-align: left;
	font-size: 12px; font-weight: 500; color: var(--nx-text-3);
}
.jt-tgroup__count { color: var(--nx-text-3); font-weight: 400; }
.jt-tgroup__count::before { content: "· "; }
.jt-tgroup--overdue .jt-tgroup__head { color: var(--nx-red); }
button.jt-tgroup__head { cursor: pointer; padding-bottom: 12px; }
button.jt-tgroup__head:hover { color: var(--nx-text); }
.jt-tgroup__chev { width: 6px; height: 6px; margin-right: 2px; border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; transform: rotate(45deg) translate(-1px, -1px); transition: transform .15s ease; }
.jt-tgroup.is-collapsed .jt-tgroup__chev { transform: rotate(-45deg); }
.jt-tgroup.is-collapsed .jt-tgroup__list { display: none; }
.jt-tgroup--done:not(.is-collapsed) button.jt-tgroup__head { padding-bottom: 4px; }
.jt-tgroup__list { list-style: none; margin: 0; padding: 0 0 6px; }

.jt-trow { display: flex; align-items: center; gap: 12px; padding: 7px 8px 7px 16px; transition: opacity .2s ease, transform .2s ease; }
.jt-trow:hover { background: var(--nx-surface-2); }
.jt-trow form { margin: 0; display: flex; }
.jt-trow.is-new { animation: jt-row-in .35s ease; }
@keyframes jt-row-in { from { opacity: 0; transform: translateY(-4px); } }
.jt-trow.is-leaving { opacity: 0; transform: translateX(8px); }
.jt-check {
	width: 18px; height: 18px; padding: 0; border-radius: 50%; border: 1.5px solid var(--nx-border-strong);
	background: transparent; color: transparent; display: flex; align-items: center; justify-content: center; cursor: pointer;
	transition: border-color .15s ease, color .15s ease, background-color .15s ease;
}
.jt-check .jt-icon { width: 11px; height: 11px; stroke-width: 3; }
.jt-check:hover { border-color: var(--nx-green); color: var(--nx-green); }
.jt-trow.is-done .jt-check { border-color: var(--nx-green); background: var(--nx-green); color: #fff; }
.jt-trow.is-completing .jt-check { transform: scale(1.12); }
.jt-trow__main { flex: 1 1 auto; min-width: 0; display: flex; align-items: baseline; gap: 12px; }
.jt-trow__text { flex: 1 1 auto; min-width: 0; padding: 2px 0; font-size: 14px; color: var(--nx-text); overflow-wrap: anywhere; outline: 0; cursor: text; border-radius: 4px; }
.jt-trow.is-editing .jt-trow__text { box-shadow: 0 0 0 2px var(--nx-ring); padding: 2px 6px; margin: 0 -6px; background: var(--nx-surface); }
.jt-trow.is-done .jt-trow__text { color: var(--nx-text-3); text-decoration: line-through; cursor: default; }
.jt-trow.is-completing .jt-trow__text { color: var(--nx-text-3); text-decoration: line-through; }
.jt-trow__due { flex: 0 0 auto; font-size: 12px; color: var(--nx-text-3); white-space: nowrap; }
.jt-trow__due.is-late { color: var(--nx-red); }
.jt-iconbtn {
	width: 28px; height: 28px; padding: 0; border: 0; border-radius: 6px; background: transparent; color: var(--nx-text-3);
	display: flex; align-items: center; justify-content: center; cursor: pointer; opacity: 0; transition: opacity .12s ease, color .12s ease;
}
.jt-iconbtn .jt-icon { width: 15px; height: 15px; }
.jt-trow:hover .jt-iconbtn, .jt-iconbtn:focus-visible { opacity: 1; }
.jt-iconbtn:hover { color: var(--nx-red); }
@media (hover: none) { .jt-iconbtn { opacity: 1; } }
.jt-todo__empty { padding: 8px 0; }
.jt-toast__undo { margin: 0; padding: 0; border: 0; background: none; font-weight: 600; color: var(--nx-accent); cursor: pointer; }

@media (max-width: 767.98px) {
	.jt-acct-head { gap: 16px; margin-bottom: 28px; }
	.jt-acct-avatar--lg { width: 60px; height: 60px; font-size: 20px; }
	.jt-acct-head__name { font-size: 19px; }
	.jt-acct-grid { grid-template-columns: 1fr; }
	.jt-trow__main { flex-direction: column; gap: 0; }
	.jt-todo__duebtn span { display: none; }
}

/* ---- Calendar (bootstrap-datepicker), app-wide ------------------------------
   One quiet, modern calendar for every date field: rounded day cells, the
   accent for the chosen day, a dot for today, soft outside-month days. */
.datepicker { padding: 10px !important; font-family: inherit !important; }
.datepicker.datepicker-dropdown {
	border: 1px solid var(--nx-border) !important; border-radius: 12px !important;
	box-shadow: 0 12px 32px -8px rgba(15, 23, 42, .18), 0 2px 6px rgba(15, 23, 42, .06) !important;
	background: var(--nx-surface) !important;
}
.datepicker.datepicker-dropdown::before, .datepicker.datepicker-dropdown::after { display: none !important; }
.datepicker table { border-collapse: separate !important; border-spacing: 2px !important; }
.datepicker table tr th, .datepicker table tr td { border-radius: 8px !important; }
.datepicker .datepicker-switch {
	font-size: 13.5px !important; font-weight: 600 !important; color: var(--nx-text) !important; letter-spacing: -0.01em;
}
.datepicker .prev, .datepicker .next, .datepicker .datepicker-switch { height: 32px !important; background: transparent !important; }
.datepicker .prev, .datepicker .next { width: 32px !important; color: var(--nx-text-2) !important; }
.datepicker .prev:hover, .datepicker .next:hover, .datepicker .datepicker-switch:hover { background: var(--nx-surface-2) !important; color: var(--nx-text) !important; }
.datepicker .prev svg, .datepicker .next svg { display: block; margin: 0 auto; }
.datepicker .prev.disabled, .datepicker .next.disabled { visibility: hidden; }
.datepicker table tr th.dow {
	height: 28px !important; padding: 0 !important; font-size: 11.5px !important; font-weight: 500 !important;
	color: var(--nx-text-3) !important; text-transform: none !important;
}
.datepicker table tr td.day {
	width: 34px !important; height: 34px !important; padding: 0 !important; font-size: 13px !important; font-weight: 400 !important;
	color: var(--nx-text) !important; background: transparent !important; position: relative; font-variant-numeric: tabular-nums;
	transition: background-color .12s ease;
}
.datepicker table tr td.day:hover, .datepicker table tr td.day.focused { background: var(--nx-surface-2) !important; }
.datepicker table tr td.old, .datepicker table tr td.new { color: var(--nx-text-3) !important; opacity: .55; }
.datepicker table tr td.today { color: var(--nx-accent) !important; font-weight: 600 !important; }
.datepicker table tr td.today::after {
	content: ""; position: absolute; left: 50%; bottom: 5px; width: 4px; height: 4px; margin-left: -2px; border-radius: 50%; background: currentColor;
}
.datepicker table tr td.active, .datepicker table tr td.active:hover, .datepicker table tr td.active.today,
.datepicker table tr td span.active, .datepicker table tr td span.active:hover {
	background: var(--nx-accent) !important; color: #fff !important; font-weight: 600 !important; text-shadow: none !important; opacity: 1;
	box-shadow: 0 1px 2px rgba(234, 88, 12, .35) !important;
}
.datepicker table tr td.disabled, .datepicker table tr td.disabled:hover { color: var(--nx-text-3) !important; opacity: .35; background: transparent !important; cursor: default !important; }
.datepicker table tr td span { height: 40px !important; line-height: 40px !important; border-radius: 8px !important; font-size: 13px !important; color: var(--nx-text) !important; }
.datepicker table tr td span:hover { background: var(--nx-surface-2) !important; }
.datepicker table tr td span.old, .datepicker table tr td span.new, .datepicker table tr td span.disabled { color: var(--nx-text-3) !important; }
.datepicker tfoot .today, .datepicker tfoot .clear { font-size: 12.5px !important; font-weight: 500 !important; color: var(--nx-accent) !important; background: transparent !important; }
.datepicker tfoot .today:hover, .datepicker tfoot .clear:hover { background: var(--nx-accent-tint) !important; }

/* The task menu's inline calendar */
.jt-todo__menu { min-width: 0; width: 276px; }
.jt-todo__cal .datepicker-inline { width: 100%; padding: 2px 0 0 !important; }
.jt-todo__cal .datepicker table { width: 100%; }

/* Not ready yet (disabled, or a form still missing something): a filled
   button turns neutral grey instead of a washed-out version of its colour,
   so it reads as "waiting" rather than "broken". App-wide. */
.btn.btn-primary:disabled, .btn.btn-primary.disabled, .btn.btn-primary.is-blocked,
.btn.btn-success:disabled, .btn.btn-success.is-blocked,
.btn.btn-info:disabled, .btn.btn-info.is-blocked,
.btn.btn-danger:disabled, .btn.btn-danger.is-blocked,
.btn.btn-dark:disabled, .btn.btn-dark.is-blocked {
	opacity: 1 !important;
	background: var(--nx-surface-2) !important;
	border-color: var(--nx-border) !important;
	color: var(--nx-text-3) !important;
	box-shadow: none !important;
}
.btn.btn-primary:disabled .jt-icon, .btn.btn-primary.is-blocked .jt-icon { color: inherit; }
.jt-todo__cal .datepicker-inline { border: 0 !important; box-shadow: none !important; }

/* Profile buttons: one height, icon + label, clear states. */
.jt-acct .jt-acct-btn { display: inline-flex; align-items: center; gap: 7px; height: 38px; padding: 0 16px !important; margin: 0; font-size: 13.5px !important; font-weight: 500 !important; border-radius: 9px !important; cursor: pointer; }
.jt-acct .jt-acct-btn .jt-icon { width: 16px; height: 16px; flex: 0 0 auto; }
.jt-acct .jt-acct-btn.btn-sm { height: 32px; padding: 0 12px !important; font-size: 12.5px !important; border-radius: 8px !important; }
.jt-acct .jt-acct-btn.btn-sm .jt-icon { width: 15px; height: 15px; }
.jt-acct .btn-light.jt-acct-btn { background: var(--nx-surface) !important; border: 1px solid var(--nx-border) !important; color: var(--nx-text) !important; }
.jt-acct .btn-light.jt-acct-btn:hover { background: var(--nx-surface-2) !important; border-color: var(--nx-border-strong) !important; }
.jt-acct .jt-acct-btn--danger { color: var(--nx-text-2) !important; }
.jt-acct .jt-acct-btn--danger:hover { color: var(--nx-red) !important; border-color: rgba(229, 72, 77, .35) !important; background: var(--nx-red-tint) !important; }
.jt-acct-head__photo-actions { gap: 8px; margin-top: 12px; }
.jt-acct-head__hint { margin-left: 4px; font-size: 12px; }
.jt-todo__composer { padding: 10px 10px 10px 16px; }
.jt-todo__duebtn { height: 34px; padding: 0 12px; border: 1px solid var(--nx-border); border-radius: 8px; background: var(--nx-surface); }
.jt-todo__duebtn:hover, .jt-todo__duebtn[aria-expanded="true"] { border-color: var(--nx-border-strong); background: var(--nx-surface-2); }
.jt-todo__duebtn.is-set { border-color: var(--nx-accent-tint-border); background: var(--nx-accent-tint); }
.jt-acct .jt-todo__addbtn { height: 34px; padding: 0 14px; }
.jt-acct .card-footer { padding-top: 14px !important; padding-bottom: 14px !important; }
@media (max-width: 767.98px) {
	.jt-acct .card-footer .jt-acct-btn { width: 100%; justify-content: center; }
	.jt-acct-head__hint { flex-basis: 100%; margin: 2px 0 0; }
}

#kt_quick_user_toggle .symbol .symbol-label.jt-user-avatar {
	background-color: var(--nx-surface-2) !important;
	background-size: cover !important;
	background-position: center !important;
	background-repeat: no-repeat !important;
	box-shadow: 0 0 0 1px var(--nx-border);
}

/* Bell panel: how many jobs the alert covers, right-aligned. */
.jt-alerts__count {
	margin-left: auto; align-self: center; min-width: 22px; height: 22px; padding: 0 7px; border-radius: 999px;
	display: inline-flex; align-items: center; justify-content: center;
	background: var(--nx-accent-tint); color: var(--nx-accent); font-size: 12px; font-weight: 600; font-variant-numeric: tabular-nums;
}

/* Tile labels wrap to two lines instead of cutting off ("Unreturned co…"):
   six tiles in a row leave ~130px each, less than most labels need. */
.jt-tile .jt-tile__label {
	white-space: normal !important; overflow: hidden; text-overflow: clip !important;
	display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; line-height: 1.3;
}

/* An empty list that scrolls sideways keeps its message in view, pinned to
   the visible area rather than to the table's far-left column. */
td.dataTables_empty > .jt-empty-state { position: sticky; left: 0; max-width: 100vw; }
td.dataTables_empty { padding-left: 0 !important; padding-right: 0 !important; }

/* ---- Long values clipped in lists; the whole row in a panel (jt-rowview.js) */
.jt-clip { max-width: 280px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.jt-clip--lines { white-space: normal; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; max-width: 320px; }
tr.jt-rv-row { cursor: pointer; }
tr.jt-rv-row:hover > td { background: var(--nx-surface-2) !important; }
tr.jt-rv-row:focus-visible { outline: none; box-shadow: inset 3px 0 0 var(--nx-accent); }
.jt-rv-card { cursor: pointer; transition: box-shadow .15s ease, transform .15s ease; }
.jt-rv-card:hover { box-shadow: var(--nx-shadow-md); }
.jt-rv-card:focus-visible { outline: none; box-shadow: 0 0 0 3px var(--nx-ring); }

.jt-rowview .jt-drawer__panel { width: min(480px, 100vw) !important; }
.jt-rv__kicker { font-size: 12px !important; font-weight: 500; text-transform: none; color: var(--nx-text-3) !important; margin: 0 0 4px !important; }
.jt-rowview .jt-drawer__title { font-size: 18px !important; overflow-wrap: anywhere; }
.jt-rv__headtext { min-width: 0; padding-right: 12px; }
.jt-rv__fields { margin: 0; padding: 8px 22px 24px; }
.jt-rv__field { display: grid; grid-template-columns: 150px minmax(0, 1fr); gap: 12px; padding: 12px 0; border-bottom: 1px solid var(--nx-border); }
.jt-rv__field:last-child { border-bottom: 0; }
.jt-rv__field dt { margin: 0; font-size: 12.5px; font-weight: 500; color: var(--nx-text-3); line-height: 1.5; }
.jt-rv__field dd { margin: 0; font-size: 13.5px; color: var(--nx-text); line-height: 1.5; overflow-wrap: anywhere; white-space: normal; }
.jt-rv__field dd.is-empty { color: var(--nx-text-3); }
.jt-rv__field dd.is-empty::before { content: "-"; }
.jt-rv__value, .jt-rv__value * { white-space: normal !important; max-width: none !important; overflow: visible !important; text-overflow: clip !important; -webkit-line-clamp: unset !important; display: revert; }
.jt-rv__value .jt-status { display: inline-flex !important; }
.jt-rv__actions { display: flex; flex-wrap: wrap; gap: 8px; padding: 14px 22px; border-top: 1px solid var(--nx-border); background: var(--nx-surface-2); }
.jt-rv__actions form { margin: 0; }
@media (max-width: 575.98px) { .jt-rv__field { grid-template-columns: 1fr; gap: 2px; } }
.jt-rv__actions .jt-rv__action--named { width: auto !important; padding: 0 14px !important; gap: 8px; display: inline-flex !important; align-items: center; height: 38px; }
.jt-rv__action-label { font-size: 13px; font-weight: 500; white-space: nowrap; }
/* A list of codes in a cell: first item and a "+N" badge (jt-rowview.js). */
td.jt-listcell > .jt-clip--list-src { display: none; }
td.jt-listcell { white-space: nowrap; }
td.jt-listcell::before { content: attr(data-jt-first); }
td.jt-listcell::after {
	content: attr(data-jt-more); margin-left: 8px; padding: 1px 8px; border-radius: 999px;
	font-size: 11.5px; font-weight: 600; color: var(--nx-text-2); background: var(--nx-surface-2); box-shadow: 0 0 0 1px var(--nx-border);
	font-variant-numeric: tabular-nums;
}
.jt-rv__chips { display: flex; flex-wrap: wrap; gap: 6px; }
.jt-rv__chip { display: inline-flex !important; padding: 3px 9px; border-radius: 7px; background: var(--nx-surface-2); box-shadow: 0 0 0 1px var(--nx-border); font-size: 12.5px; font-variant-numeric: tabular-nums; }
/* Panel actions sit centred in its footer. */
.jt-rv__actions { justify-content: center; }
.jt-rv__field--long { grid-template-columns: 1fr; gap: 8px; }
.jt-rv__field--long dd {
	padding: 12px 14px; border-radius: 10px; background: var(--nx-surface-2); box-shadow: inset 0 0 0 1px var(--nx-border);
	font-size: 13.5px; line-height: 1.65; white-space: pre-line;
}
.jt-rv__field--long dd .jt-rv__value, .jt-rv__field--long dd .jt-rv__value * { white-space: pre-line !important; }
/* The filter drawer hides stray <br>s (line 3386); a record's own line
   breaks are content and stay. */
.jt-drawer__body .jt-rv__value br { display: inline !important; }
/* Headers some pages wrap in the theme's text-primary (blue, or orange)
   read like links. One header colour everywhere. */
.table thead th .text-primary, .table thead th span[class*="text-"] { color: inherit !important; }

/* Tiles in even rows. "As many 168px columns as fit" gave 7 on a wide screen,
   so the admin dashboard's 12 tiles wrapped 7 + 5. Column counts that divide
   both dashboards' tiles (12 admin, 6 Haulage) at every width. */
.jt-tile-grid { grid-template-columns: repeat(6, minmax(0, 1fr)) !important; }
@media (max-width: 1399.98px) { .jt-tile-grid:not(.jt-tile-grid--3) { grid-template-columns: repeat(4, minmax(0, 1fr)) !important; } }
@media (max-width: 991.98px) { .jt-tile-grid, .jt-tile-grid:not(.jt-tile-grid--3) { grid-template-columns: repeat(3, minmax(0, 1fr)) !important; } }
@media (max-width: 575.98px) { .jt-tile-grid, .jt-tile-grid:not(.jt-tile-grid--3) { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; } }

/* ================================================================
   Dropdown lists: readable highlighted and chosen rows, every widget.
   The theme painted the highlighted option's text white while this
   file tinted its background pale orange, so the row under the cursor
   (or the one the search matched) read as blank: white on #FFF3EB.
   One rule set: dark text on the pale tint when highlighted, orange
   text when chosen, never white on a light background.
   ================================================================ */
/* bootstrap-select (searchable dropdowns, filter drawers) */
.bootstrap-select .dropdown-menu li > a,
.bootstrap-select .dropdown-menu li > a .text,
.bootstrap-select .dropdown-menu li > a .text-muted,
.bootstrap-select .dropdown-menu li > a small { color: var(--nx-text) !important; }
.bootstrap-select .dropdown-menu li.active > a,
.bootstrap-select .dropdown-menu li > a:hover,
.bootstrap-select .dropdown-menu li > a:focus,
.bootstrap-select .dropdown-menu li > a.active,
.bootstrap-select .dropdown-menu li > a:active,
.bootstrap-select .dropdown-menu.inner > li.active:not(.selected) > a {
	background: var(--nx-accent-tint) !important;
	color: var(--nx-text) !important;
}
.bootstrap-select .dropdown-menu li.active > a .text,
.bootstrap-select .dropdown-menu li > a:hover .text,
.bootstrap-select .dropdown-menu li > a:focus .text,
.bootstrap-select .dropdown-menu li > a.active .text { color: var(--nx-text) !important; }
.bootstrap-select .dropdown-menu li.selected > a,
.bootstrap-select .dropdown-menu li.selected > a .text { color: #C2410C !important; font-weight: 600; }
.bootstrap-select .dropdown-menu li.disabled > a,
.bootstrap-select .dropdown-menu li.disabled > a .text { color: var(--nx-text-3) !important; }
.bootstrap-select .dropdown-menu li.no-results { background: transparent !important; color: var(--nx-text-2) !important; }
/* plain Bootstrap dropdown menus: the chosen item is orange with white text,
   darker orange so the white text stays readable */
.dropdown-menu .dropdown-item.active,
.dropdown-menu .dropdown-item:active { background-color: #C2410C !important; color: #fff !important; }
.dropdown-menu .dropdown-item:hover:not(.active),
.dropdown-menu .dropdown-item:focus:not(.active) { background-color: var(--nx-accent-tint) !important; color: var(--nx-text) !important; }
/* Tagify suggestions (multi-value fields) */
.tagify__dropdown__item--active { background: var(--nx-accent-tint) !important; color: var(--nx-text) !important; }
/* select2, if a page uses it */
.select2-container--default .select2-results__option--highlighted[aria-selected],
.select2-container--default .select2-results__option--highlighted { background: var(--nx-accent-tint) !important; color: var(--nx-text) !important; }

/* Field help (jt-help.js): the (i) button beside every label, and its bubble. */
.jt-help { display: inline-flex; align-items: center; justify-content: center; width: 18px; height: 18px; margin-left: 6px; padding: 0; border: 0; border-radius: 50%;
	background: transparent; color: var(--jt-text-muted, #6B7280); vertical-align: -3px; cursor: help; }
.jt-help svg { width: 15px; height: 15px; }
.jt-help:hover, .jt-help:focus-visible { color: var(--jt-accent, #F26A1B); outline: none; box-shadow: 0 0 0 2px rgba(242, 106, 27, .25); }
.jt-help--inline { margin-left: 4px; }
.jt-help-bubble { position: absolute; z-index: 100000; max-width: 320px; padding: 10px 12px; border-radius: 8px; background: #14161A; color: #F6F7F9;
	font-size: 12.5px; line-height: 1.45; box-shadow: 0 8px 24px rgba(0, 0, 0, .25); opacity: 0; pointer-events: none; transition: opacity .12s ease; }
.jt-help-bubble.is-open { opacity: 1; }
.jt-help-bubble__title { display: block; margin-bottom: 4px; font-size: 13px; color: #fff; }
.jt-help-bubble__what { margin-bottom: 6px; }
.jt-help-bubble__need, .jt-help-bubble__type, .jt-help-bubble__limit { color: #D9DDE4; }
.jt-help-bubble__need::before, .jt-help-bubble__type::before, .jt-help-bubble__limit::before { content: "\2022  "; color: #F26A1B; }
@media (prefers-reduced-motion: reduce) { .jt-help-bubble { transition: none; } }
/* Long comment logs scroll inside the box instead of stretching the form. */
textarea.jt-comment-box { max-height: 240px; overflow-y: auto; }
/* Neutral status badges (e.g. FECD "not yet submitted") must be readable. */
.label.label-light-secondary { color: #4A505A !important; background-color: #EFF1F4 !important; }
/* Stage screens: the stage title sits level with its tab pills. */
.card-header.card-header-tabs-line { align-items: center; }
.card-header.card-header-tabs-line .card-title { margin-top: 0; margin-bottom: 0; align-self: center; }
.card-header.card-header-tabs-line .card-title .card-label { margin: 0; line-height: 1.3; }
.card-header.card-header-tabs-line .card-title { display: flex; align-items: center; min-height: 52px; margin-right: 16px; padding: 0; }
.card-header.card-header-tabs-line .card-title .card-label { padding: 0; }
.card-header.card-header-tabs-line .card-toolbar { align-self: center; margin-top: 0; margin-bottom: 0; padding-top: 0; padding-bottom: 0; }
.card-header.card-header-tabs-line .card-toolbar .jt-switch { margin-top: 0; margin-bottom: 0; }
.card-header.card-header-tabs-line .card-toolbar .jt-switch { margin-top: 14px !important; margin-bottom: 14px !important; }
.card-header.card-header-tabs-line .card-title { margin-right: 16px !important; }
.card-header.card-header-tabs-line { column-gap: 16px; }
/* Fields that wrap onto a second line keep a gap above them. */
.form-group.row { row-gap: 18px; }
.jt-help-anchor { white-space: nowrap; }
/* Required label with a help icon: word, then "*", then the icon, kept together. */
label.jt-label-required:has(.jt-help-anchor)::after { content: none; }
label.jt-label-required .jt-help-anchor .jt-help::before { content: "*"; color: var(--nx-red); font-weight: 600; margin-right: 6px; }
label.jt-label-required .jt-help-anchor .jt-help { margin-left: 3px; width: auto; }
label.jt-label-required .jt-help-anchor .jt-help::before { margin-right: 3px; }
label .jt-help { vertical-align: -2px; margin-left: 4px; }

/* Stage tiles: the same colour as the stage's pill in the job tables, so a
   stage reads the same everywhere. A band on top, a light tint, the figure in colour. */
.jt-stat[class*="jt-stat--"] { border-top: 4px solid var(--jt-stage); background: var(--jt-stage-tint); }
.jt-stat[class*="jt-stat--"]:hover { background: var(--jt-stage-tint-2); }
.jt-stat[class*="jt-stat--"] .jt-stat__value { color: var(--jt-stage); font-weight: 750; }
.jt-stat[class*="jt-stat--"] .jt-stat__label { color: #1B2433; font-weight: 650; }
.jt-stat--blue   { --jt-stage: #2E6BE6; --jt-stage-tint: #F2F6FE; --jt-stage-tint-2: #E6EEFD; }
.jt-stat--violet { --jt-stage: #7C5CD6; --jt-stage-tint: #F7F4FE; --jt-stage-tint-2: #EEE8FC; }
.jt-stat--amber  { --jt-stage: #D9820A; --jt-stage-tint: #FEF8EE; --jt-stage-tint-2: #FCEFD9; }
.jt-stat--teal   { --jt-stage: #0E9384; --jt-stage-tint: #EFFAF8; --jt-stage-tint-2: #DDF3F0; }
.jt-stat--green  { --jt-stage: #12A150; --jt-stage-tint: #F0FAF4; --jt-stage-tint-2: #DDF3E6; }
.jt-stat--alert  { --jt-stage: #D92D20; --jt-stage-tint: #FEF3F2; --jt-stage-tint-2: #FDE4E2; }

/* Readability: list text one size up, job numbers bold and dark, stage pills
   solid (above). These are the details people scan a list for. */
#kt_content .table tbody td, #kt_content .table tbody td .font-size-lg { font-size: 13.5px !important; color: #2F3542; }
#kt_content .table tbody td.jt-jobno,
#kt_content .table tbody td a.jt-id, #kt_content .table tbody td .jt-id { font-weight: 700 !important; color: #111827 !important; font-size: 13.5px !important; }
#kt_content .table tbody td .jt-status { font-size: 13px !important; }

/* Amounts (jt_money): digits line up down a column, never wrap. */
.jt-money { font-variant-numeric: tabular-nums; white-space: nowrap; }

/* Haulage dashboard tiles: coloured by what they count, as the stage pills and
   the Commercial tiles are. Items to chase (unreturned) turn red only above zero. */
.jt-tile.jt-tile--stage { border-top: 4px solid var(--jt-stage) !important; background: var(--jt-stage-tint) !important; }
.jt-tile.jt-tile--stage:hover { background: var(--jt-stage-tint-2) !important; }
.jt-tile.jt-tile--stage .jt-tile__value { color: var(--jt-stage) !important; font-weight: 750 !important; }
.jt-tile.jt-tile--stage .jt-tile__label { color: #1B2433 !important; font-weight: 650 !important; }
.jt-tile.jt-tile--stage .jt-tile__icon { background: var(--jt-stage) !important; }
.jt-tile.jt-tile--stage .jt-tile__icon i { color: #fff !important; }
.jt-stage--blue   { --jt-stage: #2E6BE6; --jt-stage-tint: #F2F6FE; --jt-stage-tint-2: #E6EEFD; }
.jt-stage--violet { --jt-stage: #7C5CD6; --jt-stage-tint: #F7F4FE; --jt-stage-tint-2: #EEE8FC; }
.jt-stage--amber  { --jt-stage: #D9820A; --jt-stage-tint: #FEF8EE; --jt-stage-tint-2: #FCEFD9; }
.jt-stage--green  { --jt-stage: #12A150; --jt-stage-tint: #F0FAF4; --jt-stage-tint-2: #DDF3E6; }
.jt-stage--red    { --jt-stage: #D92D20; --jt-stage-tint: #FEF3F2; --jt-stage-tint-2: #FDE4E2; }


/* The sticky title/Cancel header on the long forms (Create New Job, Manage Job,
   Create Haulage Job...) pins itself with a top offset the theme computes, and
   form labels scrolled past it drew on top of it on desktop too (seen on
   Create New Job, 08/10/2026), as already fixed for phones above. It stays in
   the page and scrolls away with the form on every screen size. */
.card-sticky-on .card.card-custom.card-sticky > .card-header,
.card.card-custom.card-sticky > .card-header {
	position: static !important;
	box-shadow: none !important;
}

/* Lists open downward and scroll inside themselves, so no choice is cut off, in a modal too. */
.bootstrap-select .dropdown-menu { max-height: 320px; }
.bootstrap-select .dropdown-menu.inner { max-height: 280px !important; overflow-y: auto; }
.modal-dialog:not(.modal-dialog-scrollable) .modal-body { overflow: visible; }
.modal .bootstrap-select.show > .dropdown-menu { z-index: 1090; }
/* A modal no longer clips its drop-down lists; its own corners are rounded instead. */
.modal-content { overflow: visible !important; }
.modal-content > .modal-header { border-radius: 16px 16px 0 0; }
.modal-content > .modal-footer { border-radius: 0 0 16px 16px; }

/* =====================================================================
   45. Polish pass (19/10/2026): one look for the same thing everywhere.
   ===================================================================== */

/* Not ready yet: a main button keeps its colour, lighter, so it still reads
   as the button that will save (a grey one read as plain text). */
.btn.btn-primary:disabled, .btn.btn-primary.disabled, .btn.btn-primary.is-blocked,
.btn.btn-success:disabled, .btn.btn-success.is-blocked,
.btn.btn-info:disabled, .btn.btn-info.is-blocked,
.btn.btn-dark:disabled, .btn.btn-dark.is-blocked {
	background: #F8B48C !important;
	border-color: #F8B48C !important;
	color: #fff !important;
}
.btn.btn-danger:disabled, .btn.btn-danger.is-blocked { background: #F1A3A6 !important; border-color: #F1A3A6 !important; color: #fff !important; }

/* Forms: fields grouped under a small heading, two to a row (one on a phone). */
.jt-form-section + .jt-form-section { margin-top: 6px; padding-top: 18px; border-top: 1px solid var(--nx-border); }
.jt-form-section__title {
	margin: 0 0 14px; font-size: 12px !important; font-weight: 600 !important;
	letter-spacing: .04em; text-transform: uppercase; color: var(--nx-text-3) !important;
}
.jt-form-section .form-group { margin-bottom: 16px; }

/* The actions of a form: at its end, on the right, full-size, the main one last. */
.jt-form-actions {
	display: flex; justify-content: flex-end; align-items: center; gap: 10px;
	margin-top: 8px; padding-top: 18px; border-top: 1px solid var(--nx-border);
}
.modal-footer { display: flex; justify-content: flex-end; gap: 10px; background: var(--nx-surface) !important; }
.modal-footer > * { margin: 0 !important; }
.jt-form-actions .btn, .modal-footer .btn:not(.btn-icon), .card-footer .btn:not(.btn-icon) {
	min-height: 40px; padding: 0 18px !important; font-size: 0.84375rem !important;
}
@media (max-width: 575.98px) {
	.jt-form-actions, .modal-footer { flex-direction: column-reverse; align-items: stretch; }
	.jt-form-actions .btn, .modal-footer .btn:not(.btn-icon) { width: 100%; justify-content: center; }
}

/* A wider dialog for long forms: two fields to a row, so it is shorter. */
@media (min-width: 992px) { .modal-lg { max-width: 820px; } }

/* One Edit button everywhere: a square button with the pencil, in the accent tint. */
.table td .btn:has(> i.flaticon2-writing, > i.flaticon-edit, > i.flaticon2-edit, > i.flaticon-edit-1, > i.la-edit, > i.la-pencil, > i.fa-edit, > i.fa-pencil, > i.fa-pen, > i.flaticon2-pen),
.table td .btn:has(> .svg-icon > i.flaticon2-writing, > .svg-icon > i.flaticon-edit, > .svg-icon > i.la-edit, > .svg-icon > i.la-pencil, > .svg-icon > i.fa-pen),
.btn.jt-btn-edit {
	width: 34px !important; height: 34px; min-height: 34px; padding: 0 !important;
	display: inline-flex !important; align-items: center; justify-content: center;
	background: var(--nx-accent-tint) !important; border: 1px solid var(--nx-accent-tint-border) !important;
	color: var(--nx-accent) !important; border-radius: 8px !important;
}
.table td .btn:has(i.flaticon2-writing, i.flaticon-edit, i.flaticon2-edit, i.la-edit, i.la-pencil, i.fa-edit, i.fa-pen, i.flaticon2-pen) i,
.btn.jt-btn-edit i { color: var(--nx-accent) !important; }
.table td .btn:has(i.flaticon2-writing, i.flaticon-edit, i.flaticon2-edit, i.la-edit, i.la-pencil, i.fa-edit, i.fa-pen, i.flaticon2-pen):hover,
.btn.jt-btn-edit:hover { background: var(--nx-accent) !important; border-color: var(--nx-accent) !important; }
.table td .btn:has(i.flaticon2-writing, i.flaticon-edit, i.flaticon2-edit, i.la-edit, i.la-pencil, i.fa-edit, i.fa-pen, i.flaticon2-pen):hover i,
.btn.jt-btn-edit:hover i { color: #fff !important; }

/* The row panel's actions: on the right, full-size, the first one is the main action. */
.jt-rv__actions { background: var(--nx-surface) !important; }
.jt-rv__actions .btn { min-height: 40px; padding: 0 18px !important; font-size: 0.84375rem !important; }
.jt-rv__actions > :first-child .btn, .jt-rv__actions > .btn:first-child {
	background: var(--nx-accent) !important; border-color: var(--nx-accent) !important; color: #fff !important;
}
.jt-rv__actions > :first-child .btn i, .jt-rv__actions > .btn:first-child i { color: #fff !important; }
@media (max-width: 575.98px) { .jt-rv__actions > *, .jt-rv__actions .btn { flex: 1 1 100%; justify-content: center; } }

/* Lists whose only action is to open the record: the row opens it (jt-rowview.js),
   and the action column is kept for the panel but not drawn. */
table.jt-rv-row-opens th.jt-rv-actions-col,
table.jt-rv-row-opens td.jt-rv-actions-col { display: none !important; }
table.jt-rv-row-opens tbody tr { cursor: pointer; }

/* Dashboard tiles: white cards; the stage colour is only in the icon, and the
   figure turns red when something needs attention. */
.jt-tile.jt-tile--stage {
	border: 1px solid var(--nx-border) !important; border-top: 1px solid var(--nx-border) !important;
	background: var(--nx-surface) !important;
}
.jt-tile.jt-tile--stage:hover { background: var(--nx-surface) !important; border-color: var(--nx-border-strong) !important; box-shadow: 0 4px 14px -6px rgba(16, 24, 40, .12) !important; }
.jt-tile.jt-tile--stage .jt-tile__icon { background: var(--jt-stage-tint-2) !important; }
.jt-tile.jt-tile--stage .jt-tile__icon i { color: var(--jt-stage) !important; }
.jt-tile.jt-tile--stage .jt-tile__value { color: var(--nx-text) !important; font-weight: 650 !important; }
.jt-tile.jt-tile--stage.jt-stage--red .jt-tile__value { color: var(--jt-stage) !important; }
.jt-tile.jt-tile--stage .jt-tile__label { color: var(--nx-text-2) !important; font-weight: 500 !important; }
/* A short form on a wide card keeps a readable width. */
.jt-form-narrow { max-width: 880px; margin: 0 auto; }
/* One View button: opens the record. Tinted so it reads as a button, quieter than a save. */
.btn.jt-btn-view, .table td .btn.jt-btn-view {
	background: var(--nx-accent-tint) !important; border: 1px solid var(--nx-accent-tint-border) !important;
	color: var(--nx-accent) !important; font-weight: 600 !important; min-height: 32px; padding: 0 14px !important;
}
.btn.jt-btn-view:hover, .table td .btn.jt-btn-view:hover { background: var(--nx-accent) !important; border-color: var(--nx-accent) !important; color: #fff !important; }
.jt-rv__actions .btn.jt-btn-view { min-height: 40px; padding: 0 18px !important; }

/* Long Add dialogs (master data): fields two to a row in a wider dialog, so the
   dialog is shorter. Addresses, section headings and the actions span the row. */
.jt-modal-grid { display: grid !important; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 20px; row-gap: 16px; align-items: start; }
.jt-modal-grid > br, .jt-modal-grid > hr { display: none !important; }
.jt-modal-grid > [class*="col-"] { padding: 0 !important; max-width: none !important; width: auto !important; flex: none !important; }
.jt-modal-grid > [class*="col-"]:has(textarea),
.jt-modal-grid > h5, .jt-modal-grid > h6, .jt-modal-grid > p, .jt-modal-grid > .alert,
.jt-modal-grid > .modal-footer, .jt-modal-grid > .jt-span-2 { grid-column: 1 / -1; }
.jt-modal-grid > h6, .jt-modal-grid > h5 {
	margin: 4px 0 -4px !important; padding-top: 16px; border-top: 1px solid var(--nx-border);
	font-size: 12px !important; font-weight: 600 !important; letter-spacing: .04em; text-transform: uppercase; color: var(--nx-text-3) !important;
}
.jt-modal-grid > .modal-footer { margin: 4px -20px -20px !important; }
.jt-modal-grid label { margin-bottom: 6px; }
@media (max-width: 767.98px) { .jt-modal-grid { grid-template-columns: minmax(0, 1fr); } }

/* Avatars in lists: the accent tint with the initial in the accent, not a dark disc. */
.table .symbol.symbol-circle.symbol-primary > .symbol-label {
	background: var(--nx-accent-tint) !important; color: var(--nx-accent) !important;
	width: 36px !important; height: 36px !important; font-size: 13px !important; font-weight: 600 !important;
}

/* File inputs: the browser's own button, drawn as the app's secondary button. */
input[type="file"] { font-size: 13px; color: var(--nx-text-2); max-width: 100%; }
input[type="file"]::file-selector-button {
	margin-right: 12px; padding: 8px 14px; border-radius: 8px; cursor: pointer;
	border: 1px solid var(--nx-border); background: var(--nx-surface); color: var(--nx-text);
	font: inherit; font-weight: 550; transition: background-color .14s ease, border-color .14s ease;
}
input[type="file"]::file-selector-button:hover { background: var(--nx-surface-2); border-color: var(--nx-border-strong); }

/* REQ-0003: find a container on Update Haulage, Stage 2. */
.jt-con-search { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin: 0 0 18px; padding: 14px 16px; background: var(--nx-surface); border: 1px solid var(--nx-border); border-radius: 12px; }
.jt-con-search__field { position: relative; flex: 1 1 280px; max-width: 460px; }
.jt-con-search__field i { position: absolute; left: 14px; top: 50%; transform: translateY(-50%); color: var(--nx-text-3); font-size: 15px; pointer-events: none; }
.jt-con-search__field .form-control { padding-left: 40px !important; }
.jt-con-search .btn { min-height: 40px; padding: 0 18px !important; }
.jt-con-search__count { color: var(--nx-text-2); font-size: 13px; margin-left: auto; }
@media (max-width: 575.98px) { .jt-con-search__field { max-width: none; flex-basis: 100%; } .jt-con-search .btn { flex: 1; } .jt-con-search__count { margin-left: 0; width: 100%; } }

/* =====================================================================
   46. Badges and row-panel actions (19/10/2026).
   ===================================================================== */
/* One badge size everywhere: in tables, cards and the row panel (the panel
   showed them at 9px, as plain text). */
.label:not(.label-dot):not(:empty), .badge:not(:empty) {
	font-size: 12px !important; font-weight: 600 !important; line-height: 1 !important;
	height: 24px !important; padding: 0 10px !important;
	display: inline-flex !important; align-items: center; gap: 5px; white-space: nowrap;
}
/* A tag such as the module (Import, Export, Haulage) is a neutral chip; the
   faint orange tint read as washed out. */
.label.label-light-primary, .badge-light-primary {
	background: #F2F4F7 !important; color: #344054 !important; box-shadow: inset 0 0 0 1px #E4E7EC;
}
/* Row panel and the other side panels: actions centred, full-size, spaced. */
.jt-rv__actions {
	justify-content: center !important; align-items: center; gap: 12px !important;
	padding: 18px 24px !important; background: var(--nx-surface) !important;
}
.jt-rv__actions > form, .jt-rv__actions > a, .jt-rv__actions > button { margin: 0 !important; }
.jt-rv__actions .btn, .jt-rv__actions .btn.jt-btn-view {
	min-width: 160px; min-height: 44px !important; padding: 0 24px !important;
	font-size: 14px !important; display: inline-flex !important; align-items: center; justify-content: center; gap: 8px;
}
@media (max-width: 575.98px) { .jt-rv__actions > *, .jt-rv__actions .btn { flex: 1 1 100%; min-width: 0; } }

/* =====================================================================
   48. Client reports (admin/client_reports.php): the client list with an
   on/off switch per client, the send history, and one client's report
   (settings beside a live preview of the email).
   ===================================================================== */
.jt-crx { max-width: 1240px; margin: 0 auto; padding: 4px 0 40px; }
.jt-crx-muted { color: var(--nx-text-3); font-size: 12.5px; }
.jt-crx-pagehead { margin-bottom: 18px; }
.jt-crx-pagehead__title { font-size: 20px !important; font-weight: 700 !important; letter-spacing: -0.01em; color: var(--nx-text) !important; margin: 0 0 4px !important; }
.jt-crx-pagehead__sub { margin: 0; font-size: 13.5px; color: var(--nx-text-2); display: flex; flex-wrap: wrap; align-items: center; gap: 4px 10px; }
.jt-crx-stats { margin-bottom: 18px; }
a.jt-stat { text-decoration: none !important; }

.jt-crx-card { background: var(--nx-surface); border: 1px solid var(--nx-border); border-radius: 12px; box-shadow: var(--nx-shadow); overflow: hidden; }
.jt-crx-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; padding: 0 16px 0 8px; border-bottom: 1px solid var(--nx-border); }
.jt-crx-tabs { display: flex; gap: 4px; }
.jt-crx-tab { position: relative; display: inline-flex; align-items: center; height: 52px; padding: 0 12px; font-size: 13.5px; font-weight: 600; color: var(--nx-text-2) !important; text-decoration: none !important; }
.jt-crx-tab:hover { color: var(--nx-text) !important; }
.jt-crx-tab.is-active { color: var(--nx-text) !important; }
.jt-crx-tab.is-active::after { content: ""; position: absolute; left: 12px; right: 12px; bottom: -1px; height: 2px; border-radius: 2px; background: var(--nx-accent); }
.jt-crx-toolbar__right { display: flex; align-items: center; gap: 10px; padding: 8px 0; flex-wrap: wrap; }
.jt-crx-seg { display: inline-flex; padding: 3px; gap: 2px; background: var(--nx-page); border: 1px solid var(--nx-border); border-radius: 9px; }
.jt-crx-seg__btn { display: inline-flex; align-items: center; gap: 6px; height: 30px; padding: 0 12px; border-radius: 7px; font-size: 13px; font-weight: 600; color: var(--nx-text-2) !important; text-decoration: none !important; cursor: pointer; margin: 0; white-space: nowrap; }
.jt-crx-seg__btn span { font-size: 11.5px; font-weight: 600; color: var(--nx-text-3); }
.jt-crx-seg__btn.is-active, .jt-crx-seg__btn:has(input:checked) { background: var(--nx-surface); color: var(--nx-text) !important; box-shadow: 0 1px 2px rgba(16, 24, 40, .08), 0 0 0 1px var(--nx-border); }
.jt-crx-seg__btn input { position: absolute; opacity: 0; pointer-events: none; }
.jt-crx-seg__btn:has(input:focus-visible) { box-shadow: var(--nx-ring); }
.jt-crx-search { position: relative; }
.jt-crx-search .jt-icon { position: absolute; left: 11px; top: 50%; transform: translateY(-50%); width: 15px; height: 15px; color: var(--nx-text-3); pointer-events: none; }
.jt-crx-search input { width: 240px; height: 38px; padding: 0 12px 0 34px; border: 1px solid var(--nx-border); border-radius: 8px; font-size: 13.5px; background: var(--nx-surface); color: var(--nx-text); outline: none; }
.jt-crx-search input:focus { border-color: var(--nx-accent); box-shadow: var(--nx-ring); }

/* The client list: one grid row per client. */
.jt-crx-list { display: block; }
.jt-crx-row { display: grid; grid-template-columns: minmax(220px, 2.2fr) minmax(130px, 1.1fr) minmax(150px, 1.4fr) minmax(140px, 1.2fr) 96px 120px; align-items: center; gap: 16px; padding: 12px 20px; border-bottom: 1px solid #EEF0F3; }
.jt-crx-row:last-child { border-bottom: 0; }
.jt-crx-row[data-href] { cursor: pointer; transition: background-color .12s; }
.jt-crx-row[data-href]:hover { background: #FAFBFC; }
.jt-crx-row:target { background: var(--nx-accent-tint); }
.jt-crx-row--head { padding-top: 10px; padding-bottom: 10px; background: var(--nx-page); font-size: 11.5px; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; color: var(--nx-text-3); }
.jt-crx-cell { font-size: 13.5px; color: var(--nx-text); min-width: 0; display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.jt-crx-c-switch { justify-content: center; text-align: center; }
.jt-crx-client { display: flex; align-items: center; gap: 12px; min-width: 0; }
.jt-crx-client__text { display: flex; flex-direction: column; min-width: 0; }
.jt-crx-client__name { font-size: 14px; font-weight: 600; color: var(--nx-text) !important; text-decoration: none !important; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.jt-crx-client__name:hover { color: var(--nx-accent) !important; }
.jt-crx-avatar { flex: 0 0 36px; width: 36px; height: 36px; border-radius: 10px; display: inline-flex; align-items: center; justify-content: center; background: var(--nx-slate-tint); color: var(--nx-slate); font-weight: 700; font-size: 14px; }
.jt-crx-row.is-on .jt-crx-avatar { background: var(--nx-accent-tint); color: var(--nx-accent); }
.jt-crx-avatar--lg { flex-basis: 52px; width: 52px; height: 52px; border-radius: 14px; font-size: 20px; background: var(--nx-accent-tint); color: var(--nx-accent); }
.jt-crx-ellipsis { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 100%; }
.jt-crx-more { flex: none; height: 20px; padding: 0 7px; border-radius: 999px; background: var(--nx-page); border: 1px solid var(--nx-border); font-size: 11.5px; font-weight: 600; color: var(--nx-text-2); display: inline-flex; align-items: center; }
.jt-crx-last { font-weight: 600; font-size: 13px; }
.jt-crx-last.is-ok { color: var(--nx-green); }
.jt-crx-last.is-muted { color: var(--nx-text-2); }
.jt-crx-flag { display: inline-flex; align-items: center; gap: 5px; height: 24px; padding: 0 9px; border-radius: 999px; background: var(--nx-amber-tint); color: #B45309; font-size: 12px; font-weight: 600; white-space: nowrap; }
.jt-crx-flag .jt-icon { width: 13px; height: 13px; }
.jt-crx-pill { display: inline-flex; align-items: center; gap: 6px; height: 24px; padding: 0 10px; border-radius: 999px; font-size: 12px; font-weight: 600; }
.jt-crx-pill::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: currentColor; }
.jt-crx-pill.is-on { background: var(--nx-green-tint); color: #087443; }
.jt-crx-pill.is-off { background: var(--nx-page); color: var(--nx-text-2); box-shadow: inset 0 0 0 1px var(--nx-border); }
.jt-crx-inline { display: inline-flex; margin: 0; }
.jt-crx-actions { display: flex; align-items: center; justify-content: flex-end; gap: 4px; }
.jt-crx-icon { width: 34px; height: 34px; display: inline-flex; align-items: center; justify-content: center; border-radius: 8px; border: 1px solid transparent; background: transparent; color: var(--nx-text-2) !important; cursor: pointer; transition: background-color .12s, color .12s, border-color .12s; padding: 0; }
.jt-crx-icon .jt-icon { width: 17px; height: 17px; }
.jt-crx-icon:hover:not(:disabled) { background: var(--nx-accent-tint); border-color: var(--nx-accent-tint-border); color: var(--nx-accent) !important; }
.jt-crx-icon:disabled { opacity: .35; cursor: not-allowed; }
.jt-crx-icon:focus-visible { outline: none; box-shadow: var(--nx-ring); }
.jt-crx-empty { padding: 24px; }

/* The on/off switch (a button in the list, a checkbox on a client's page). */
.jt-toggle { position: relative; display: inline-flex; flex: none; width: 40px; height: 22px; padding: 0; border: 0; border-radius: 999px; background: #D5D9E0; cursor: pointer; transition: background-color .18s; }
.jt-toggle__knob { position: absolute; top: 2px; left: 2px; width: 18px; height: 18px; border-radius: 50%; background: #fff; box-shadow: 0 1px 3px rgba(16, 24, 40, .25); transition: transform .18s var(--nx-ease, ease); }
.jt-toggle.is-on, .jt-toggle-input:checked + .jt-toggle { background: var(--nx-green); }
.jt-toggle.is-on .jt-toggle__knob, .jt-toggle-input:checked + .jt-toggle .jt-toggle__knob { transform: translateX(18px); }
.jt-toggle:focus-visible, .jt-toggle-input:focus-visible + .jt-toggle { outline: none; box-shadow: 0 0 0 3px rgba(18, 161, 80, .2); }
.jt-toggle-input { position: absolute; opacity: 0; width: 1px; height: 1px; pointer-events: none; }
fieldset:disabled .jt-toggle { opacity: .55; cursor: not-allowed; }

/* History */
.jt-crx-log { list-style: none; margin: 0; padding: 0; }
.jt-crx-log--page { padding: 4px 0; }
.jt-crx-log__item { display: flex; gap: 12px; padding: 12px 0; border-bottom: 1px solid #EEF0F3; }
.jt-crx-log--page .jt-crx-log__item { padding: 13px 20px; }
.jt-crx-log__item:last-child { border-bottom: 0; }
.jt-crx-log__dot { flex: 0 0 8px; width: 8px; height: 8px; border-radius: 50%; margin-top: 7px; background: var(--nx-text-3); }
.jt-crx-log__dot.is-ok { background: var(--nx-green); box-shadow: 0 0 0 3px var(--nx-green-tint); }
.jt-crx-log__dot.is-bad { background: var(--nx-red); box-shadow: 0 0 0 3px var(--nx-red-tint); }
.jt-crx-log__body { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.jt-crx-log__title { font-size: 13.5px; font-weight: 600; color: var(--nx-text); }
.jt-crx-log__title a { color: var(--nx-text) !important; }
.jt-crx-log__title a:hover { color: var(--nx-accent) !important; }
.jt-crx-log__sep { color: var(--nx-text-3); margin: 0 6px; font-weight: 400; }
.jt-crx-log__meta { font-size: 12px; color: var(--nx-text-3); }
.jt-crx-log__to { font-size: 12.5px; color: var(--nx-text-2); overflow-wrap: anywhere; }

/* Preview panel from the list */
.jt-crx-drawer .jt-drawer__panel { width: min(760px, 100%); }
.jt-crx-drawer .jt-drawer__close .jt-icon { width: 18px; height: 18px; }
.jt-crx-drawer__frame { flex: 1 1 auto; background: var(--nx-page); }
.jt-crx-drawer__frame iframe { width: 100%; height: 100%; border: 0; display: block; }
.jt-crx-drawer__foot { padding: 14px 24px; border-top: 1px solid var(--nx-border); display: flex; justify-content: flex-end; }
.jt-crx-drawer__foot .btn { min-height: 40px; padding: 0 18px !important; }

/* One client's report */
.jt-crx-detailhead { display: flex; align-items: center; gap: 16px; margin-bottom: 20px; }
.jt-crx-detailhead__text { flex: 1 1 auto; min-width: 0; }
.jt-crx-detailhead__actions { margin: 0; }
.jt-crx-btn { display: inline-flex !important; align-items: center; gap: 8px; min-height: 40px; padding: 0 16px !important; }
.jt-crx-btn .jt-icon { width: 16px; height: 16px; }
.jt-crx-grid { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); gap: 20px; align-items: start; }
.jt-crx-form fieldset { border: 0; margin: 0; padding: 0; min-width: 0; display: flex; flex-direction: column; gap: 16px; }
.jt-crx-section { display: flex; flex-direction: column; gap: 4px; background: var(--nx-surface); border: 1px solid var(--nx-border); border-radius: 12px; padding: 18px 20px; box-shadow: var(--nx-shadow); }
.jt-crx-section__title { font-size: 14.5px !important; font-weight: 650 !important; color: var(--nx-text) !important; margin: 0 !important; }
.jt-crx-switchrow { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin: 0 !important; cursor: pointer; font-weight: 400 !important; }
.jt-crx-switchrow > span:first-child { display: flex; flex-direction: column; gap: 2px; }
.jt-crx-switchrow--sm { padding: 12px 0; border-top: 1px solid #EEF0F3; }
.jt-crx-option__title { font-size: 13.5px; font-weight: 600; color: var(--nx-text); }
.jt-crx-options { margin-top: 8px; }
.jt-crx-schedule { display: grid; grid-template-columns: 140px minmax(0, 1fr); gap: 16px; margin-top: 16px; padding-top: 16px; border-top: 1px solid #EEF0F3; }
.jt-crx-field { display: flex; flex-direction: column; gap: 6px; }
.jt-crx-field label, .jt-crx-label { font-size: 12.5px !important; font-weight: 600 !important; color: var(--nx-text-2) !important; margin: 0 !important; }
.jt-crx-field .form-control { height: 40px; }
.jt-crx-seg--field { align-self: flex-start; }
.jt-crx-seg--field .jt-crx-seg__btn { height: 32px; position: relative; }
.jt-crx-hint { margin: 10px 0 0; font-size: 12.5px; color: var(--nx-text-3); }
.jt-crx-section textarea.form-control { margin-top: 10px; min-height: 84px; }
.jt-crx-error { margin-top: 8px; font-size: 12.5px; color: var(--nx-red); font-weight: 500; }

/* Recipients as chips */
.jt-chips { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; min-height: 44px; margin-top: 10px; padding: 6px 8px; border: 1px solid var(--nx-border); border-radius: 8px; background: var(--nx-surface); cursor: text; transition: border-color .14s, box-shadow .14s; }
.jt-chips:focus-within { border-color: var(--nx-accent); box-shadow: var(--nx-ring); }
.jt-chips.is-invalid { border-color: var(--nx-red); }
.jt-chip { display: inline-flex; align-items: center; gap: 4px; height: 28px; padding: 0 4px 0 10px; border-radius: 6px; background: var(--nx-page); border: 1px solid var(--nx-border); font-size: 13px; color: var(--nx-text); max-width: 100%; }
.jt-chip.is-bad { background: var(--nx-red-tint); border-color: #F7CFD0; color: #B42318; }
.jt-chip__x { width: 20px; height: 20px; border: 0; border-radius: 4px; background: transparent; color: var(--nx-text-3); font-size: 16px; line-height: 1; cursor: pointer; padding: 0; }
.jt-chip__x:hover { background: rgba(16, 24, 40, .06); color: var(--nx-text); }
.jt-chips__input { flex: 1 1 180px; min-width: 140px; height: 30px; border: 0; outline: none; font-size: 13.5px; color: var(--nx-text); background: transparent; }
.jt-crx-suggest { margin-top: 12px; }
.jt-crx-suggest__list { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 6px; }
.jt-crx-suggest__add, .jt-crx-suggest__all { height: 28px; padding: 0 10px; border-radius: 6px; border: 1px dashed var(--nx-border-strong); background: var(--nx-surface); font-size: 12.5px; color: var(--nx-text-2); cursor: pointer; }
.jt-crx-suggest__add:hover { border-color: var(--nx-accent); color: var(--nx-accent); border-style: solid; }
.jt-crx-suggest__all { border-style: solid; font-weight: 600; color: var(--nx-accent); border-color: var(--nx-accent-tint-border); background: var(--nx-accent-tint); }

/* Save bar: stays at the bottom of the screen while the form is in view. */
.jt-crx-savebar { position: sticky; bottom: 12px; z-index: 5; display: flex; align-items: center; justify-content: flex-end; gap: 10px; margin-top: 16px; padding: 10px 12px 10px 18px; background: var(--nx-surface); border: 1px solid var(--nx-border); border-radius: 12px; box-shadow: var(--nx-shadow-lg); }
.jt-crx-savebar__state { margin-right: auto; font-size: 13px; color: var(--nx-text-3); display: inline-flex; align-items: center; gap: 8px; }
.jt-crx-savebar__state::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: var(--nx-green); }
.jt-crx-savebar.is-dirty .jt-crx-savebar__state { color: var(--nx-text); font-weight: 600; }
.jt-crx-savebar.is-dirty .jt-crx-savebar__state::before { background: var(--nx-amber); }
.jt-crx-savebar .btn { min-height: 40px; padding: 0 18px !important; }
.jt-crx-savebar:not(.is-dirty) #jtCrDiscard { display: none; }

/* Preview beside the form */
.jt-crx-side { position: sticky; top: 148px; display: flex; flex-direction: column; gap: 16px; }
.jt-crx-preview { padding: 0; overflow: hidden; }
.jt-crx-preview__head { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; padding: 14px 20px; border-bottom: 1px solid var(--nx-border); }
.jt-crx-preview__frame { background: var(--nx-page); height: max(420px, calc(100vh - 300px)); }
.jt-crx-preview__frame iframe { width: 100%; height: 100%; border: 0; display: block; }

@media (max-width: 1199.98px) {
	.jt-crx-list--clients .jt-crx-row { grid-template-columns: minmax(200px, 2fr) minmax(120px, 1fr) minmax(130px, 1.2fr) 80px 116px; }
	.jt-crx-list--clients .jt-crx-row > :nth-child(4) { display: none; }
	.jt-crx-grid { grid-template-columns: minmax(0, 1fr); }
	.jt-crx-side { position: static; }
}
@media (max-width: 767.98px) {
	.jt-crx-toolbar { padding: 0 12px; }
	.jt-crx-toolbar__right { width: 100%; }
	.jt-crx-search, .jt-crx-search input { width: 100%; flex: 1 1 100%; }
	.jt-crx-row--head { display: none; }
	.jt-crx-row { grid-template-columns: minmax(0, 1fr) auto; gap: 8px 12px; padding: 14px 16px; }
	.jt-crx-row > .jt-crx-client { grid-column: 1; }
	.jt-crx-row > .jt-crx-c-switch { grid-column: 2; grid-row: 1; }
	.jt-crx-row > .jt-crx-cell:not(.jt-crx-c-switch) { grid-column: 1 / -1; padding-left: 48px; font-size: 12.5px; }
	.jt-crx-row > .jt-crx-cell:not(.jt-crx-c-switch)::before { content: attr(data-label); color: var(--nx-text-3); min-width: 82px; }
	.jt-crx-list--clients .jt-crx-row > :nth-child(4) { display: flex; }
	.jt-crx-row > .jt-crx-actions { grid-column: 1 / -1; padding-left: 40px; justify-content: flex-start; }
	.jt-crx-detailhead { flex-wrap: wrap; }
	.jt-crx-detailhead__actions { width: 100%; }
	.jt-crx-detailhead__actions .btn { width: 100%; justify-content: center; }
	.jt-crx-schedule { grid-template-columns: minmax(0, 1fr); }
	.jt-crx-preview__frame { height: 70vh; }
	.jt-crx-savebar { bottom: 8px; }
	.jt-crx-drawer__foot .btn { width: 100%; justify-content: center; }
}

/* Client reports, refinements (20/10/2026): tabs aligned with the list, a
   Manage button, outlined icon buttons, rounder corners, tablet and phone. */
.jt-crx-stats { border-radius: 14px !important; }
.jt-crx-card, .jt-crx-section { border-radius: 14px; }
.jt-crx-toolbar { padding: 0 20px; gap: 16px; }
.jt-crx-tabs { gap: 24px; }
.jt-crx-tab { height: 56px; padding: 0 2px; font-size: 14px; }
.jt-crx-tab.is-active::after { left: 0; right: 0; height: 2px; }
.jt-crx-toolbar__right { padding: 10px 0; }
.jt-crx-seg { border-radius: 10px; }
.jt-crx-seg__btn { border-radius: 8px; height: 32px; padding: 0 14px; }
.jt-crx-search input { border-radius: 10px; height: 40px; }
.jt-crx-list--clients .jt-crx-row { grid-template-columns: minmax(220px, 2.2fr) minmax(130px, 1.1fr) minmax(150px, 1.4fr) minmax(140px, 1.2fr) 72px 188px; padding: 14px 20px; }
.jt-crx-row--head { padding-top: 11px; padding-bottom: 11px; }
.jt-crx-c-actions { text-align: right; }
.jt-crx-avatar { border-radius: 12px; }
.jt-crx-icon { width: 36px; height: 36px; border-radius: 10px; border: 1px solid var(--nx-border); background: var(--nx-surface); color: var(--nx-text-2) !important; box-shadow: 0 1px 2px rgba(16, 24, 40, .04); }
.jt-crx-icon .jt-icon { width: 16px; height: 16px; }
.jt-crx-icon:disabled { opacity: .45; background: var(--nx-page); box-shadow: none; }
.jt-crx-actions { gap: 8px; }
.jt-crx-manage { display: inline-flex; align-items: center; gap: 7px; height: 36px; padding: 0 14px; border-radius: 10px; border: 1px solid var(--nx-border); background: var(--nx-surface); color: var(--nx-text) !important; font-size: 13px; font-weight: 600; text-decoration: none !important; white-space: nowrap; box-shadow: 0 1px 2px rgba(16, 24, 40, .04); transition: background-color .12s, border-color .12s, color .12s; }
.jt-crx-manage .jt-icon { width: 15px; height: 15px; color: var(--nx-text-2); }
.jt-crx-manage:hover { border-color: var(--nx-accent-tint-border); background: var(--nx-accent-tint); color: var(--nx-accent) !important; }
.jt-crx-manage:hover .jt-icon { color: var(--nx-accent); }
.jt-crx-manage:focus-visible { outline: none; box-shadow: var(--nx-ring); }
.jt-crx-btn { border-radius: 10px !important; }
.jt-crx-savebar { border-radius: 14px; }
.jt-crx-savebar .btn, .jt-crx-drawer__foot .btn { border-radius: 10px !important; }
.jt-chips { border-radius: 10px; }
.jt-chip { border-radius: 8px; }
.jt-crx-section textarea.form-control, .jt-crx-field .form-control { border-radius: 10px !important; }
.jt-crx-preview__frame { border-radius: 0 0 14px 14px; overflow: hidden; }
.jt-crx-history { margin-top: 20px; }
.jt-crx-side { top: 148px; }
@media (max-width: 1199.98px) {
	.jt-crx-list--clients .jt-crx-row { grid-template-columns: minmax(200px, 2fr) minmax(120px, 1fr) minmax(130px, 1.2fr) 64px 180px; }
}
@media (max-width: 991.98px) {
	.jt-crx-toolbar { flex-direction: column; align-items: stretch; gap: 0; }
	.jt-crx-toolbar__right { justify-content: space-between; border-top: 1px solid var(--nx-border); padding: 12px 0; }
	.jt-crx-search { flex: 1 1 220px; }
	.jt-crx-search input { width: 100%; }
	.jt-crx-list--clients .jt-crx-row { grid-template-columns: minmax(180px, 2fr) minmax(120px, 1fr) 64px 176px; }
	.jt-crx-list--clients .jt-crx-row > :nth-child(3) { display: none; }
}
@media (max-width: 767.98px) {
	.jt-crx-toolbar { padding: 0 16px; }
	.jt-crx-tabs { gap: 20px; }
	.jt-crx-toolbar__right { flex-direction: column; align-items: stretch; gap: 10px; }
	.jt-crx-seg { align-self: flex-start; }
	.jt-crx-row { grid-template-columns: minmax(0, 1fr) auto; }
	.jt-crx-list--clients .jt-crx-row > :nth-child(3) { display: flex; }
	.jt-crx-row > .jt-crx-actions { padding-left: 48px; gap: 8px; }
	.jt-crx-row > .jt-crx-actions .jt-crx-manage { margin-left: auto; }
	/* The actions take the row's full width and wrap, so Manage stays on screen
	   (it was pushed past the right edge and clipped on a phone). */
	.jt-crx-list .jt-crx-row > .jt-crx-actions { grid-column: 1 / -1; min-width: 0; max-width: 100%; flex-wrap: wrap; }
	/* The clients list kept its tablet grid (180 + 120 + 64 + 176px) on a phone, the
	   tablet rule being the more specific: the row was 576px wide on a 390px screen. */
	.jt-crx-list--clients .jt-crx-row { grid-template-columns: minmax(0, 1fr) auto; }
	.jt-crx-history { margin-top: 16px; }
}
/* Client reports: tablet widths keep the schedule, switch and actions only;
   the phone search box sizes to its content; small, quiet motion. */
@media (min-width: 768px) and (max-width: 1199.98px) {
	.jt-crx-list--clients .jt-crx-row { grid-template-columns: minmax(180px, 2fr) minmax(110px, 1fr) 56px 176px; gap: 14px; }
	.jt-crx-list--clients .jt-crx-row > :nth-child(3), .jt-crx-list--clients .jt-crx-row > :nth-child(4) { display: none; }
}
@media (max-width: 767.98px) {
	.jt-crx-toolbar__right .jt-crx-search { flex: 0 0 auto; width: 100%; }
}
.jt-crx-row[data-href] { position: relative; }
.jt-crx-row[data-href]::before { content: ""; position: absolute; left: 0; top: 10px; bottom: 10px; width: 3px; border-radius: 0 3px 3px 0; background: var(--nx-accent); opacity: 0; transform: scaleY(.4); transition: opacity .16s ease, transform .16s ease; }
.jt-crx-row[data-href]:hover::before { opacity: 1; transform: none; }
.jt-crx-row.is-on[data-href]::before { background: var(--nx-green); }
.jt-crx-icon, .jt-crx-manage, .jt-crx-seg__btn, .jt-crx-tab { transition: background-color .14s ease, border-color .14s ease, color .14s ease, box-shadow .14s ease, transform .08s ease; }
.jt-crx-icon:active:not(:disabled), .jt-crx-manage:active { transform: translateY(1px); }
.jt-crx-section { transition: border-color .16s ease, box-shadow .16s ease; }
.jt-crx-section:focus-within { border-color: var(--nx-border-strong); box-shadow: var(--nx-shadow-md); }
.jt-crx-savebar { transition: box-shadow .2s ease, border-color .2s ease; }
.jt-crx-savebar.is-dirty { border-color: var(--nx-accent-tint-border); box-shadow: 0 12px 32px -10px rgba(242, 106, 27, .28); }
@keyframes jtCrxIn { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }
.jt-crx > * { animation: jtCrxIn .28s var(--nx-ease, ease) both; }
.jt-crx > *:nth-child(2) { animation-delay: .04s; }
.jt-crx > *:nth-child(3) { animation-delay: .08s; }
.jt-crx > *:nth-child(4) { animation-delay: .12s; }
@media (prefers-reduced-motion: reduce) { .jt-crx > * { animation: none; } .jt-crx-row[data-href]::before { transition: none; } }
.jt-crx-icon, .jt-crx-manage, .jt-crx-actions > form { flex: none; }
/* Shared pieces for lists in the client reports format. */
.jt-crx-cell--stack { flex-direction: column; align-items: flex-start; gap: 2px; flex-wrap: nowrap; }
.jt-crx-cell--stack > * { max-width: 100%; }
.jt-crx-avatar--icon .jt-icon { width: 17px; height: 17px; }
.jt-crx-avatar--icon.is-ok { background: var(--nx-green-tint); color: var(--nx-green); }
.jt-crx-avatar--icon.is-warn { background: var(--nx-amber-tint); color: #B45309; }
.jt-crx-manage.is-primary { background: var(--nx-accent); border-color: var(--nx-accent); color: #fff !important; }
.jt-crx-manage.is-primary .jt-icon { color: #fff; }
.jt-crx-manage.is-primary:hover { background: var(--nx-accent-hover); border-color: var(--nx-accent-hover); color: #fff !important; }
.jt-crx-manage.is-primary:hover .jt-icon { color: #fff; }
.jt-crx-toolbar > .jt-crx-seg { margin: 10px 0; }
/* Final invoice requests */
.jt-crx-list--fi .jt-crx-row { grid-template-columns: minmax(180px, 1.5fr) minmax(180px, 1.8fr) minmax(120px, 1fr) minmax(180px, 1.6fr) 168px; }
@media (min-width: 768px) and (max-width: 1199.98px) {
	.jt-crx-list--fi .jt-crx-row { grid-template-columns: minmax(160px, 1.4fr) minmax(150px, 1.6fr) minmax(160px, 1.4fr) 156px; }
	.jt-crx-list--fi .jt-crx-row > :nth-child(3) { display: none; }
}
@media (max-width: 767.98px) {
	.jt-crx-list--fi .jt-crx-row { grid-template-columns: minmax(0, 1fr); }
	.jt-crx-list--fi .jt-crx-row > .jt-crx-cell { padding-left: 48px; }
	.jt-crx-list--fi .jt-crx-row > .jt-crx-cell::before { display: none; }
	.jt-crx-list--fi .jt-crx-row > .jt-crx-actions { padding-left: 48px; justify-content: flex-start; }
	.jt-crx-toolbar > .jt-crx-seg { align-self: flex-start; }
}
.jt-crx-card > .jt-empty-state { margin: 24px; }
/* Sprint 6 pages in the client reports format (partials/s6b_open.php). */
.jt-crx-pagehead--actions { display: flex; align-items: flex-end; justify-content: space-between; gap: 16px; flex-wrap: wrap; }
.jt-crx-pagehead__actions { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.jt-crx-pagehead__actions form { margin: 0 !important; }
.jt-crx-pagehead__actions .btn { display: inline-flex !important; align-items: center; gap: 8px; min-height: 40px; padding: 0 16px !important; border-radius: 10px !important; font-size: 13px !important; margin: 0 !important; }
.jt-crx-pagehead__actions .btn .jt-icon { width: 16px; height: 16px; }
.jt-s6 .jt-crx-card .jt-s6__wrap { border: 0; border-radius: 0; }
.jt-s6 .jt-s6__table th { background: var(--nx-page); font-size: 11.5px; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; color: var(--nx-text-3); padding: 11px 20px; border-bottom: 1px solid var(--nx-border); }
.jt-s6 .jt-s6__table td { padding: 14px 20px; border-bottom: 1px solid #EEF0F3; font-size: 13.5px; color: var(--nx-text); }
.jt-s6 .jt-s6__table tbody tr { transition: background-color .12s; }
.jt-s6 .jt-s6__table tbody tr:hover { background: #FAFBFC; }
.jt-s6 .jt-s6__table small { color: var(--nx-text-3); font-size: 12px; }
.jt-s6 .jt-s6__table td .btn-sm { border-radius: 10px !important; min-height: 34px; }
.jt-s6 .jt-s6__table td .jt-crx-manage { height: 34px; }
.jt-s6 .jt-s6__tag { border-radius: 999px; font-weight: 600; height: 22px; display: inline-flex; align-items: center; padding: 0 9px; }
.jt-s6 .jt-crx-toolbar select.form-control { height: 38px; width: auto; min-width: 150px; border-radius: 10px !important; font-size: 13px !important; }
.jt-s6 .jt-s6__card { border-radius: 14px; border-color: var(--nx-border); background: var(--nx-surface); box-shadow: var(--nx-shadow); padding: 18px 20px; }
@media (max-width: 767.98px) {
	.jt-crx-pagehead__actions { width: 100%; }
	.jt-crx-pagehead__actions .btn, .jt-crx-pagehead__actions form { flex: 1 1 auto; justify-content: center; }
	.jt-s6 .jt-crx-toolbar select.form-control { flex: 1 1 140px; }
}
.jt-crx-toolbar__left { display: flex; align-items: center; gap: 10px; padding: 10px 0; flex-wrap: wrap; }
.jt-s6 > .jt-s6__wrap, .jt-s6 .jt-s6__wrap:not(.jt-crx-card .jt-s6__wrap) { border: 1px solid var(--nx-border); border-radius: 14px; background: var(--nx-surface); box-shadow: var(--nx-shadow); }
.jt-s6 h5 { font-size: 15px !important; font-weight: 650 !important; color: var(--nx-text) !important; margin: 4px 0 12px !important; }
.jt-crx-filterbar { margin-bottom: 18px; padding: 14px 20px 4px; }
.jt-crx-filterbar .btn { min-height: 40px; border-radius: 10px !important; }
.jt-crx-stats .jt-stat__label { white-space: normal; }

/* =====================================================================
   49. Detail pages and calm tables (jt-x): a record's header, badges, tabs
   with counts, a profile card, row actions that sit on one line, a ⋯ menu.
   ===================================================================== */
.jt-x-head { display: flex; align-items: center; gap: 16px; margin-bottom: 20px; flex-wrap: wrap; }
.jt-x-avatar { flex: 0 0 56px; width: 56px; height: 56px; border-radius: 16px; display: inline-flex; align-items: center; justify-content: center; background: var(--nx-accent-tint); color: var(--nx-accent); font-size: 19px; font-weight: 700; letter-spacing: .02em; }
.jt-x-head__text { flex: 1 1 260px; min-width: 0; }
.jt-x-head__title { font-size: 24px !important; font-weight: 700 !important; letter-spacing: -0.015em; color: var(--nx-text) !important; margin: 0 0 6px !important; }
.jt-x-head__meta { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; font-size: 13.5px; color: var(--nx-text-2); }
.jt-x-head__actions { display: flex; gap: 10px; flex-wrap: wrap; }
.jt-x-head__actions .btn { display: inline-flex !important; align-items: center; gap: 8px; min-height: 40px; padding: 0 16px !important; border-radius: 10px !important; }
.jt-x-head__actions .btn .jt-icon { width: 16px; height: 16px; }

.jt-x-badge { display: inline-flex; align-items: center; gap: 6px; height: 24px; padding: 0 10px; border-radius: 999px; font-size: 12px; font-weight: 600; white-space: nowrap; line-height: 1; }
.jt-x-badge::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: currentColor; }
.jt-x-badge.is-ok { background: var(--nx-green-tint); color: #087443; }
.jt-x-badge.is-warn { background: var(--nx-amber-tint); color: #B45309; }
.jt-x-badge.is-bad { background: var(--nx-red-tint); color: #B42318; }
.jt-x-badge.is-info { background: var(--nx-blue-tint); color: #1E50B8; }
.jt-x-badge.is-muted { background: var(--nx-page); color: var(--nx-text-2); box-shadow: inset 0 0 0 1px var(--nx-border); }

.jt-x-grid { display: grid; grid-template-columns: minmax(0, 1fr) 320px; gap: 20px; align-items: start; }
.jt-x-tabs { padding: 0 20px; }
.jt-x-count { display: inline-flex; align-items: center; justify-content: center; min-width: 20px; height: 20px; padding: 0 6px; margin-left: 6px; border-radius: 999px; background: var(--nx-page); color: var(--nx-text-2); font-size: 11.5px; font-weight: 600; }
.jt-crx-tab.is-active .jt-x-count { background: var(--nx-accent-tint); color: var(--nx-accent); }

.jt-x-strong { font-weight: 600; color: var(--nx-text) !important; }
a.jt-x-strong:hover { color: var(--nx-accent) !important; }
.jt-x-sub { display: block; margin-top: 2px; font-size: 12.5px; color: var(--nx-text-3); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 280px; }
.jt-x-muted { color: var(--nx-text-3); }
.jt-x-mono { font-variant-numeric: tabular-nums; letter-spacing: .02em; }
.jt-x-hint { margin: -4px 0 14px; font-size: 12.5px; color: var(--nx-text-3); }
.jt-x-actions-col { width: 1%; }
.jt-x-actions { white-space: nowrap; text-align: right; }
.jt-x-actions > * { display: inline-flex; vertical-align: middle; }
.jt-x-actions > * + * { margin-left: 8px; }
.jt-x-actions .jt-crx-manage .jt-icon { width: 15px; height: 15px; }
.jt-s6 .jt-s6__table td.jt-x-actions { padding-top: 10px; padding-bottom: 10px; }
.jt-s6__table .jt-x-total td { background: var(--nx-page); font-weight: 650; }

.jt-x-menu .dropdown-menu, .dropdown-menu.jt-x-menu__list { min-width: 200px; padding: 6px; border-radius: 12px; border: 1px solid var(--nx-border); box-shadow: var(--nx-shadow-lg); z-index: 1060; }
.jt-x-menu .dropdown-header, .jt-x-menu__list .dropdown-header { padding: 6px 10px 4px; font-size: 11px; font-weight: 600; letter-spacing: .05em; text-transform: uppercase; color: var(--nx-text-3); }
.jt-x-menu .dropdown-item, .jt-x-menu__list .dropdown-item { display: block; width: 100%; padding: 8px 10px; border: 0; border-radius: 8px; background: none; text-align: left; font-size: 13.5px; color: var(--nx-text); cursor: pointer; }
.jt-x-menu .dropdown-item:hover, .jt-x-menu__list .dropdown-item:hover { background: var(--nx-page); color: var(--nx-text); }
.jt-x-menu .dropdown-item.is-danger, .jt-x-menu__list .dropdown-item.is-danger { color: #B42318; }
.jt-x-menu .dropdown-item.is-danger:hover, .jt-x-menu__list .dropdown-item.is-danger:hover { background: var(--nx-red-tint); }
.jt-x-menu .dropdown-divider, .jt-x-menu__list .dropdown-divider { margin: 4px 0; }
.jt-x-menu .jt-icon, .jt-x-menu__list .jt-icon { width: 16px; height: 16px; }

.jt-x-profile { padding: 18px 20px; }
.jt-x-profile__head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px; }
.jt-x-profile__group { margin: 16px 0 4px; padding-top: 14px; border-top: 1px solid #EEF0F3; font-size: 11.5px; font-weight: 600; letter-spacing: .05em; text-transform: uppercase; color: var(--nx-text-3); }
.jt-x-dl { margin: 0; }
.jt-x-dl > div { display: flex; justify-content: space-between; gap: 12px; padding: 7px 0; }
.jt-x-dl dt { font-weight: 500; font-size: 13px; color: var(--nx-text-3); margin: 0; }
.jt-x-dl dd { margin: 0; font-size: 13.5px; color: var(--nx-text); text-align: right; overflow-wrap: anywhere; }
.jt-x-notes { margin: 6px 0 0; font-size: 13.5px; color: var(--nx-text-2); line-height: 1.55; }
.jt-x-link { border: 0; background: none; padding: 0; font-size: 13px; font-weight: 600; color: var(--nx-accent); cursor: pointer; }
.jt-x-link:hover { text-decoration: underline; }

.jt-x-pager { padding: 6px 20px 14px; }
.jt-x-range { display: flex; align-items: flex-end; gap: 12px; flex-wrap: wrap; padding: 16px 20px; border-bottom: 1px solid var(--nx-border); }
.jt-x-range__field { display: flex; flex-direction: column; gap: 6px; }
.jt-x-range__field label { font-size: 12.5px !important; font-weight: 600 !important; color: var(--nx-text-2) !important; margin: 0 !important; }
.jt-x-range__field .form-control { width: 150px; height: 40px; border-radius: 10px !important; }
.jt-x-range .btn { min-height: 40px; border-radius: 10px !important; display: inline-flex !important; align-items: center; gap: 8px; }
.jt-x-range .btn .jt-icon { width: 15px; height: 15px; }
.jt-x-range__downloads { margin-left: auto; display: flex; gap: 8px; }
.jt-x-range__note { margin: 0; padding: 14px 20px; font-size: 13.5px; color: var(--nx-text-2); }
.jt-x-alert { margin: 16px 20px; padding: 12px 14px; border-radius: 10px; background: var(--nx-amber-tint); color: #92400E; font-size: 13.5px; }
.jt-x-paysum { display: flex; justify-content: space-between; gap: 12px; padding: 12px 14px; margin-bottom: 16px; border-radius: 10px; background: var(--nx-page); font-size: 13.5px; color: var(--nx-text-2); }
.jt-x-paysum span:first-child { font-weight: 600; color: var(--nx-text); }

@media (max-width: 1199.98px) { .jt-x-grid { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 767.98px) {
	.jt-x-head__actions { width: 100%; }
	.jt-x-head__actions .btn { flex: 1 1 auto; justify-content: center; }
	.jt-x-range__downloads { margin-left: 0; width: 100%; }
	.jt-x-range__field { flex: 1 1 130px; }
	.jt-x-range__field .form-control { width: 100%; }
}
.jt-x-clickable tbody tr[data-href] { cursor: pointer; }
.jt-x-contact { display: inline-flex; align-items: center; gap: 5px; color: var(--nx-text-2) !important; }
.jt-x-contact .jt-icon { width: 14px; height: 14px; color: var(--nx-text-3); }
a.jt-x-contact:hover { color: var(--nx-accent) !important; }
.jt-x-profile .jt-x-dl { max-width: 560px; }
.jt-x-profile .jt-x-dl > div { justify-content: flex-start; }
.jt-x-profile .jt-x-dl dt { flex: 0 0 160px; }
.jt-x-profile .jt-x-dl dd { text-align: left; }
.jt-x-profile .jt-x-profile__group, .jt-x-profile .jt-x-notes { max-width: 560px; }
/* Phone: stat label under its figure, avatar beside the name not floating,
   tabs scroll sideways instead of clipping, and the Jobs table keeps the
   figure that matters (Outstanding); Agreed and Paid are on the Statement tab. */
@media (max-width: 575.98px) {
	.jt-crx-stats .jt-stat__top { flex-wrap: wrap; row-gap: 2px; }
	.jt-crx-stats .jt-stat__value { font-size: 1.2rem !important; }
	.jt-x-head { align-items: flex-start; gap: 12px; }
	.jt-x-avatar { flex-basis: 44px; width: 44px; height: 44px; border-radius: 12px; font-size: 15px; }
	.jt-x-head__title { font-size: 20px !important; }
	.jt-crx-tabs { overflow-x: auto; scrollbar-width: none; gap: 18px; }
	.jt-crx-tabs::-webkit-scrollbar { display: none; }
	.jt-crx-tab { white-space: nowrap; }
	.jt-x-hide-sm { display: none !important; }
	.jt-x-sub { max-width: 100%; white-space: normal; }
	/* A table marked jt-x-stack becomes one two-line card per row. */
	.jt-x-stack thead { display: none; }
	.jt-x-stack, .jt-x-stack tbody { display: block; }
	.jt-x-stack tbody tr { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 10px 12px; padding: 14px 16px; border-bottom: 1px solid #EEF0F3; }
	.jt-x-stack tbody tr:last-child { border-bottom: 0; }
	.jt-s6 .jt-x-stack tbody td { display: block; padding: 0; border: 0; text-align: left; }
	/* First cell top left, the cell marked __top top right, the rest after
	   in page order; a data-label names a figure that lost its column head. */
	.jt-x-stack tbody td { order: 2; }
	.jt-x-stack tbody td:first-child { order: 0; }
	.jt-x-stack tbody td.jt-x-stack__top { order: 1; justify-self: end; text-align: right; }
	.jt-x-stack tbody td.jt-x-stack__end { justify-self: end; text-align: right; }
	.jt-x-stack tbody td[data-label]::before { content: attr(data-label); display: block; font-size: 11.5px; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; color: var(--nx-text-3); margin-bottom: 4px; }
	.jt-x-stack td.jt-x-actions { justify-self: end; }
	.jt-x-stack td.jt-x-actions:empty { display: none; }
	.jt-x-stack td.jt-x-stack__full { grid-column: 1 / -1; justify-self: stretch; }
	.jt-x-stack td.jt-x-stack__full .jt-crx-manage { width: 100%; justify-content: center; }
}
/* Money cell: the amount, then its state as a badge. Dates and references
   (.jt-x-more) stay out of the table and show in the row's details panel. */
.jt-x-amt { display: block; white-space: nowrap; font-variant-numeric: tabular-nums; margin-bottom: 5px; }
.jt-s6__table .jt-x-more { display: none; }
.jt-rv__value .jt-x-more { display: block !important; margin-top: 4px; color: var(--nx-text-2); font-size: 13px; }
/* Row panel: a cell's second line (small) stays on its own line, never
   glued to the first ("IMP-8255APZU3880399"). */
.jt-rv__value small { display: block !important; margin-top: 2px; color: var(--nx-text-3); font-size: 12.5px; }
.jt-rv__value .jt-x-badge { display: inline-flex !important; }

/* 50. Figures strip, plain (Client reports, Final invoice requests and the
   Sprint 6 pages). Separate white boxes, label above a dark figure, one
   quiet line under it. No colour bars or tints: colour only marks a figure
   that needs action (jt-stat--alert / --red). */
.jt-stats.jt-crx-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 12px; background: none; border: 0; border-radius: 0 !important; box-shadow: none; overflow: visible; margin-bottom: 20px; }
.jt-stats.jt-crx-stats > .jt-stat { min-width: 0; padding: 16px 18px; background: var(--nx-surface); border: 1px solid var(--nx-border); border-top: 1px solid var(--nx-border); border-radius: 10px; box-shadow: none; transition: border-color .14s ease, box-shadow .14s ease; }
.jt-stats.jt-crx-stats > .jt-stat:last-child { border-right: 1px solid var(--nx-border); }
.jt-stats.jt-crx-stats > a.jt-stat:hover { background: var(--nx-surface); border-color: #CBD2DC; box-shadow: 0 1px 2px rgba(16, 24, 40, .06); }
.jt-stats.jt-crx-stats > div.jt-stat:hover { background: var(--nx-surface); }
.jt-stats.jt-crx-stats .jt-stat__top { display: flex; flex-direction: column-reverse; align-items: flex-start; gap: 6px; }
.jt-stats.jt-crx-stats .jt-stat__label { font-size: 12.5px; font-weight: 500; color: var(--nx-text-2); white-space: normal; }
.jt-stats.jt-crx-stats .jt-stat__value { font-size: 22px !important; font-weight: 650; letter-spacing: -0.02em; line-height: 1.1; color: var(--nx-text); }
.jt-stats.jt-crx-stats .jt-stat__delta { margin-top: 6px; font-size: 12px; font-weight: 450; color: var(--nx-text-3); white-space: normal; }
.jt-stats.jt-crx-stats .jt-stat__delta svg { display: none; }
.jt-stats.jt-crx-stats > .jt-stat--alert .jt-stat__value, .jt-stats.jt-crx-stats > .jt-stat--red .jt-stat__value { color: #B42318; }
@media (max-width: 575.98px) {
	.jt-stats.jt-crx-stats { grid-template-columns: 1fr 1fr; gap: 10px; }
	.jt-stats.jt-crx-stats > .jt-stat { padding: 14px; }
	.jt-stats.jt-crx-stats .jt-stat__value { font-size: 20px !important; }
}
/* A quiet one-line notice inside a list card (e.g. earlier charges to bring over). */
.jt-x-notice { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px 16px; padding: 10px 20px; border-bottom: 1px solid var(--nx-border); background: var(--nx-page); font-size: 13px; color: var(--nx-text-2); }
.jt-x-notice b { color: var(--nx-text); font-weight: 600; }
.jt-x-sub .jt-x-count { height: 18px; margin-left: 4px; font-size: 11px; }
.jt-rv__value .jt-x-cut { display: none !important; }
@media (max-width: 575.98px) {
	/* In the stacked toolbar a select keeps its normal height (its flex basis
	   was turning into a 140px tall box) and the status tabs scroll sideways. */
	.jt-s6 .jt-crx-toolbar__right select.form-control { flex: 0 0 auto; width: 100%; }
	.jt-crx-toolbar > .jt-crx-seg { max-width: 100%; overflow-x: auto; scrollbar-width: none; }
	.jt-crx-toolbar > .jt-crx-seg::-webkit-scrollbar { display: none; }
	/* An odd last figure takes the full row instead of sitting alone. */
	.jt-stats.jt-crx-stats > .jt-stat:last-child:nth-child(odd) { grid-column: 1 / -1; }
}
@media (max-width: 575.98px) { .jt-x-stack td.jt-x-actions:not(:has(*)) { display: none; } }
@media (max-width: 575.98px) { .jt-x-stack .jt-x-sub.jt-x-cut { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; } }

/* 51. ATA review: one request in the side panel. */
.jt-ar-drawer .jt-drawer__panel { width: min(520px, 100%); }
.jt-ar-drawer .jt-drawer__body br { display: initial; }
.jt-ar-drawer .jt-x-dl { margin: 0 0 18px; }
.jt-ar-block { padding: 16px 0; border-top: 1px solid var(--nx-border); }
.jt-ar-block[hidden], .jt-ar-decide[hidden] { display: none !important; }
.jt-ar-block__title { margin: 0 0 8px; font-size: 11.5px; font-weight: 600; letter-spacing: .05em; text-transform: uppercase; color: var(--nx-text-3); }
.jt-ar-reason { margin: 0; font-size: 14px; line-height: 1.55; color: var(--nx-text); white-space: pre-line; }
.jt-ar-history { list-style: none; margin: 0; padding: 0; max-height: 240px; overflow-y: auto; }
.jt-ar-history li { padding: 10px 0; border-bottom: 1px solid #EEF0F3; font-size: 13.5px; color: var(--nx-text); }
.jt-ar-history li:last-child { border-bottom: 0; }
.jt-ar-history li.is-empty { color: var(--nx-text-3); }
.jt-ar-history__when { font-size: 12px; color: var(--nx-text-3); margin-bottom: 2px; }
.jt-ar-decide { border-top: 1px solid var(--nx-border); }
.jt-ar-form { padding: 16px 0; }
.jt-ar-form + .jt-ar-form { border-top: 1px dashed var(--nx-border); }
.jt-ar-label { display: block; margin: 0 0 6px; font-size: 13px; font-weight: 600; color: var(--nx-text); }
.jt-ar-hint { margin: 6px 0 12px; font-size: 12.5px; color: var(--nx-text-3); }
.jt-ar-drawer .jt-drawer__body .btn { border-radius: 10px !important; }
.jt-ar-drawer .jt-ar-reject { background: var(--nx-surface); border: 1px solid #F1C4C0; color: #B42318 !important; }
.jt-ar-drawer .jt-ar-reject:hover { background: var(--nx-red-tint); }
.jt-x-clip { display: block; max-width: 280px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.jt-ar-row { cursor: pointer; }
.jt-x-rows.form-control { width: auto !important; min-width: 0 !important; height: 38px; border-radius: 10px !important; font-size: 13px !important; }
.jt-ar-drawer .jt-drawer__body { padding: 20px 24px 28px !important; }
/* The list table outside the Sprint 6 page shell (whose head carries these
   base rules): the same table on any page that wraps it in .jt-s6. */
.jt-s6 .jt-s6__table { width: 100%; border-collapse: collapse; }
.jt-s6 .jt-s6__table th { text-align: left; white-space: nowrap; }
.jt-s6 .jt-s6__table td { vertical-align: middle; }
.jt-s6 .jt-s6__table tr:last-child td { border-bottom: 0; }
.jt-s6 .jt-s6__table .r { text-align: right; white-space: nowrap; }
.jt-s6 .jt-s6__wrap { position: relative; overflow-x: auto; }
.jt-ar-drawer .jt-drawer__body .btn { font-size: 14px !important; font-weight: 600 !important; }

/* 52. Seal history: one container's seals in the side panel, newest first. */
.jt-sh-drawer .jt-drawer__panel { width: min(520px, 100%); }
.jt-sh-drawer .jt-drawer__body { padding: 20px 24px 28px !important; }
.jt-sh-drawer .jt-crx-drawer__foot { gap: 10px; justify-content: space-between; }
.jt-sh-drawer .jt-crx-drawer__foot .btn { display: inline-flex; align-items: center; gap: 8px; font-size: 13.5px !important; font-weight: 600 !important; }
.jt-sh-drawer .jt-crx-drawer__foot .jt-icon { width: 16px; height: 16px; }
.jt-sh-trail { list-style: none; margin: 0; padding: 0 0 0 18px; border-left: 2px solid var(--nx-border); }
.jt-sh-trail li { position: relative; padding: 0 0 20px 6px; }
.jt-sh-trail li:last-child { padding-bottom: 0; }
.jt-sh-trail li::before { content: ''; position: absolute; left: -25px; top: 4px; width: 12px; height: 12px; border-radius: 50%; background: var(--nx-surface); border: 2px solid #CBD2DC; }
.jt-sh-trail li.is-ok::before { border-color: #12A150; }
.jt-sh-trail li.is-warn::before { border-color: #D9820A; }
.jt-sh-trail li.is-bad::before { border-color: #D92D20; }
.jt-sh-trail__head { display: flex; align-items: center; justify-content: space-between; gap: 10px; font-size: 14px; color: var(--nx-text); }
.jt-sh-trail__seal { margin-top: 4px; font-size: 13.5px; color: var(--nx-text-2); }
.jt-sh-trail__seal b { color: var(--nx-text); font-weight: 600; }
.jt-sh-trail__changed { color: #9A5B06; font-size: 12.5px; }
.jt-sh-trail__text { margin-top: 4px; font-size: 13px; color: var(--nx-text); }
.jt-sh-trail__meta { margin-top: 4px; font-size: 12px; color: var(--nx-text-3); }
.jt-sh-none { margin: 0; color: var(--nx-text-3); font-size: 14px; }
.jt-sh-row { cursor: pointer; }
.jt-sh-row template { display: none; }
.jt-x-scope { padding: 12px 0; font-size: 13.5px; color: var(--nx-text-2); display: flex; gap: 12px; align-items: center; }
.jt-x-scope b { color: var(--nx-text); font-weight: 600; }
@media (max-width: 575.98px) { .jt-sh-drawer .jt-crx-drawer__foot { flex-direction: column-reverse; } .jt-sh-drawer .jt-crx-drawer__foot .btn { width: 100%; justify-content: center; } }

/* =====================================================================
   53. Button system: one set of rules for every button in the content,
   dialogs and side panels. Earlier sections layered many overrides
   (five heights, five roundings, orange hovers on neutral buttons,
   labels with no side padding); this is the final word.
     sizes    default 38px, .btn-sm 32px, .btn-lg 44px; one rounding (10px)
     colour   primary = orange; every other variant is neutral (white,
              grey border); danger = red outline. Hovers stay in the
              same colour family: never orange on a neutral button.
     icons    16px, inherit the text colour; an icon-only button is square.
   ===================================================================== */
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) .btn {
	display: inline-flex !important; align-items: center !important; justify-content: center; gap: 8px;
	height: 36px; min-height: 36px !important; padding: 0 14px !important; margin: 0;
	border-radius: 9px !important; font-size: 13px !important; font-weight: 600 !important; line-height: 1 !important;
	white-space: nowrap; vertical-align: middle; box-shadow: none !important; transform: none !important;
	transition: background-color .14s ease, border-color .14s ease, color .14s ease, box-shadow .14s ease !important;
}
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) .btn.btn-sm { height: 30px; min-height: 30px !important; padding: 0 10px !important; font-size: 12.5px !important; gap: 6px; }
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) .btn.btn-lg { height: 40px; min-height: 40px !important; padding: 0 18px !important; font-size: 13.5px !important; }
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) .btn :is(i, svg) { font-size: 14px !important; width: auto; color: inherit !important; flex: 0 0 auto; }
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) .btn svg { width: 15px !important; height: 15px !important; }

/* Icon-only buttons are square. */
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) .btn:is(.btn-icon, .jt-icon-only):not(.jt-rv__action--named) {
	width: 36px !important; min-width: 36px !important; padding: 0 !important;
}
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) .btn.btn-sm:is(.btn-icon, .jt-icon-only):not(.jt-rv__action--named),
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) td .btn:is(.btn-icon, .jt-icon-only):not(.jt-rv__action--named) { width: 32px !important; min-width: 32px !important; height: 32px !important; min-height: 32px !important; }
/* An icon button copied into a side panel with its label: a normal padded button. */
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) .jt-rv__actions .btn.jt-rv__action--named { width: auto !important; min-width: 0 !important; padding: 0 16px !important; height: 38px !important; min-height: 38px !important; margin: 0 !important; font-size: 13px !important; }

/* Primary: orange. */
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) .btn.btn-primary:not(.btn-icon):not(.jt-icon-only) {
	background: var(--nx-accent) !important; border: 1px solid var(--nx-accent) !important; color: #fff !important;
}
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) .btn.btn-primary:not(.btn-icon):not(.jt-icon-only):hover {
	background: var(--nx-accent-hover) !important; border-color: var(--nx-accent-hover) !important; color: #fff !important;
}
/* Everything else, and every icon-only button: neutral. */
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) .btn:is(.btn-light, .btn-secondary, .btn-light-primary, .btn-light-success, .btn-light-info, .btn-light-warning,
	.btn-outline-primary, .btn-outline-secondary, .btn-default, .btn-white, .btn-success, .btn-info, .btn-warning, .btn-dark, .btn-clean, .btn-hover-dark),
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) .btn.btn-primary:is(.btn-icon, .jt-icon-only) {
	background: var(--nx-surface) !important; border: 1px solid var(--nx-border) !important; color: var(--nx-text) !important;
}
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) .btn:is(.btn-light, .btn-secondary, .btn-light-primary, .btn-light-success, .btn-light-info, .btn-light-warning,
	.btn-outline-primary, .btn-outline-secondary, .btn-default, .btn-white, .btn-success, .btn-info, .btn-warning, .btn-dark, .btn-clean, .btn-hover-dark):hover,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) .btn.btn-primary:is(.btn-icon, .jt-icon-only):hover {
	background: var(--nx-page) !important; border-color: #C5CCD6 !important; color: var(--nx-text) !important;
}
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) .btn:is(.btn-icon, .jt-icon-only) :is(i, svg) { color: var(--nx-text-2) !important; }
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) .btn:is(.btn-icon, .jt-icon-only):hover :is(i, svg) { color: var(--nx-text) !important; }
/* Danger: red outline, red tint on hover. */
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) .btn:is(.btn-danger, .btn-light-danger, .btn-outline-danger) {
	background: var(--nx-surface) !important; border: 1px solid #F1C4C0 !important; color: #B42318 !important;
}
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) .btn:is(.btn-danger, .btn-light-danger, .btn-outline-danger):hover { background: var(--nx-red-tint) !important; border-color: #E8A39C !important; }
/* Focus and disabled. */
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) .btn:focus-visible { box-shadow: var(--nx-ring) !important; outline: none; }
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) .btn:is(:disabled, .disabled) { opacity: .55 !important; cursor: not-allowed; }
/* Buttons side by side get a gap, not ad-hoc margins (mx-3, mr-2 ...). */
:is(#kt_content, .modal, .jt-drawer) td .btn { margin: 0 !important; }
:is(#kt_content, .modal, .jt-drawer) td :is(form, a, button) + :is(form, a, button) { margin-left: 6px !important; }
:is(#kt_content, .modal, .jt-drawer) td form { display: inline-flex; margin: 0; }
/* A side panel's first action is its main action: primary. */
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) .jt-rv__actions > :first-child .btn,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) .jt-rv__actions > .btn:first-child {
	background: var(--nx-accent) !important; border-color: var(--nx-accent) !important; color: #fff !important;
}
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) .jt-rv__actions > :first-child .btn :is(i, svg),
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) .jt-rv__actions > .btn:first-child :is(i, svg) { color: #fff !important; }
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) .jt-rv__actions > :first-child .btn:hover,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) .jt-rv__actions > .btn:first-child:hover { background: var(--nx-accent-hover) !important; border-color: var(--nx-accent-hover) !important; }

/* =====================================================================
   54. One icon set. Legacy font icons (Flaticon, Line Awesome, Font
   Awesome) in the content are drawn with the app's own line icons
   (server/ui.php jt_icon), so every icon has the same weight and style
   and takes the colour of its text. Generated from jt_icon; in a table
   row the magnifier means "view", so it is drawn as an eye.
   ===================================================================== */
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-writing,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.la-edit,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon-edit,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-edit,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-add-1,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-add,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-plus,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon-add,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.la-plus,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon-search-magnifier-interface-symbol,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon-search,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-search-1,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-search,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.la-search,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.fa-credit-card,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-download,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon-download,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.la-download,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-delivery-truck,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon-truck,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-calendar-3,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon-calendar,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-user,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon-user-ok,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon-users-1,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon-users,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon-file-2,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-document,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-file,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-notepad,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon-file,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon-app,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-lock,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.la-ellipsis-h,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon-more,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-shelter,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-architecture-and-city,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon-home-2,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-send,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon-paper-plane,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.fa-paper-plane,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-box-1,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-box,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-open-box,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-shopping-cart-1,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-chat-1,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.la-history,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-refresh-arrow,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.la-angle-right,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.la-angle-left,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.fa-arrow-left,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-shield,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-layers-1,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon-warning,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-warning,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-information,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.fa-tasks,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon-list,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-menu,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-map,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon-visible,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon-eye,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-trash,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon-delete,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.la-trash,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-check-mark,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-mail,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-phone,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-time {
	display: inline-block !important; width: 1.15em; height: 1.15em; font-size: inherit; line-height: 1; vertical-align: -0.2em;
	background-color: currentColor; -webkit-mask: var(--jt-ic) center / contain no-repeat; mask: var(--jt-ic) center / contain no-repeat;
}
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-writing::before,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.la-edit::before,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon-edit::before,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-edit::before,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-add-1::before,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-add::before,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-plus::before,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon-add::before,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.la-plus::before,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon-search-magnifier-interface-symbol::before,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon-search::before,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-search-1::before,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-search::before,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.la-search::before,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.fa-credit-card::before,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-download::before,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon-download::before,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.la-download::before,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-delivery-truck::before,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon-truck::before,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-calendar-3::before,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon-calendar::before,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-user::before,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon-user-ok::before,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon-users-1::before,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon-users::before,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon-file-2::before,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-document::before,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-file::before,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-notepad::before,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon-file::before,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon-app::before,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-lock::before,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.la-ellipsis-h::before,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon-more::before,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-shelter::before,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-architecture-and-city::before,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon-home-2::before,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-send::before,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon-paper-plane::before,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.fa-paper-plane::before,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-box-1::before,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-box::before,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-open-box::before,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-shopping-cart-1::before,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-chat-1::before,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.la-history::before,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-refresh-arrow::before,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.la-angle-right::before,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.la-angle-left::before,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.fa-arrow-left::before,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-shield::before,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-layers-1::before,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon-warning::before,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-warning::before,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-information::before,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.fa-tasks::before,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon-list::before,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-menu::before,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-map::before,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon-visible::before,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon-eye::before,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-trash::before,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon-delete::before,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.la-trash::before,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-check-mark::before,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-mail::before,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-phone::before,
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-time::before { content: none !important; display: none !important; }
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-writing, :is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.la-edit, :is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon-edit, :is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-edit { --jt-ic: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M4%2020h4L19%209a2.8%202.8%200%200%200-4-4L4%2016z%22%2F%3E%3Cpath%20d%3D%22m13.5%206.5%204%204%22%2F%3E%3C%2Fsvg%3E"); }
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-add-1, :is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-add, :is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-plus, :is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon-add, :is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.la-plus { --jt-ic: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M12%205v14M5%2012h14%22%2F%3E%3C%2Fsvg%3E"); }
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon-search-magnifier-interface-symbol, :is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon-search, :is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-search-1, :is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-search, :is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.la-search { --jt-ic: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Ccircle%20cx%3D%2211%22%20cy%3D%2211%22%20r%3D%227%22%2F%3E%3Cpath%20d%3D%22m20%2020-3.5-3.5%22%2F%3E%3C%2Fsvg%3E"); }
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.fa-credit-card { --jt-ic: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Crect%20x%3D%223%22%20y%3D%225.5%22%20width%3D%2218%22%20height%3D%2213%22%20rx%3D%222%22%2F%3E%3Cpath%20d%3D%22M3%2010h18M7%2015h3%22%2F%3E%3C%2Fsvg%3E"); }
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-download, :is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon-download, :is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.la-download { --jt-ic: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M12%204v11.5M7.5%2011%2012%2015.5%2016.5%2011%22%2F%3E%3Cpath%20d%3D%22M4%2015v3.5A1.5%201.5%200%200%200%205.5%2020h13a1.5%201.5%200%200%200%201.5-1.5V15%22%2F%3E%3C%2Fsvg%3E"); }
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-delivery-truck, :is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon-truck { --jt-ic: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M3%206h11v10H3z%22%2F%3E%3Cpath%20d%3D%22M14%2010h4l3%203v3h-7%22%2F%3E%3Ccircle%20cx%3D%227%22%20cy%3D%2217.5%22%20r%3D%221.8%22%2F%3E%3Ccircle%20cx%3D%2217%22%20cy%3D%2217.5%22%20r%3D%221.8%22%2F%3E%3C%2Fsvg%3E"); }
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-calendar-3, :is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon-calendar { --jt-ic: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Crect%20x%3D%223.5%22%20y%3D%225%22%20width%3D%2217%22%20height%3D%2215.5%22%20rx%3D%222%22%2F%3E%3Cpath%20d%3D%22M3.5%2010h17M8%203v4M16%203v4%22%2F%3E%3C%2Fsvg%3E"); }
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-user, :is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon-user-ok { --jt-ic: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%228%22%20r%3D%224%22%2F%3E%3Cpath%20d%3D%22M4%2021a8%208%200%200%201%2016%200%22%2F%3E%3C%2Fsvg%3E"); }
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon-users-1, :is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon-users { --jt-ic: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Ccircle%20cx%3D%229%22%20cy%3D%228%22%20r%3D%223.5%22%2F%3E%3Cpath%20d%3D%22M2.5%2020a6.5%206.5%200%200%201%2013%200%22%2F%3E%3Cpath%20d%3D%22M16%204.5a3.5%203.5%200%200%201%200%207M21.5%2020a6.5%206.5%200%200%200-4-6%22%2F%3E%3C%2Fsvg%3E"); }
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon-file-2, :is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-document, :is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-file, :is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-notepad, :is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon-file { --jt-ic: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M14%203H7a2%202%200%200%200-2%202v14a2%202%200%200%200%202%202h10a2%202%200%200%200%202-2V8z%22%2F%3E%3Cpath%20d%3D%22M14%203v5h5%22%2F%3E%3C%2Fsvg%3E"); }
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon-app { --jt-ic: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Crect%20x%3D%224%22%20y%3D%224%22%20width%3D%226.5%22%20height%3D%226.5%22%20rx%3D%221.5%22%2F%3E%3Crect%20x%3D%2213.5%22%20y%3D%224%22%20width%3D%226.5%22%20height%3D%226.5%22%20rx%3D%221.5%22%2F%3E%3Crect%20x%3D%224%22%20y%3D%2213.5%22%20width%3D%226.5%22%20height%3D%226.5%22%20rx%3D%221.5%22%2F%3E%3Crect%20x%3D%2213.5%22%20y%3D%2213.5%22%20width%3D%226.5%22%20height%3D%226.5%22%20rx%3D%221.5%22%2F%3E%3C%2Fsvg%3E"); }
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-lock { --jt-ic: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Crect%20x%3D%224.5%22%20y%3D%2210.5%22%20width%3D%2215%22%20height%3D%2210%22%20rx%3D%222%22%2F%3E%3Cpath%20d%3D%22M8%2010.5V7.5a4%204%200%200%201%208%200v3%22%2F%3E%3C%2Fsvg%3E"); }
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.la-ellipsis-h, :is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon-more { --jt-ic: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Ccircle%20cx%3D%225%22%20cy%3D%2212%22%20r%3D%221.2%22%2F%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%2212%22%20r%3D%221.2%22%2F%3E%3Ccircle%20cx%3D%2219%22%20cy%3D%2212%22%20r%3D%221.2%22%2F%3E%3C%2Fsvg%3E"); }
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-shelter, :is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-architecture-and-city, :is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon-home-2 { --jt-ic: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M4%2011.5%2012%205l8%206.5%22%2F%3E%3Cpath%20d%3D%22M6%2010v9h12v-9%22%2F%3E%3Cpath%20d%3D%22M10%2019v-5h4v5%22%2F%3E%3C%2Fsvg%3E"); }
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-send, :is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon-paper-plane, :is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.fa-paper-plane { --jt-ic: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M21%203%2010.5%2013.5%22%2F%3E%3Cpath%20d%3D%22M21%203%2014.5%2021l-4-7.5L3%209.5z%22%2F%3E%3C%2Fsvg%3E"); }
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-box-1, :is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-box, :is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-open-box, :is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-shopping-cart-1 { --jt-ic: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M4%208%2012%204l8%204v8l-8%204-8-4z%22%2F%3E%3Cpath%20d%3D%22m4%208%208%204%208-4M12%2012v8%22%2F%3E%3C%2Fsvg%3E"); }
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-chat-1 { --jt-ic: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M5%205h14a1.5%201.5%200%200%201%201.5%201.5v8A1.5%201.5%200%200%201%2019%2016h-8l-4.5%203.5V16H5a1.5%201.5%200%200%201-1.5-1.5v-8A1.5%201.5%200%200%201%205%205z%22%2F%3E%3C%2Fsvg%3E"); }
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.la-history, :is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-refresh-arrow { --jt-ic: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M3.5%2012a8.5%208.5%200%201%200%202.5-6%22%2F%3E%3Cpath%20d%3D%22M3.5%204.5V9H8%22%2F%3E%3Cpath%20d%3D%22M12%208v4.5l3%202%22%2F%3E%3C%2Fsvg%3E"); }
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.la-angle-right { --jt-ic: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22m9%206%206%206-6%206%22%2F%3E%3C%2Fsvg%3E"); }
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.la-angle-left { --jt-ic: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22m15%206-6%206%206%206%22%2F%3E%3C%2Fsvg%3E"); }
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.fa-arrow-left { --jt-ic: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M19%2012H5M11%206l-6%206%206%206%22%2F%3E%3C%2Fsvg%3E"); }
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-shield { --jt-ic: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M12%203%204.5%206v5.5c0%204.6%203.1%208.1%207.5%209.5%204.4-1.4%207.5-4.9%207.5-9.5V6z%22%2F%3E%3Cpath%20d%3D%22m9%2012%202%202%204-4%22%2F%3E%3C%2Fsvg%3E"); }
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-layers-1 { --jt-ic: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22m12%204%208.5%204.5L12%2013%203.5%208.5z%22%2F%3E%3Cpath%20d%3D%22m3.5%2012.5%208.5%204.5%208.5-4.5M3.5%2016.5%2012%2021l8.5-4.5%22%2F%3E%3C%2Fsvg%3E"); }
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon-warning, :is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-warning { --jt-ic: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M12%209v4m0%203.5v.5%22%2F%3E%3Cpath%20d%3D%22M10.3%203.9%202.6%2017.3A2%202%200%200%200%204.3%2020.3h15.4a2%202%200%200%200%201.7-3L13.7%203.9a2%202%200%200%200-3.4%200Z%22%2F%3E%3C%2Fsvg%3E"); }
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-information { --jt-ic: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%2212%22%20r%3D%228.5%22%2F%3E%3Cpath%20d%3D%22M12%2011v5M12%208h.01%22%2F%3E%3C%2Fsvg%3E"); }
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.fa-tasks, :is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon-list { --jt-ic: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M9%207h11M9%2012h11M9%2017h11M4.5%207h.01M4.5%2012h.01M4.5%2017h.01%22%2F%3E%3C%2Fsvg%3E"); }
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-menu { --jt-ic: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M4%207h16M4%2012h16M4%2017h16%22%2F%3E%3C%2Fsvg%3E"); }
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-map { --jt-ic: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M9%205%203.5%207v12L9%2017l6%202%205.5-2V5L15%207z%22%2F%3E%3Cpath%20d%3D%22M9%205v12M15%207v12%22%2F%3E%3C%2Fsvg%3E"); }
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon-visible, :is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon-eye { --jt-ic: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M2.5%2012S6%205.5%2012%205.5%2021.5%2012%2021.5%2012%2018%2018.5%2012%2018.5%202.5%2012%202.5%2012z%22%2F%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%2212%22%20r%3D%223%22%2F%3E%3C%2Fsvg%3E"); }
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-trash, :is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon-delete, :is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.la-trash { --jt-ic: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M4%207h16M10%2011v6M14%2011v6M9%207V4.5h6V7%22%2F%3E%3Cpath%20d%3D%22M6%207l1%2013h10l1-13%22%2F%3E%3C%2Fsvg%3E"); }
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-check-mark { --jt-ic: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22m5%2012.5%204.5%204.5L19%207.5%22%2F%3E%3C%2Fsvg%3E"); }
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-mail { --jt-ic: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Crect%20x%3D%223%22%20y%3D%225%22%20width%3D%2218%22%20height%3D%2214%22%20rx%3D%222%22%2F%3E%3Cpath%20d%3D%22m3.5%206.5%208.5%206.5%208.5-6.5%22%2F%3E%3C%2Fsvg%3E"); }
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-phone { --jt-ic: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M5%203.5h3.2l1.6%204.2-2.1%201.3a11%2011%200%200%200%205.3%205.3l1.3-2.1%204.2%201.6V17a2%202%200%200%201-2.2%202A15.5%2015.5%200%200%201%203%205.7a2%202%200%200%201%202-2.2z%22%2F%3E%3C%2Fsvg%3E"); }
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) i.flaticon2-time { --jt-ic: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%2212%22%20r%3D%229%22%2F%3E%3Cpath%20d%3D%22M12%207v5l3%202%22%2F%3E%3C%2Fsvg%3E"); }
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) td :is(.btn, a) i:is(.flaticon-search-magnifier-interface-symbol, .flaticon-search, .flaticon2-search-1, .flaticon2-search, .la-search) { --jt-ic: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M2.5%2012S6%205.5%2012%205.5%2021.5%2012%2021.5%2012%2018%2018.5%2012%2018.5%202.5%2012%202.5%2012z%22%2F%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%2212%22%20r%3D%223%22%2F%3E%3C%2Fsvg%3E"); }
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) .btn i[class*="flaticon"], :is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) .btn i[class*="la-"], :is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) .btn i[class*="fa-"] { width: 17px !important; height: 17px !important; }

/* 55. Row actions: every list keeps its actions together in the last
   column, in one order (View, Update, Manage), as one compact group. */
.jt-row-actions, .table td .jt-row-actions, .table td form.jt-row-actions { display: inline-flex !important; flex-wrap: nowrap !important; align-items: center; gap: 6px; white-space: nowrap; }
.jt-row-actions > form, .jt-row-actions > a { display: inline-flex; margin: 0 !important; }
:is(#kt_content) td .jt-row-actions :is(form, a, button) + :is(form, a, button) { margin-left: 0 !important; }
.jt-row-actions-head, .jt-row-actions-cell { text-align: right !important; width: 1%; }
/* A row that opens its record: hover tint, keyboard focus ring. */
.jt-sh-row:hover td { background: var(--nx-surface-2, #FAFBFC); }
.jt-sh-row:focus-visible { outline: 2px solid var(--nx-accent); outline-offset: -2px; }

/* =====================================================================
   56. Form controls: one look for every field. Typed fields, plain
   selects and the search-select pick lists (bootstrap-select) share one
   height, text size and weight, placeholder colour and focus ring.
   ===================================================================== */
:is(#kt_content, .modal, .jt-drawer) :is(input.form-control, select.form-control, .bootstrap-select > .dropdown-toggle, .bootstrap-select > .btn.dropdown-toggle) {
	height: 38px !important; min-height: 38px !important; padding: 0 12px !important; border: 1px solid var(--nx-border) !important; border-radius: 9px !important;
	background-color: var(--nx-surface) !important; font-size: 13.5px !important; font-weight: 400 !important; color: var(--nx-text) !important; box-shadow: none !important;
	line-height: 36px !important;
}
:is(#kt_content, .modal, .jt-drawer) textarea.form-control { min-height: 80px; padding: 9px 12px !important; border: 1px solid var(--nx-border) !important; border-radius: 9px !important; font-size: 13.5px !important; font-weight: 400 !important; line-height: 1.5 !important; }
:is(#kt_content, .modal, .jt-drawer) .bootstrap-select > .dropdown-toggle .filter-option-inner-inner { font-size: 13.5px !important; font-weight: 400 !important; color: var(--nx-text) !important; }
:is(#kt_content, .modal, .jt-drawer) .bootstrap-select > .dropdown-toggle.bs-placeholder .filter-option-inner-inner,
:is(#kt_content, .modal, .jt-drawer) :is(input, textarea).form-control::placeholder { color: #9AA3AF !important; font-weight: 400 !important; opacity: 1; }
:is(#kt_content, .modal, .jt-drawer) .bootstrap-select > .dropdown-toggle .filter-option { display: flex; align-items: center; height: 100%; padding: 0 !important; }
:is(#kt_content, .modal, .jt-drawer) :is(.form-control, .bootstrap-select > .dropdown-toggle):focus,
:is(#kt_content, .modal, .jt-drawer) .bootstrap-select.show > .dropdown-toggle { border-color: var(--nx-accent) !important; box-shadow: 0 0 0 3px rgba(242, 106, 33, .14) !important; outline: none !important; }
:is(#kt_content, .modal, .jt-drawer) .form-control:disabled, :is(#kt_content, .modal, .jt-drawer) .form-control[readonly]:not(.jt-cv-date):not([id^="kt_datepicker"]) { background-color: var(--nx-page) !important; color: var(--nx-text-2) !important; }
:is(#kt_content, .modal, .jt-drawer) .form-group > label, :is(#kt_content, .modal, .jt-drawer) .col-form-label { font-size: 13px !important; font-weight: 600 !important; color: var(--nx-text) !important; }
:is(#kt_content, .modal, .jt-drawer) .form-text, :is(#kt_content, .modal, .jt-drawer) .form-group .text-muted { font-size: 12.5px; color: var(--nx-text-3) !important; }
:is(#kt_content, .modal, .jt-drawer) .bootstrap-select.form-control { border: 0 !important; padding: 0 !important; height: auto !important; box-shadow: none !important; background: transparent !important; }
/* Card headers of the older pages: one title and subtitle size. */
#kt_content .card-header .card-label { font-size: 16px !important; font-weight: 650 !important; color: var(--nx-text) !important; }
#kt_content .jt-card-sub { font-size: 13.5px !important; color: var(--nx-text-2) !important; margin-top: 4px; line-height: 1.5; }

/* =====================================================================
   57. Warehouse delivery (wareinsert): one container at a time, in the
   order things happen (arrival, seal, quantity, checkout), with the
   trip's facts beside it.
   ===================================================================== */
.jt-x-back { display: inline-flex; align-items: center; gap: 6px; margin-bottom: 8px; font-size: 13px; font-weight: 600; color: var(--nx-text-2) !important; text-decoration: none !important; }
.jt-x-back:hover { color: var(--nx-accent) !important; }
.jt-x-back .jt-icon { width: 15px; height: 15px; }
.jt-req { color: #D92D20; }
.jt-wi-tabs { display: flex; gap: 8px; margin: 0 0 16px; overflow-x: auto; scrollbar-width: none; }
.jt-wi-tabs::-webkit-scrollbar { display: none; }
.jt-wi-tab { display: inline-flex; align-items: center; gap: 10px; padding: 10px 14px; border: 1px solid var(--nx-border); border-radius: 12px; background: var(--nx-surface); cursor: pointer; white-space: nowrap; transition: border-color .14s ease, box-shadow .14s ease; }
.jt-wi-tab:hover { border-color: #C5CCD6; }
.jt-wi-tab.is-active { border-color: var(--nx-accent); box-shadow: 0 0 0 3px rgba(242, 106, 33, .12); }
.jt-wi-tab__no { font-size: 14px; font-weight: 650; color: var(--nx-text); letter-spacing: .01em; }
.jt-wi-panel { display: none; }
.jt-wi-panel.is-active { display: block; }
.jt-wi .jt-x-grid { grid-template-columns: minmax(0, 1fr) 300px; }
.jt-wi-form { padding: 0 !important; }
.jt-wi-head { display: flex; align-items: center; justify-content: space-between; padding: 18px 24px; border-bottom: 1px solid var(--nx-border); }
.jt-wi-head__title { font-size: 16px; font-weight: 650; color: var(--nx-text); }
.jt-wi-head__sub { font-size: 13px; color: var(--nx-text-3); margin-top: 2px; }
.jt-wi-step { padding: 20px 24px 4px; border-bottom: 1px solid #EEF0F3; }
.jt-wi-step__title { display: flex; align-items: center; gap: 10px; margin-bottom: 14px; font-size: 14px; font-weight: 650; color: var(--nx-text); }
.jt-wi-step__no { display: inline-flex; align-items: center; justify-content: center; width: 24px; height: 24px; border-radius: 50%; background: var(--nx-page); border: 1px solid var(--nx-border); font-size: 12px; font-weight: 700; color: var(--nx-text-2); }
.jt-wi-fields { display: grid; grid-template-columns: repeat(2, minmax(0, 220px)); gap: 0 16px; }
.jt-wi-fields--3 { grid-template-columns: repeat(3, minmax(0, 180px)); }
.jt-wi-expected { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 14px; margin-bottom: 16px; padding: 12px 14px; border-radius: 10px; background: var(--nx-page); }
.jt-wi-expected__label { font-size: 12.5px; color: var(--nx-text-3); }
.jt-wi-expected__seal { font-size: 15px; font-weight: 650; color: var(--nx-text); letter-spacing: .02em; }
.jt-wi-expected .jt-x-link { display: inline-flex; align-items: center; gap: 5px; text-decoration: none; }
.jt-wi-expected .jt-icon { width: 15px; height: 15px; }
.jt-wi-mismatch { display: flex; align-items: flex-start; gap: 8px; margin: -4px 0 14px; padding: 10px 12px; border-radius: 10px; background: #FFF6E5; color: #92400E; font-size: 13px; }
.jt-wi-mismatch[hidden], .jt-wi-reason[hidden] { display: none !important; }
.jt-wi-mismatch .jt-icon { width: 16px; height: 16px; flex: 0 0 16px; margin-top: 1px; }
.jt-wi-file { display: inline-flex; align-items: center; gap: 8px; height: 40px; padding: 0 14px; border: 1px dashed #C5CCD6; border-radius: 10px; background: var(--nx-surface); color: var(--nx-text-2); font-size: 13.5px; font-weight: 500 !important; cursor: pointer; max-width: 100%; }
.jt-wi-file:hover { border-color: var(--nx-accent); color: var(--nx-text); }
.jt-wi-file.has-file { border-style: solid; color: var(--nx-text); }
.jt-wi-file input { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
.jt-wi-file .jt-icon { width: 16px; height: 16px; }
.jt-wi-file__name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.jt-wi-step:has(.jt-wi-file) { padding-bottom: 20px; }
.jt-wi-actions { margin: 0 !important; padding: 16px 24px !important; border-top: 0 !important; }
.jt-wi-trip { padding: 18px 20px !important; align-self: start; }
.jt-wi-trip__title { font-size: 12px; font-weight: 600; letter-spacing: .05em; text-transform: uppercase; color: var(--nx-text-3); margin-bottom: 10px; }
.jt-wi-trip .jt-x-dl > div { padding: 9px 0; }
.jt-wi-trip__link { margin-top: 14px; width: 100%; }
.jt-wi-trip__link .jt-icon { width: 16px; height: 16px; }
@media (max-width: 1199.98px) { .jt-wi .jt-x-grid { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 575.98px) {
	.jt-wi-fields, .jt-wi-fields--3 { grid-template-columns: minmax(0, 1fr); }
	.jt-wi-step, .jt-wi-head, .jt-wi-actions { padding-left: 16px !important; padding-right: 16px !important; }
}
/* A date field is read-only only because a calendar fills it: it must look editable. */
:is(#kt_content, .modal, .jt-drawer) input.form-control[readonly]:is(.jt-ware-date, .jt-cv-date, [id^="kt_datepicker"], [placeholder*="dd/mm"], [placeholder*="Select date"], [placeholder*="elect"]):not(:disabled) {
	background-color: var(--nx-surface) !important; color: var(--nx-text) !important; cursor: pointer;
}
.jt-wi-step .form-group > label:not(.jt-wi-file) { display: block; }

/* 58. Queue lists (shared job picker): a plain table in the page's card. */
.jt-picker .table-responsive { margin: 0; }
.jt-picker-table { margin: 0 !important; }
.jt-picker-table thead th { background: var(--nx-page) !important; font-size: 11.5px !important; font-weight: 600 !important; letter-spacing: .04em; text-transform: uppercase; color: var(--nx-text-3) !important; padding: 11px 20px !important; border-bottom: 1px solid var(--nx-border) !important; border-top: 0 !important; }
.jt-picker-table tbody td { padding: 14px 20px !important; vertical-align: middle !important; border-top: 1px solid #EEF0F3 !important; font-size: 13.5px; color: var(--nx-text); }
.jt-picker-row { cursor: pointer; }
.jt-picker-row:hover td { background: var(--nx-surface-2, #FAFBFC); }
.jt-picker-row:focus-visible { outline: 2px solid var(--nx-accent); outline-offset: -2px; }
.jt-crx-cardhead { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 14px 20px; border-bottom: 1px solid var(--nx-border); font-size: 13.5px; color: var(--nx-text-2); }
.jt-crx-cardhead b { color: var(--nx-text); font-weight: 650; }
.jt-crx-card .jt-picker .jt-empty-state { margin: 24px; }
/* The list toolbar's search: room for its icon, whatever the field rules say. */
#kt_content .jt-toolbar .jt-toolbar__search .dataTables_filter input.form-control, #kt_content .dataTables_wrapper .dataTables_filter label input.form-control, #kt_content .jt-con-search__field input.form-control { padding-left: 40px !important; }
.jt-crx-card > .jt-toolbar, .jt-crx-card .jt-picker > .jt-toolbar { padding: 14px 20px; margin: 0 !important; border-bottom: 1px solid var(--nx-border); }
.jt-crx-card .jt-picker .dataTables_wrapper > .row:not(:has(table)) { margin: 0; padding: 0 20px; }

/* 59. A field's history (ETA, ATA ...): a timeline, newest first. */
.jt-timeline { list-style: none; margin: 0 0 0 8px; padding: 0 0 0 20px; border-left: 2px solid var(--nx-border); }
.modal-body:has(> .jt-timeline) { max-height: 60vh; overflow-y: auto; }
.jt-timeline__item { position: relative; padding: 0 4px 20px 14px; }
.jt-timeline__item:last-child { padding-bottom: 4px; }
.jt-timeline__item::before { content: ''; position: absolute; left: -27px; top: 4px; width: 12px; height: 12px; border-radius: 50%; background: var(--nx-surface); border: 2px solid #CBD2DC; }
.jt-timeline__item:first-child::before { border-color: var(--nx-accent); }
.jt-timeline__meta { font-size: 12.5px; color: var(--nx-text-3); margin-bottom: 4px; }
.jt-timeline__what { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 10px; font-size: 14.5px; color: var(--nx-text); overflow-wrap: anywhere; }
.jt-timeline__what b { font-weight: 650; }
.jt-timeline__was { font-size: 13px; color: var(--nx-text-3); }
.jt-timeline__note { margin-top: 4px; font-size: 13.5px; color: var(--nx-text-2); overflow-wrap: anywhere; }
.jt-timeline__note span { color: var(--nx-text-3); }
.jt-timeline-empty { margin: 0; color: var(--nx-text-3); }

/* 60. Search: one search bar, filters in a compact row under it. */
.jt-srch-form { padding: 16px 20px !important; margin-bottom: 18px; }
.jt-srch-bar { display: flex; align-items: center; gap: 10px; padding: 0 6px 0 14px; height: 46px; border: 1px solid var(--nx-border); border-radius: 12px; background: var(--nx-surface); transition: border-color .14s, box-shadow .14s; }
.jt-srch-bar:focus-within { border-color: var(--nx-accent); box-shadow: 0 0 0 3px rgba(242, 106, 33, .14); }
.jt-srch-bar > .jt-icon { width: 18px; height: 18px; color: var(--nx-text-3); flex: 0 0 18px; }
.jt-srch-bar input { flex: 1 1 auto; min-width: 0; height: 100%; border: 0; outline: 0; background: transparent; font-size: 14px; color: var(--nx-text); }
.jt-srch-bar input::placeholder { color: #9AA3AF; }
.jt-srch-bar .btn { flex: 0 0 auto; }
.jt-srch-filters { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin-top: 12px; }
.jt-srch-sources { display: inline-flex; gap: 6px; }
.jt-srch-chip { position: relative; margin: 0; cursor: pointer; }
.jt-srch-chip input { position: absolute; opacity: 0; pointer-events: none; }
.jt-srch-chip span { display: inline-flex; align-items: center; height: 36px; padding: 0 14px; border: 1px solid var(--nx-border); border-radius: 999px; font-size: 13px; font-weight: 600; color: var(--nx-text-3); background: var(--nx-surface); transition: all .14s; }
.jt-srch-chip input:checked + span { color: var(--nx-text); border-color: #C5CCD6; background: var(--nx-page); }
.jt-srch-chip input:checked + span::before { content: ''; width: 6px; height: 6px; border-radius: 50%; background: var(--nx-accent); margin-right: 8px; }
.jt-srch-chip input:focus-visible + span { box-shadow: var(--nx-ring); }
.jt-srch-field { flex: 0 1 170px; }
.jt-srch-field--client { flex-basis: 220px; }
.jt-srch-field--date { flex-basis: 150px; }
#kt_content .jt-srch-field :is(.form-control, .bootstrap-select > .dropdown-toggle) { height: 36px !important; min-height: 36px !important; line-height: 34px !important; font-size: 13.5px !important; }
.jt-srch-clear { margin-left: auto; }
.jt-srch .jt-crx-card > table { margin: 0 !important; }
@media (max-width: 767.98px) { .jt-srch-field, .jt-srch-field--client, .jt-srch-field--date { flex: 1 1 45%; } .jt-srch-sources { width: 100%; } }
/* Search page: the bar above is the one search; the table keeps only its exports. */
.jt-srch .jt-toolbar__search { display: none !important; }
.jt-srch .jt-toolbar { justify-content: flex-end !important; }
/* Tables inside a list card start their first and last columns off the card edge. */
.jt-crx-card table :is(th, td):first-child { padding-left: 20px !important; }
.jt-crx-card table :is(th, td):last-child { padding-right: 20px !important; }
#kt_content input.form-control.jt-date[readonly]:not(:disabled) { background-color: var(--nx-surface) !important; color: var(--nx-text) !important; cursor: pointer; }
#kt_content .jt-crx-card table.table :is(th, td):first-child { padding-left: 20px !important; }
#kt_content .jt-crx-card table.table :is(th, td):last-child { padding-right: 20px !important; }
/* Search results: the exports sit in the card's header row, beside the count. */
.jt-srch .jt-crx-cardhead { min-height: 60px; padding-right: 300px; }
.jt-srch .jt-crx-card .jt-toolbar { margin: -60px 0 0 auto !important; padding: 11px 20px !important; border: 0 !important; width: max-content; position: relative; z-index: 1; background: transparent; }
@media (max-width: 767.98px) { .jt-srch .jt-crx-cardhead { padding-right: 20px; } .jt-srch .jt-crx-card .jt-toolbar { margin: 0 !important; width: auto; } }

/* =====================================================================
   61. Stage pages: the job header, and one tab style.
   ===================================================================== */
/* The job header (jt_job_header): the stage, the job number, what it is, its key dates. */
.alert.jt-jobhead-wrap { display: block !important; padding: 0 !important; margin: 4px 0 20px !important; background: transparent !important; border: 0 !important; box-shadow: none !important; }
.alert.jt-jobhead-wrap > .alert-icon { display: none !important; }
.jt-jobhead__kicker { font-size: 12px; font-weight: 600; letter-spacing: .05em; text-transform: uppercase; color: var(--nx-accent); margin-bottom: 4px; }
.jt-jobhead__title { margin: 0 !important; font-size: 22px !important; font-weight: 700 !important; letter-spacing: -0.015em; color: var(--nx-text) !important; line-height: 1.2; }
.jt-jobhead__sub { margin-top: 6px; font-size: 14px; color: var(--nx-text-2); line-height: 1.5; }
.jt-jobhead__facts { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.jt-jobhead__fact { display: inline-flex; align-items: center; gap: 8px; height: 30px; padding: 0 12px; border: 1px solid var(--nx-border); border-radius: 999px; background: var(--nx-surface); font-size: 13px; color: var(--nx-text-3); }
.jt-jobhead__fact b { color: var(--nx-text); font-weight: 600; }

/* Tabs on the older pages (.jt-switch): the segmented control of the rebuilt
   pages (grey track, the active tab white), not a solid orange pill, and no
   decorative icons (Import jobs had a chat bubble). */
#kt_content .nav.jt-switch { display: inline-flex !important; flex-wrap: wrap; gap: 2px !important; padding: 3px !important; background: var(--nx-page) !important; border: 1px solid var(--nx-border) !important; border-radius: 10px !important; box-shadow: none !important; }
#kt_content .nav.jt-switch .nav-item { margin: 0 !important; }
#kt_content .nav.jt-switch .nav-link { display: inline-flex !important; align-items: center; height: 32px; padding: 0 14px !important; margin: 0 !important; border: 0 !important; border-radius: 8px !important; background: transparent !important; color: var(--nx-text-2) !important; font-size: 13px !important; font-weight: 600 !important; box-shadow: none !important; }
#kt_content .nav.jt-switch .nav-link:hover { color: var(--nx-text) !important; }
#kt_content .nav.jt-switch .nav-link.active { background: var(--nx-surface) !important; color: var(--nx-text) !important; box-shadow: 0 1px 2px rgba(16, 24, 40, .08), 0 0 0 1px var(--nx-border) !important; }
#kt_content .nav.jt-switch .nav-link .nav-icon { display: none !important; }
#kt_content .nav.jt-switch .nav-link::after { display: none !important; }
#kt_content .nav.jt-switch .nav-link::before { display: none !important; }
#kt_content .nav.jt-switch .nav-link.active { border-bottom: 0 !important; }
.jt-crx-card > .nav.jt-switch { margin: 16px 20px 0 !important; }

/* 62. Older form footers: actions at the end, on the right, the main one last.
   (They sat in a col-lg-8 behind an empty col-lg-4, so they looked centred.) */
#kt_content .card-footer > .row > .col-lg-4:empty, #kt_content .card-footer > .row > .col-lg-3:empty, #kt_content .card-footer > .row > .col-lg-2:empty { display: none !important; }
#kt_content .card-footer > .row > :is(.col-lg-8, .col-lg-9, .col-lg-10):has(> .btn) { flex: 0 0 100% !important; max-width: 100% !important; display: flex !important; flex-direction: row-reverse; justify-content: flex-start; align-items: center; gap: 10px; }
#kt_content .card-footer > .row > :is(.col-lg-8, .col-lg-9, .col-lg-10) > .btn { margin: 0 !important; }
/* The old green "Update"/"Save" with a text label is the form's main action: primary. */
:is(#kt_content, .modal, .jt-drawer) .btn.btn-success:not(.jt-icon-only):not(.btn-icon):not(td .btn):not(.jt-rv__action--named),
:is(#kt_content, .modal, .jt-drawer) .btn.btn-success:not(.jt-icon-only):not(.btn-icon):not(td .btn):not(.jt-rv__action--named):is(:hover, :focus) {
	background: var(--nx-accent) !important; border-color: var(--nx-accent) !important; color: #fff !important;
}
:is(#kt_content, .modal, .jt-drawer) .btn.btn-success:not(.jt-icon-only):not(.btn-icon):not(td .btn):not(.jt-rv__action--named):hover { background: var(--nx-accent-hover) !important; border-color: var(--nx-accent-hover) !important; }

/* 63. Every figures strip (dashboards, Audit, Mail and User logs ...) is the
   plain one of section 50: separate white boxes, label above a dark figure,
   no colour bars or tints. Colour stays only on a figure that needs action. */
#kt_content .jt-stats:not(.jt-crx-stats) { display: grid !important; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 12px; background: none !important; border: 0 !important; border-radius: 0 !important; box-shadow: none !important; overflow: visible !important; margin-bottom: 20px; }
#kt_content .jt-stats:not(.jt-crx-stats) > .jt-stat { min-width: 0; padding: 16px 18px !important; background: var(--nx-surface) !important; border: 1px solid var(--nx-border) !important; border-top: 1px solid var(--nx-border) !important; border-radius: 10px !important; box-shadow: none !important; }
#kt_content .jt-stats:not(.jt-crx-stats) > a.jt-stat:hover { border-color: #C5CCD6 !important; box-shadow: 0 1px 2px rgba(16, 24, 40, .06) !important; }
#kt_content .jt-stats:not(.jt-crx-stats) .jt-stat__top { display: flex; flex-direction: column-reverse; align-items: flex-start; gap: 6px; }
#kt_content .jt-stats:not(.jt-crx-stats) .jt-stat__label { font-size: 12.5px !important; font-weight: 500 !important; color: var(--nx-text-2) !important; white-space: normal; }
#kt_content .jt-stats:not(.jt-crx-stats) .jt-stat__value { font-size: 22px !important; font-weight: 650 !important; letter-spacing: -0.02em; line-height: 1.1; color: var(--nx-text) !important; }
#kt_content .jt-stats:not(.jt-crx-stats) .jt-stat__delta { margin-top: 6px; font-size: 12px; color: var(--nx-text-3); white-space: normal; }
#kt_content .jt-stats:not(.jt-crx-stats) .jt-stat__delta svg { display: none; }
#kt_content .jt-stats:not(.jt-crx-stats) > :is(.jt-stat--alert, .jt-stat--red) .jt-stat__value { color: #B42318 !important; }
@media (max-width: 575.98px) { #kt_content .jt-stats:not(.jt-crx-stats) { grid-template-columns: 1fr 1fr; } }
/* Older list pages: the title alone; the icon beside it was decoration from a mixed set. */
#kt_content .card-header .card-title > .card-icon { display: none !important; }

/* =====================================================================
   64. Colour. Sections 50 and 63 made the figures, tiles, tabs and row
   buttons plain; Peter wants colour that means something:
     figures  each stage keeps its colour (blue preclearing, violet
              clearing, amber haulage, teal post clearing, green invoicing,
              red overdue): a coloured top edge, a light tint, the figure in
              the stage colour.
     tiles    a soft orange chip with the same icon as the page's menu entry.
     tabs     centred; the active tab is solid orange.
     actions  one colour per kind of action, the same in a row and in the
              side panel: View blue, Update green, Manage orange, Delete
              red, Schedule (TDO) amber. jt-ui.js tags them (data-jt-act).
   ===================================================================== */
#kt_content .jt-stats > .jt-stat[class*="jt-stat--"] {
	border-top: 3px solid var(--jt-stage) !important; background: var(--jt-stage-tint) !important; border-color: color-mix(in srgb, var(--jt-stage) 22%, #fff) !important; border-top-color: var(--jt-stage) !important;
}
#kt_content .jt-stats > a.jt-stat[class*="jt-stat--"]:hover { background: var(--jt-stage-tint-2) !important; box-shadow: 0 4px 12px -6px color-mix(in srgb, var(--jt-stage) 45%, transparent) !important; }
#kt_content .jt-stats > .jt-stat[class*="jt-stat--"] .jt-stat__value { color: var(--jt-stage) !important; font-weight: 700 !important; }
#kt_content .jt-stats > .jt-stat[class*="jt-stat--"] .jt-stat__label { color: #1B2433 !important; font-weight: 600 !important; }
#kt_content .jt-stats > .jt-stat.jt-stat--red { --jt-stage: #D92D20; --jt-stage-tint: #FEF3F2; --jt-stage-tint-2: #FDE4E2; }

/* Count tiles (admin dashboard): an orange chip with the page's menu icon, the number, its name. */
#kt_content .jt-tile { display: grid !important; grid-template-columns: 40px minmax(0, 1fr); grid-template-rows: auto auto; column-gap: 14px; row-gap: 2px; align-items: center; justify-items: start; padding: 16px 18px !important; background: var(--nx-surface) !important; border: 1px solid var(--nx-border) !important; border-radius: 12px !important; box-shadow: none !important; text-decoration: none !important; text-align: left !important; transition: border-color .14s ease, box-shadow .14s ease; }
#kt_content .jt-tile > .jt-tile__icon { display: inline-flex !important; grid-column: 1; grid-row: 1 / span 2; width: 40px; height: 40px; margin: 0 !important; align-items: center; justify-content: center; border-radius: 10px !important; background: #FFF1E8 !important; color: var(--nx-accent) !important; transition: background-color .14s ease, color .14s ease; }
#kt_content .jt-tile > .jt-tile__icon svg { width: 20px; height: 20px; }
#kt_content .jt-tile > .jt-tile__icon i { font-size: 18px; color: inherit !important; }
#kt_content .jt-tile > .jt-tile__value { grid-column: 2; grid-row: 1; font-size: 20px !important; font-weight: 700 !important; letter-spacing: -0.02em; line-height: 1.15; color: var(--nx-text) !important; }
#kt_content .jt-tile > .jt-tile__label { grid-column: 2; grid-row: 2; font-size: 12.5px !important; font-weight: 500 !important; color: var(--nx-text-2) !important; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100%; }
#kt_content a.jt-tile:hover { border-color: #FFC9A6 !important; box-shadow: 0 4px 12px -6px rgba(242, 107, 29, .35) !important; }
#kt_content a.jt-tile:hover > .jt-tile__icon { background: var(--nx-accent) !important; color: #fff !important; }

/* Tabs on the older pages: centred, the active one solid orange. */
#kt_content .nav.jt-switch { display: flex !important; width: fit-content; max-width: 100%; margin-left: auto !important; margin-right: auto !important; }
#kt_content .nav.jt-switch .nav-link.active { background: var(--nx-accent) !important; color: #fff !important; box-shadow: 0 2px 6px -2px rgba(242, 107, 29, .55) !important; }
#kt_content .nav.jt-switch .nav-link:not(.active):hover { background: var(--nx-surface) !important; }

/* Actions by kind. */
:is(#kt_content, .modal, .jt-drawer, .jt-rv) .btn.btn.btn[data-jt-act] { --act: var(--nx-text-2); --act-bg: var(--nx-surface); --act-bd: var(--nx-border); --act-hover: var(--nx-page); }
:is(#kt_content, .modal, .jt-drawer, .jt-rv) .btn.btn.btn.btn[data-jt-act="view"]     { --act: #2563EB; --act-bg: #EFF4FF; --act-bd: #CFDDFB; --act-hover: #DFE9FE; }
:is(#kt_content, .modal, .jt-drawer, .jt-rv) .btn.btn.btn.btn[data-jt-act="edit"]     { --act: #067647; --act-bg: #ECFDF3; --act-bd: #BDEBD0; --act-hover: #D9F6E5; }
:is(#kt_content, .modal, .jt-drawer, .jt-rv) .btn.btn.btn.btn[data-jt-act="manage"]   { --act: #D9560F; --act-bg: #FFF3EB; --act-bd: #FDD3B6; --act-hover: #FFE6D5; }
:is(#kt_content, .modal, .jt-drawer, .jt-rv) .btn.btn.btn.btn[data-jt-act="delete"]   { --act: #B42318; --act-bg: #FEF3F2; --act-bd: #F8CFCB; --act-hover: #FDE4E2; }
:is(#kt_content, .modal, .jt-drawer, .jt-rv) .btn.btn.btn.btn[data-jt-act="schedule"] { --act: #B54708; --act-bg: #FFFAEB; --act-bd: #FCE3A6; --act-hover: #FEF0C7; }
:is(#kt_content, .modal, .jt-drawer, .jt-rv) .btn.btn.btn.btn[data-jt-act="go2"]      { --act: #D9560F; --act-bg: #FFF3EB; --act-bd: #FDD3B6; --act-hover: #FFE6D5; }
:is(#kt_content, .modal, .jt-drawer, .jt-rv) .btn.btn.btn.btn[data-jt-act="go"]       { --act: #fff; --act-bg: var(--nx-accent); --act-bd: var(--nx-accent); --act-hover: var(--nx-accent-hover); }
:is(#kt_content, .modal, .jt-drawer, .jt-rv) .btn.btn.btn[data-jt-act]:is(.jt-icon-only, .btn-icon, .jt-rv__action--named),
:is(#kt_content, .modal, .jt-drawer, .jt-rv) :is(td, .jt-job-alert-card) .btn.btn.btn[data-jt-act],
:is(#kt_content, .modal, .jt-drawer, .jt-rv) .jt-rv__actions > :first-child .btn.btn.btn[data-jt-act],
:is(#kt_content, .modal, .jt-drawer, .jt-rv) .jt-rv__actions > .btn.btn.btn[data-jt-act]:first-child {
	background: var(--act-bg) !important; border: 1px solid var(--act-bd) !important; color: var(--act) !important;
}
:is(#kt_content, .modal, .jt-drawer, .jt-rv) .btn.btn.btn[data-jt-act]:is(.jt-icon-only, .btn-icon, .jt-rv__action--named) :is(i, svg),
:is(#kt_content, .modal, .jt-drawer, .jt-rv) :is(td, .jt-job-alert-card) .btn.btn.btn[data-jt-act] :is(i, svg),
:is(#kt_content, .modal, .jt-drawer, .jt-rv) .jt-rv__actions .btn.btn.btn[data-jt-act] :is(i, svg) { color: var(--act) !important; }
:is(#kt_content, .modal, .jt-drawer, .jt-rv) .btn.btn.btn[data-jt-act]:is(.jt-icon-only, .btn-icon, .jt-rv__action--named):not(:disabled):hover,
:is(#kt_content, .modal, .jt-drawer, .jt-rv) :is(td, .jt-job-alert-card) .btn.btn.btn[data-jt-act]:not(:disabled):hover,
:is(#kt_content, .modal, .jt-drawer, .jt-rv) .jt-rv__actions .btn.btn.btn[data-jt-act]:not(:disabled):hover {
	background: var(--act-hover) !important; border-color: color-mix(in srgb, var(--act) 45%, #fff) !important; color: var(--act) !important;
}
:is(#kt_content, .modal, .jt-drawer, .jt-rv) .btn.btn.btn[data-jt-act]:is(.jt-icon-only, .btn-icon):is(:disabled, .disabled) {
	background: var(--nx-page) !important; border-color: var(--nx-border) !important; opacity: 1 !important;
}
:is(#kt_content, .modal, .jt-drawer, .jt-rv) .btn.btn.btn[data-jt-act]:is(.jt-icon-only, .btn-icon):is(:disabled, .disabled) :is(i, svg) { color: #B4BCC8 !important; }

/* The side panel's actions: one even row (stacked on a phone), never a 2 + 1 wrap. */
.jt-rv__actions { display: flex !important; gap: 8px !important; }
.jt-rv__actions > * { flex: 1 1 0; min-width: 0; display: flex; }
.jt-rv__actions > * > .btn, .jt-rv__actions > .btn { width: 100% !important; }
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) .jt-rv__actions .btn.jt-rv__action--named { width: 100% !important; padding: 0 12px !important; justify-content: center; }
.jt-rv__actions .jt-rv__action-label { overflow: hidden; text-overflow: ellipsis; }
@media (max-width: 575.98px) { .jt-rv__actions { flex-direction: column; } }
/* The same eye for "view" in the panel as in the row. */
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) .jt-rv__actions .btn i:is(.flaticon-search-magnifier-interface-symbol, .flaticon-search, .flaticon2-search-1, .flaticon2-search, .la-search) { --jt-ic: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M2.5%2012S6%205.5%2012%205.5%2021.5%2012%2021.5%2012%2018%2018.5%2012%2018.5%202.5%2012%202.5%2012z%22%2F%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%2212%22%20r%3D%223%22%2F%3E%3C%2Fsvg%3E"); }
/* A list toolbar is one line on a desktop: [filters] [search, takes what is left] [exports]. */
@media (min-width: 768px) {
	#kt_content .jt-toolbar { flex-wrap: nowrap !important; }
	#kt_content .jt-toolbar > .jt-toolbar__search { flex: 1 1 auto !important; min-width: 0; }
	#kt_content .jt-toolbar > :is(.jt-toolbar__filter, .jt-toolbar__exports) { flex: 0 0 auto !important; }
}
:is(#kt_content, .modal, .jt-drawer, .jt-rv) td .btn.btn.btn.btn[data-jt-act="go"]:not(:disabled):hover { border-color: var(--nx-accent-hover) !important; color: #fff !important; }
/* The newer lists' row buttons: the same kind colours as every other row action. */
:is(.jt-crx-manage, .jt-crx-icon)[data-jt-act] { --act: var(--nx-text); --act-bg: var(--nx-surface); --act-bd: var(--nx-border); --act-hover: var(--nx-page); }
:is(.jt-crx-manage, .jt-crx-icon)[data-jt-act="view"]     { --act: #2563EB; --act-bg: #EFF4FF; --act-bd: #CFDDFB; --act-hover: #DFE9FE; }
:is(.jt-crx-manage, .jt-crx-icon)[data-jt-act="edit"]     { --act: #067647; --act-bg: #ECFDF3; --act-bd: #BDEBD0; --act-hover: #D9F6E5; }
:is(.jt-crx-manage, .jt-crx-icon)[data-jt-act="manage"]   { --act: #D9560F; --act-bg: #FFF3EB; --act-bd: #FDD3B6; --act-hover: #FFE6D5; }
:is(.jt-crx-manage, .jt-crx-icon)[data-jt-act="delete"]   { --act: #B42318; --act-bg: #FEF3F2; --act-bd: #F8CFCB; --act-hover: #FDE4E2; }
:is(.jt-crx-manage, .jt-crx-icon)[data-jt-act="schedule"] { --act: #B54708; --act-bg: #FFFAEB; --act-bd: #FCE3A6; --act-hover: #FEF0C7; }
:is(.jt-crx-manage, .jt-crx-icon)[data-jt-act="go2"]      { --act: #D9560F; --act-bg: #FFF3EB; --act-bd: #FDD3B6; --act-hover: #FFE6D5; }
:is(.jt-crx-manage, .jt-crx-icon)[data-jt-act="go"]       { --act: #fff; --act-bg: var(--nx-accent); --act-bd: var(--nx-accent); --act-hover: var(--nx-accent-hover); }
:is(.jt-crx-manage, .jt-crx-icon):is(.jt-crx-manage, .jt-crx-icon)[data-jt-act] { background: var(--act-bg) !important; border-color: var(--act-bd) !important; color: var(--act) !important; }
:is(.jt-crx-manage, .jt-crx-icon):is(.jt-crx-manage, .jt-crx-icon)[data-jt-act] :is(.jt-icon, svg, i) { color: var(--act) !important; }
:is(.jt-crx-manage, .jt-crx-icon):is(.jt-crx-manage, .jt-crx-icon)[data-jt-act]:hover { background: var(--act-hover) !important; border-color: var(--act-bd) !important; color: var(--act) !important; }
:is(.jt-crx-manage, .jt-crx-icon):is(.jt-crx-manage, .jt-crx-icon)[data-jt-act="go"]:hover { border-color: var(--nx-accent-hover) !important; }
:is(.jt-crx-manage, .jt-crx-icon):is(.jt-crx-manage, .jt-crx-icon)[data-jt-act]:hover :is(.jt-icon, svg, i) { color: var(--act) !important; }

/* 65. A card inside a card (the older admin lists, Allocate TDO): the inner one
   is part of the outer one, not a second bordered box. */
#kt_content .card > .card-body > .card,
#kt_content .card > .card-body > .tab-content .card,
#kt_content .card > .card-body > .tab-content > .tab-pane > .card {
	border: 0 !important; box-shadow: none !important; background: transparent !important; margin-bottom: 0 !important; border-radius: 0 !important;
}
#kt_content .card > .card-body > .card > .card-body,
#kt_content .card > .card-body > .tab-content .card > .card-body { padding-left: 0 !important; padding-right: 0 !important; }
#kt_content .card > .card-body > .card > .card-header { padding-left: 0 !important; padding-right: 0 !important; min-height: 0 !important; }
#kt_content .card > .card-body > .card + .card { margin-top: 28px !important; }

/* 66. Full details pages: a page head (job, client, its actions), values in the text colour. */
.jt-fd-head { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 16px; margin: 4px 0 20px; }
.jt-fd-head__actions { display: flex; flex-wrap: wrap; gap: 10px; }
.jt-fd-value { color: var(--nx-text); font-weight: 600; }
.modal-footer form { display: flex; gap: 10px; justify-content: flex-end; width: 100%; margin: 0; }
/* Dashboard charts never wider than their box (on a phone they were 4px over, so the page scrolled sideways). */
.jt-chart { max-width: 100%; overflow: hidden; }
.jt-chart svg { max-width: 100%; }
/* A .row's gutters were half a pixel wider than the container's padding on a phone. */
@media (max-width: 575.98px) { #kt_content .container { overflow-x: clip; } }

/* =====================================================================
   67. One page head everywhere. The older pages put their title in the
   header of their first card; the rebuilt ones put it above the card
   (.jt-crx-pagehead). The first card's plain header (no tabs in it) now
   reads as the page head: title 22px, its description under it, its
   action on the right, and the card below is the white box.
   ===================================================================== */
#kt_content .container > .card:has(> .card-header):not(:has(> .card-header .nav)):not(.card + .card):has(> .card-body, > form > .card-body):not(:has(> .nav, > .tab-content)):not(.jt-crx-card):not(.jt-crx-pagehead ~ .card):not(.row ~ .card):not(.jt-stats ~ .card):not(.jt-section-label ~ .card) {
	background: transparent !important; border: 0 !important; box-shadow: none !important; border-radius: 0 !important;
}
#kt_content .container > .card:has(> .card-header):not(:has(> .card-header .nav)):not(.card + .card):has(> .card-body, > form > .card-body):not(:has(> .nav, > .tab-content)):not(.jt-crx-card):not(.jt-crx-pagehead ~ .card):not(.row ~ .card):not(.jt-stats ~ .card):not(.jt-section-label ~ .card) > .card-header {
	display: flex !important; flex-wrap: wrap; align-items: flex-end !important; justify-content: space-between; gap: 12px 16px;
	min-height: 0 !important; padding: 0 0 18px !important; margin: 0 !important; background: transparent !important; border: 0 !important;
}
#kt_content .container > .card:has(> .card-header):not(:has(> .card-header .nav)):not(.card + .card):has(> .card-body, > form > .card-body):not(:has(> .nav, > .tab-content)):not(.jt-crx-card):not(.jt-crx-pagehead ~ .card):not(.row ~ .card):not(.jt-stats ~ .card):not(.jt-section-label ~ .card) > .card-header .card-title { margin: 0 !important; display: block !important; }
#kt_content .container > .card:has(> .card-header):not(:has(> .card-header .nav)):not(.card + .card):has(> .card-body, > form > .card-body):not(:has(> .nav, > .tab-content)):not(.jt-crx-card):not(.jt-crx-pagehead ~ .card):not(.row ~ .card):not(.jt-stats ~ .card):not(.jt-section-label ~ .card) > .card-header :is(.card-label, h3.card-title) {
	display: block !important; margin: 0 !important; font-size: 20px !important; font-weight: 700 !important; letter-spacing: -0.01em; line-height: 1.25; color: var(--nx-text) !important;
}
#kt_content .container > .card:has(> .card-header):not(:has(> .card-header .nav)):not(.card + .card):has(> .card-body, > form > .card-body):not(:has(> .nav, > .tab-content)):not(.jt-crx-card):not(.jt-crx-pagehead ~ .card):not(.row ~ .card):not(.jt-stats ~ .card):not(.jt-section-label ~ .card) > .card-header .card-label :is(span, small, i, em),
#kt_content .container > .card:has(> .card-header):not(:has(> .card-header .nav)):not(.card + .card):has(> .card-body, > form > .card-body):not(:has(> .nav, > .tab-content)):not(.jt-crx-card):not(.jt-crx-pagehead ~ .card):not(.row ~ .card):not(.jt-stats ~ .card):not(.jt-section-label ~ .card) > .card-header .card-title > :is(span, small, p, .text-muted):not(.card-icon):not(.card-label) {
	display: block !important; margin: 4px 0 0 !important; padding: 0 !important; font-size: 13.5px !important; font-weight: 400 !important; font-style: normal !important; letter-spacing: 0; color: var(--nx-text-2) !important; line-height: 1.5;
}
#kt_content .container > .card:has(> .card-header):not(:has(> .card-header .nav)):not(.card + .card):has(> .card-body, > form > .card-body):not(:has(> .nav, > .tab-content)):not(.jt-crx-card):not(.jt-crx-pagehead ~ .card):not(.row ~ .card):not(.jt-stats ~ .card):not(.jt-section-label ~ .card) > .card-header .card-toolbar { margin: 0 !important; padding: 0 !important; }
#kt_content .container > .card:has(> .card-header):not(:has(> .card-header .nav)):not(.card + .card):has(> .card-body, > form > .card-body):not(:has(> .nav, > .tab-content)):not(.jt-crx-card):not(.jt-crx-pagehead ~ .card):not(.row ~ .card):not(.jt-stats ~ .card):not(.jt-section-label ~ .card) > .card-body {
	background: var(--nx-surface) !important; border: 1px solid var(--nx-border) !important; border-radius: 12px !important;
}
#kt_content .container > .card:has(> .card-header):not(:has(> .card-header .nav)):not(.card + .card):has(> .card-body, > form > .card-body):not(:has(> .nav, > .tab-content)):not(.jt-crx-card):not(.jt-crx-pagehead ~ .card):not(.row ~ .card):not(.jt-stats ~ .card):not(.jt-section-label ~ .card):has(> .card-footer) > .card-body { border-bottom: 0 !important; border-radius: 12px 12px 0 0 !important; }
#kt_content .container > .card:has(> .card-header):not(:has(> .card-header .nav)):not(.card + .card):has(> .card-body, > form > .card-body):not(:has(> .nav, > .tab-content)):not(.jt-crx-card):not(.jt-crx-pagehead ~ .card):not(.row ~ .card):not(.jt-stats ~ .card):not(.jt-section-label ~ .card) > .card-footer {
	background: var(--nx-surface) !important; border: 1px solid var(--nx-border) !important; border-radius: 0 0 12px 12px !important;
}
#kt_content .container > .card:has(> .card-header):not(:has(> .card-header .nav)):not(.card + .card):has(> .card-body, > form > .card-body):not(:has(> .nav, > .tab-content)):not(.jt-crx-card):not(.jt-crx-pagehead ~ .card):not(.row ~ .card):not(.jt-stats ~ .card):not(.jt-section-label ~ .card) > form > .card-body {
	background: var(--nx-surface) !important; border: 1px solid var(--nx-border) !important; border-radius: 12px !important;
}
#kt_content .container > .card:has(> .card-header):not(:has(> .card-header .nav)):not(.card + .card):has(> .card-body, > form > .card-body):not(:has(> .nav, > .tab-content)):not(.jt-crx-card):not(.jt-crx-pagehead ~ .card):not(.row ~ .card):not(.jt-stats ~ .card):not(.jt-section-label ~ .card):has(> form > .card-footer) > form > .card-body { border-bottom: 0 !important; border-radius: 12px 12px 0 0 !important; }
#kt_content .container > .card:has(> .card-header):not(:has(> .card-header .nav)):not(.card + .card):has(> .card-body, > form > .card-body):not(:has(> .nav, > .tab-content)):not(.jt-crx-card):not(.jt-crx-pagehead ~ .card):not(.row ~ .card):not(.jt-stats ~ .card):not(.jt-section-label ~ .card) > form > .card-footer {
	background: var(--nx-surface) !important; border: 1px solid var(--nx-border) !important; border-radius: 0 0 12px 12px !important;
}
#kt_content .container > .card:has(> .card-header):not(:has(> .card-header .nav)):not(.card + .card):has(> .card-body, > form > .card-body):not(:has(> .nav, > .tab-content)):not(.jt-crx-card):not(.jt-crx-pagehead ~ .card):not(.row ~ .card):not(.jt-stats ~ .card):not(.jt-section-label ~ .card) > .card-header :is(.card-icon, .card-title > i, .card-title > .svg-icon) { display: none !important; }
/* Form fields inside a table row (Allocate TDO) keep a readable width; the table scrolls instead of cutting names. */
#kt_content td > :is(select.form-control, .bootstrap-select) { min-width: 190px; }
#kt_content td > input.form-control:not([type=hidden]) { min-width: 120px; }

/* 68. A count beside a value (Delivery starts: "2 containers") is the "+N" pill, not a
   dropdown; the details behind it (.jt-x-more) show only in the row's side panel. */
.jt-x-pill { display: inline-flex; align-items: center; margin-left: 8px; padding: 1px 8px; border-radius: 999px; font-size: 11.5px; font-weight: 600; white-space: nowrap; color: var(--nx-text-2); background: var(--nx-surface-2); box-shadow: 0 0 0 1px var(--nx-border); font-variant-numeric: tabular-nums; vertical-align: middle; }
td .jt-x-more { display: none !important; }
.jt-rv__value .jt-x-pill { display: none !important; }
.jt-rv__value .jt-del-cons { display: flex !important; flex-direction: column; gap: 4px; margin-top: 6px; font-size: 13px; color: var(--nx-text-2); }
.jt-rv__value .jt-del-cons b { color: var(--nx-text); font-weight: 600; margin-right: 4px; }

/* 69. Search filters: each one labelled, "Look in" a single choice with how many
   results each holds, the created dates as one range; they apply on change (search.php). */
.jt-srch-filters { align-items: flex-start !important; gap: 14px 16px !important; margin-top: 16px !important; }
.jt-srch-group { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.jt-srch-group--client { flex: 0 1 210px; }
.jt-srch-group:has(#jtSrchStatus) { flex: 0 1 170px; }
.jt-srch-label { font-size: 12px; font-weight: 600; color: var(--nx-text-2); margin: 0; }
.jt-srch-in { display: inline-flex; }
.jt-srch-in .jt-crx-seg__btn { cursor: pointer; margin: 0; display: inline-flex; align-items: center; gap: 6px; }
.jt-srch-in input { position: absolute; opacity: 0; pointer-events: none; }
.jt-srch-in .jt-crx-seg__btn:has(input:focus-visible) { box-shadow: var(--nx-ring); }
.jt-srch-n { display: inline-flex; min-width: 20px; height: 18px; padding: 0 6px; align-items: center; justify-content: center; border-radius: 999px; font-size: 11px; font-weight: 700; background: var(--nx-surface-2); color: var(--nx-text-2); box-shadow: 0 0 0 1px var(--nx-border); font-variant-numeric: tabular-nums; }
.jt-srch-in .is-active .jt-srch-n { background: var(--nx-accent); color: #fff; box-shadow: none; }
.jt-srch-range { display: flex; align-items: center; gap: 8px; }
.jt-srch-range .form-control { width: 116px !important; }
.jt-srch-range__to { font-size: 13px; color: var(--nx-text-3); }
#kt_content .jt-srch-group :is(.form-control, .bootstrap-select > .dropdown-toggle) { height: 38px !important; min-height: 38px !important; line-height: 36px !important; font-size: 13.5px !important; }
.jt-srch-foot { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 12px; }
.jt-srch-foot .jt-srch-hint { margin: 0; }
.jt-srch-clear { margin-left: auto !important; flex: 0 0 auto; }
.jt-srch-in.jt-crx-seg { height: 38px; align-items: center; }
.jt-srch-hint { margin: 12px 0 0; font-size: 12.5px; color: var(--nx-text-3); }
@media (max-width: 767.98px) { .jt-srch-group, .jt-srch-group--client { flex: 1 1 100%; } .jt-srch-in { overflow-x: auto; max-width: 100%; } .jt-srch-range .form-control { flex: 1 1 0; width: auto !important; } }
:is(.jt-crx-manage, .jt-crx-icon):is(.jt-crx-manage, .jt-crx-icon)[data-jt-act]:is(:disabled, .disabled, [aria-disabled="true"]) { background: var(--nx-page) !important; border-color: var(--nx-border) !important; color: #B4BCC8 !important; cursor: not-allowed; }
:is(.jt-crx-manage, .jt-crx-icon):is(.jt-crx-manage, .jt-crx-icon)[data-jt-act]:is(:disabled, .disabled, [aria-disabled="true"]) :is(.jt-icon, svg, i) { color: #B4BCC8 !important; }

/* =====================================================================
   70. Manage Job, Job Details: the whole card width, three sections (The
   job, Shipment, Documents and permits) in two columns, labels above the
   fields. Markup and ids are unchanged (job_manage.php's scripts show and
   hide #bol, #airway, #takeoff ... by mode), only the layout; Job Status is
   placed with the job's basics by `order`.
   ===================================================================== */
.jt-mj-form > .col-xl-2 { display: none !important; }
.jt-mj-form > .col-xl-8 { flex: 0 0 100% !important; max-width: 100% !important; }
.jt-mj-form .my-5 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px 24px; margin: 4px 0 8px !important; }
.jt-mj-form .my-5 > .form-group.row { display: flex; flex-direction: column; gap: 0; margin: 0 !important; min-width: 0; }
.jt-mj-form .my-5 > .form-group.row[hidden], .jt-mj-form .my-5 > .form-group.row[style*="display: none"] { display: none !important; }
.jt-mj-form .my-5 > .form-group.row > [class*="col-"] { flex: none !important; max-width: 100% !important; width: 100% !important; padding: 0 !important; }
.jt-mj-form .my-5 > .form-group.row > label { margin: 0 0 6px !important; font-size: 13px !important; font-weight: 600 !important; color: var(--nx-text) !important; }
.jt-mj-form .my-5 :is(.form-control, .bootstrap-select > .dropdown-toggle) { height: 38px !important; min-height: 38px !important; font-size: 13.5px !important; }
.jt-mj-form .my-5 textarea.form-control { height: auto !important; min-height: 96px !important; }
.jt-form-grid > .col-xl-2 { display: none !important; }
.jt-form-grid > .col-xl-8 { flex: 0 0 100% !important; max-width: 100% !important; }
.jt-form-grid .my-5 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px 24px; margin: 4px 0 8px !important; }
.jt-form-grid .my-5 > .form-group.row { display: flex; flex-direction: column; gap: 0; margin: 0 !important; min-width: 0; }
.jt-form-grid .my-5 > .form-group.row[hidden], .jt-form-grid .my-5 > .form-group.row[style*="display: none"] { display: none !important; }
.jt-form-grid .my-5 > .form-group.row > [class*="col-"] { flex: none !important; max-width: 100% !important; width: 100% !important; padding: 0 !important; }
.jt-form-grid .my-5 > .form-group.row > label { margin: 0 0 6px !important; font-size: 13px !important; font-weight: 600 !important; color: var(--nx-text) !important; }
.jt-form-grid .my-5 :is(.form-control, .bootstrap-select > .dropdown-toggle) { height: 38px !important; min-height: 38px !important; font-size: 13.5px !important; }
.jt-form-grid .my-5 textarea.form-control { height: auto !important; min-height: 96px !important; }
.jt-mj-section { grid-column: 1 / -1; padding-top: 20px; border-top: 1px solid var(--nx-border); }
.jt-mj-section h4 { margin: 0 0 3px; font-size: 15px; font-weight: 700; color: var(--nx-text); }
.jt-mj-section p { margin: 0; font-size: 12.5px; color: var(--nx-text-2); }
.jt-mj-section--job { order: 1; padding-top: 0; border-top: 0; }
.jt-mj-form #process_g { order: 2; } .jt-mj-form #mode_g { order: 3; } .jt-mj-form #client_g { order: 4; } .jt-mj-form #jobtype { order: 5; } .jt-mj-form #jobstatus_g { order: 6; }
.jt-mj-form .jt-change-reason-row { order: 7; grid-column: 1 / -1; }
.jt-mj-section--ship { order: 10; }
.jt-mj-form #pre_des { order: 11; grid-column: 1 / -1; } .jt-mj-form #bol { order: 12; } .jt-mj-form #airway { order: 13; } .jt-mj-form #shipped { order: 14; } .jt-mj-form #takeoff { order: 15; } .jt-mj-form #shipdest { order: 16; } .jt-mj-form #goodsdesc { order: 17; grid-column: 1 / -1; }
.jt-mj-section--docs { order: 20; }
.jt-mj-form #paarstatus { order: 21; } .jt-mj-form #nafdacref { order: 22; } .jt-mj-form #formm { order: 23; }
@media (max-width: 767.98px) { :is(.jt-mj-form, .jt-form-grid) .my-5 { grid-template-columns: 1fr; } }
/* Manage Job's other tabs (Ownership, Duty & Valuation, Delays, Comments): the same text sizes
   as the rest of the app; they used the theme's "small" sizes (11.5px labels, 9.75px hints). */
#kt_content :is(#jt-tab-ownership, #jt-tab-duty, #jt-tab-delays, #jt-tab-comments) .font-size-sm { font-size: 13px !important; }
#kt_content :is(#jt-tab-ownership, #jt-tab-duty, #jt-tab-delays, #jt-tab-comments) .text-muted.font-weight-bold.font-size-sm { font-size: 13px !important; font-weight: 600 !important; color: var(--nx-text-2) !important; }
#kt_content :is(#jt-tab-ownership, #jt-tab-duty, #jt-tab-delays, #jt-tab-comments) .form-text { font-size: 12.5px !important; margin-top: 6px; }
#kt_content :is(#jt-tab-ownership, #jt-tab-duty, #jt-tab-delays, #jt-tab-comments) label { font-size: 13px !important; font-weight: 600 !important; color: var(--nx-text) !important; margin-bottom: 8px; }
#kt_content :is(#jt-tab-ownership, #jt-tab-duty, #jt-tab-delays, #jt-tab-comments) .font-size-h5 { font-size: 16px !important; }
#kt_content :is(#jt-tab-ownership, #jt-tab-duty, #jt-tab-delays, #jt-tab-comments) .font-size-h4 { font-size: 20px !important; }
#kt_content :is(#jt-tab-ownership, #jt-tab-duty, #jt-tab-delays, #jt-tab-comments) .font-weight-bolder.text-dark-75:not(.font-size-h4):not(.font-size-h5) { font-size: 14.5px !important; font-weight: 700 !important; color: var(--nx-text) !important; }
#kt_content :is(#jt-tab-ownership, #jt-tab-duty, #jt-tab-delays, #jt-tab-comments) :is(.form-control, .bootstrap-select > .dropdown-toggle):not(textarea) { height: 38px !important; min-height: 38px !important; font-size: 13.5px !important; }
#kt_content :is(#jt-tab-ownership, #jt-tab-duty, #jt-tab-delays, #jt-tab-comments) table { font-size: 14px; }

/* 71. One help icon. The server's "?" (.jt-hint) and the script's (i) (.jt-help) were two
   different marks, sometimes side by side, and the "?" filled solid orange on hover. Both are
   the same outlined (i) now, muted, and on hover only darken on a light grey disc. */
.jt-hint, .jt-help { display: inline-flex !important; align-items: center; justify-content: center; width: 20px !important; height: 20px !important; margin-left: 6px !important; padding: 0 !important; border: 0 !important; border-radius: 50% !important; background: transparent !important; color: var(--nx-text-3) !important; vertical-align: -4px !important; cursor: help; box-shadow: none !important; transition: background-color .14s ease, color .14s ease; }
.jt-hint > span { display: none; }
.jt-hint::before { content: ''; width: 15px; height: 15px; background: currentColor; -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Ccircle cx='8' cy='8' r='7' fill='none' stroke='%23000' stroke-width='1.4'/%3E%3Cpath d='M8 7.2v4.3M8 4.6v.2' stroke='%23000' stroke-width='1.7' stroke-linecap='round'/%3E%3C/svg%3E") center / contain no-repeat; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Ccircle cx='8' cy='8' r='7' fill='none' stroke='%23000' stroke-width='1.4'/%3E%3Cpath d='M8 7.2v4.3M8 4.6v.2' stroke='%23000' stroke-width='1.7' stroke-linecap='round'/%3E%3C/svg%3E") center / contain no-repeat; }
.jt-help svg { width: 15px !important; height: 15px !important; }
:is(.jt-hint, .jt-help):is(:hover, :focus) { background: #EEF0F3 !important; color: var(--nx-text) !important; outline: none; }
:is(.jt-hint, .jt-help):focus-visible { box-shadow: var(--nx-ring) !important; }
/* Export Manage Job: the same sections (The job, Booking and references, Goods). */
.jt-mj-form--exp #bol_g { order: 11; } .jt-mj-form--exp #nxp { order: 12; } .jt-mj-form--exp #booking { order: 13; } .jt-mj-form--exp #expref { order: 14; }
.jt-mj-form--exp #clientref { order: 15; } .jt-mj-form--exp #pfi { order: 16; } .jt-mj-form--exp #loading { order: 17; }
.jt-mj-form--exp #expgoodsdesc { order: 21; grid-column: 1 / -1; }
/* A required label's star sits between its text and the help icon, outside the icon's disc. */
label.jt-label-required .jt-help-anchor .jt-help { position: relative; margin-left: 16px !important; overflow: visible; }
label.jt-label-required .jt-help-anchor .jt-help::before { position: absolute; right: 100%; top: 50%; transform: translateY(-50%); margin: 0 4px 0 0 !important; }
.jt-help svg { flex: 0 0 15px; }
/* Create Job: the same two-column, labels-above layout as Manage Job; long text fields span the row. */
.jt-form-grid .my-5 > .form-group.row:has(textarea) { grid-column: 1 / -1; }
.jt-form-grid .my-5 > :not(.form-group) { grid-column: 1 / -1; }

/* 72. Every job form in the new format (Peter, 21/10: "I like this one"): section headings
   17px with a rule above, labels 14px semibold, fields 44px with 15px text. Applies to the
   stage pages (Preclearing, Clearing, Post Clearing, Haulage, Export, Invoicing). */
#kt_content form .jt-section-label { display: flex !important; align-items: center; gap: 0; margin: 28px 0 16px !important; padding-top: 20px !important; border-top: 1px solid var(--nx-border); font-size: 15px !important; font-weight: 700 !important; letter-spacing: 0 !important; text-transform: none !important; color: var(--nx-text) !important; }
#kt_content form .jt-section-label:first-of-type, #kt_content form .card-body > .jt-section-label:first-child, #kt_content form .tab-pane > .jt-section-label:first-child { margin-top: 4px !important; padding-top: 0 !important; border-top: 0; }
#kt_content form .jt-section-label__icon { display: none !important; }
#kt_content form .form-group > label, #kt_content form .form-group > .jt-label-row > label, #kt_content form .form-group > [class*="col-"] > label, #kt_content form .form-group > [class*="col-"] > .jt-label-row > label { font-size: 13px !important; font-weight: 600 !important; color: var(--nx-text) !important; margin-bottom: 6px !important; }
#kt_content form .form-group :is(input.form-control:not([type=hidden]), select.form-control, .bootstrap-select > .dropdown-toggle) { height: 38px !important; min-height: 38px !important; font-size: 13.5px !important; }
#kt_content form .form-group .input-group > .input-group-append > :is(.btn, .input-group-text) { height: 38px !important; }
#kt_content form .form-group .form-text { font-size: 12.5px !important; }
#kt_content form .form-group { margin-bottom: 16px; }

/* =====================================================================
   73. Full details (and Haulage full details): the tabs alone at the top
   (no "Details by stage" title), each stage's fields as a three-column grid
   of small label over value, an empty value reads "Not recorded", no inner
   scroll box; the casing list keeps its table.
   ===================================================================== */
#kt_content .jt-fd > .card-header:has(.nav) { justify-content: center !important; border-bottom: 1px solid var(--nx-border) !important; padding: 14px 20px !important; min-height: 0 !important; }
#kt_content .jt-fd > .card-header:has(.nav) > .card-title { display: none !important; }
#kt_content .jt-fd > .card-header:not(:has(.nav)) { padding: 16px 24px !important; min-height: 0 !important; border-bottom: 1px solid var(--nx-border) !important; }
#kt_content .jt-fd > .card-header > .card-toolbar { margin: 0 !important; }
#kt_content .jt-fd .tab-pane > .card, #kt_content .jt-fd .tab-pane .card#full_detail { border: 0 !important; box-shadow: none !important; margin: 0 !important; background: transparent !important; }
#kt_content .jt-fd .tab-pane .card-body { padding: 20px 4px 8px !important; }
#kt_content .jt-fd .table-responsive { max-height: none !important; overflow: visible !important; }
#kt_content .jt-fd table.table-borderless > tbody { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0 24px; }
#kt_content .jt-fd table.table-borderless > tbody > tr { display: flex; flex-direction: column; gap: 4px; padding: 12px 0 !important; border-bottom: 1px solid var(--nx-border) !important; }
#kt_content .jt-fd table.table-borderless > tbody > tr > td { display: block; width: auto !important; padding: 0 !important; border: 0 !important; text-align: left !important; }
#kt_content .jt-fd table.table-borderless > tbody > tr > td:first-child { font-size: 12.5px !important; font-weight: 500 !important; color: var(--nx-text-2) !important; }
#kt_content .jt-fd table.table-borderless > tbody > tr > td:nth-child(2):empty { display: none; }
#kt_content .jt-fd table.table-borderless > tbody > tr > td:last-child, #kt_content .jt-fd .jt-fd-value { font-size: 14px !important; font-weight: 600 !important; color: var(--nx-text) !important; }
#kt_content .jt-fd .jt-fd-value:empty::after { content: 'Not recorded'; font-weight: 400; color: #9AA3AF; }
#kt_content .jt-fd .tab-pane > .jt-empty-state, #kt_content .jt-fd .tab-pane .jt-empty-state { margin: 24px auto; }
@media (max-width: 991.98px) { #kt_content .jt-fd table.table-borderless > tbody { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 575.98px) { #kt_content .jt-fd table.table-borderless > tbody { grid-template-columns: 1fr; } }
/* A list row drawn with ARIA roles opens the side panel like a table row. */
[role="row"].jt-rv-row { cursor: pointer; }
[role="row"].jt-rv-row:hover { background: var(--nx-surface-2); }
[role="row"].jt-rv-row:focus-visible { outline: none; box-shadow: inset 3px 0 0 var(--nx-accent); }
/* Side panel actions: buttons at their own width, centred in the footer (the panel's convention,
   one button or several), label centred; never a full-width bar. */
.jt-rv__actions { justify-content: center !important; flex-wrap: wrap !important; }
.jt-rv__actions > * { flex: 0 0 auto !important; }
.jt-rv__actions > * > .btn, .jt-rv__actions > .btn { width: auto !important; }
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) .jt-rv__actions .btn.jt-rv__action--named { width: auto !important; }
.jt-rv__actions :is(.jt-crx-manage, .jt-crx-icon) { display: inline-flex !important; align-items: center; justify-content: center; gap: 8px; width: auto !important; height: 38px !important; padding: 0 16px !important; border-radius: 9px !important; font-size: 13px !important; font-weight: 600 !important; }
@media (max-width: 575.98px) { .jt-rv__actions > *, .jt-rv__actions > * > .btn, .jt-rv__actions :is(.jt-crx-manage, .jt-crx-icon) { flex: 1 1 100% !important; width: 100% !important; } }
/* Side panel actions, final word (the panels' own convention): centred, 40px tall; a single
   action is a wide button (at least 200px), several keep their own width so they sit in one row. */
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) .jt-rv__actions :is(.btn, .jt-crx-manage, .jt-crx-icon) { height: 40px !important; min-height: 40px !important; padding: 0 18px !important; font-size: 13.5px !important; justify-content: center !important; }
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) .jt-rv__actions > :only-child :is(.btn, .jt-crx-manage, .jt-crx-icon),
:is(#kt_content, .modal, .jt-drawer, .jt-confirm, .jt-rv) .jt-rv__actions > :is(.btn, .jt-crx-manage, .jt-crx-icon):only-child { min-width: 200px !important; }

/* 74. Drop-down lists (bootstrap-select): always open downward, never cut off (they are drawn
   on the page body, jt-select-dedupe.js), and compact rows: the list used to inherit its field's
   36px line height, so each option was 56px tall with its text off-centre. */
.bootstrap-select .dropdown-menu, .bs-container .dropdown-menu { line-height: 1.4 !important; font-size: 13.5px !important; padding: 6px !important; border: 1px solid var(--nx-border) !important; border-radius: 10px !important; box-shadow: 0 10px 28px -8px rgba(16, 24, 40, .22) !important; }
:is(.bootstrap-select, .bs-container) .dropdown-menu li a.dropdown-item { padding: 8px 10px !important; line-height: 1.4 !important; border-radius: 7px; white-space: normal; }
:is(.bootstrap-select, .bs-container) .dropdown-menu li a.dropdown-item .text { line-height: 1.4 !important; }
:is(.bootstrap-select, .bs-container) .dropdown-menu .bs-searchbox { padding: 4px 4px 8px !important; }
:is(.bootstrap-select, .bs-container) .dropdown-menu .bs-searchbox .form-control { height: 34px !important; min-height: 34px !important; line-height: 1.4 !important; font-size: 13px !important; }
/* Search, rethought: one filter row (Client, Stage, Job created) with Clear filters at its end,
   level with the fields; Look in is the results' own tabs, with counts, in the results header. */
.jt-srch-group--clear { margin-left: auto; align-self: flex-end; }
.jt-srch-group--clear .btn { height: 38px !important; min-height: 38px !important; }
.jt-srch .jt-srch-resulthead { display: flex; align-items: center; flex-wrap: wrap; gap: 10px 16px; }
.jt-srch .jt-srch-resulthead .jt-srch-in { height: 36px; }
.jt-srch .jt-srch-resulthead .jt-crx-cardhead__count { color: var(--nx-text-2); }
.jt-srch .jt-srch-resulthead { justify-content: flex-start !important; }
.jt-srch-label { font-size: 13px !important; font-weight: 600 !important; color: var(--nx-text) !important; }
/* Search filter row: Look in, Client, Stage, Job created and Clear filters on one line on a laptop. */
.jt-srch-filters { gap: 12px 12px !important; }
.jt-srch-group--client { flex: 0 1 180px !important; }
.jt-srch-group:has(#jtSrchStatus) { flex: 0 1 150px !important; }
.jt-srch-range .form-control { width: 100px !important; }
.jt-srch-in .jt-crx-seg__btn { padding-left: 10px !important; padding-right: 10px !important; }
.jt-srch-group--clear { margin-left: auto; align-self: flex-end; }
.jt-srch-group--clear .btn { height: 38px !important; min-height: 38px !important; }
.jt-srch-hint { margin: 12px 0 0 !important; }
/* Container search on Update Haulage, Stage 2: room for the magnifier inside the field. */
:is(#kt_content) .jt-con-search .jt-con-search__field input.form-control { padding-left: 38px !important; }

/* Many older pages close .page right after the sidebar (a stray </div>), so the
   main area (#kt_wrapper) ends up beside it instead of inside it. On a page shorter
   than the screen the emptied .page then grew to fill the leftover height and pushed
   everything down (Haulage Report results sat ~170px low). An empty .page never grows. */
.flex-root > .page:not(:has(#kt_wrapper)) { flex: 0 0 auto !important; min-height: 0 !important; }

/* ==============================================================   75. Duty & Valuation (REQ-0004): sections like Manage Job's Job Details,
   and a worked-out panel with the full duty breakdown beside what Customs
   assessed and the variance.
   ===================================================================== */
.jt-duty .jt-duty__section { margin: 24px 0 14px; padding-top: 20px; border-top: 1px solid var(--nx-border); }
.jt-duty .jt-duty__section--first { margin-top: 0; padding-top: 0; border-top: 0; }
.jt-duty .form-group.row { row-gap: 16px; }
.jt-duty__sum { margin: 24px 0 20px; padding: 18px 20px; border: 1px solid var(--nx-border); border-radius: 12px; background: var(--nx-surface-2); }
.jt-duty__sum-title { font-size: 12.5px; font-weight: 600; color: var(--nx-text-2); margin-bottom: 12px; }
.jt-duty__grid { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); gap: 24px; }
.jt-duty__line { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; padding: 7px 0; border-bottom: 1px dashed var(--nx-border); font-size: 13.5px; color: var(--nx-text); }
.jt-duty__name small { margin-left: 6px; font-size: 12px; color: var(--nx-text-3); }
.jt-duty__amt { font-variant-numeric: tabular-nums; font-weight: 600; white-space: nowrap; }
.jt-duty__line--total { border-bottom: 0; padding-top: 10px; font-size: 15px; font-weight: 700; }
.jt-duty__line--total .jt-duty__amt { font-size: 18px; font-weight: 700; }
.jt-duty__missing { margin-top: 6px; font-size: 12.5px; color: #B54708; }
.jt-duty__compare { display: grid; grid-template-columns: 1fr; gap: 12px; align-content: start; }
.jt-duty__fig { padding: 14px 16px; border: 1px solid var(--nx-border); border-radius: 10px; background: var(--nx-surface); }
.jt-duty__fig-label { font-size: 12.5px; font-weight: 600; color: var(--nx-text-2); }
.jt-duty__fig-value { margin-top: 4px; font-size: 20px; font-weight: 700; color: var(--nx-text); font-variant-numeric: tabular-nums; }
.jt-duty__fig-note { margin-top: 2px; font-size: 12.5px; color: var(--nx-text-3); }
.jt-duty input:disabled { background: var(--nx-page) !important; color: var(--nx-text-3) !important; }
@media (max-width: 767.98px) { .jt-duty__grid { grid-template-columns: 1fr; } }

/* =====================================================================
   76. Export stages (REQ-0008): the stage tracker under the job header, the
   one-line note under each section heading, the worked-out figures (VGM,
   days in clearing, days at port) drawn like the Duty tab's, and the bar
   that moves a job on to its next stage.
   ===================================================================== */
.jt-exp-track { display: flex; list-style: none; margin: 0 0 20px; padding: 14px 20px; background: var(--nx-surface); border: 1px solid var(--nx-border); border-radius: 12px; overflow-x: auto; }
.jt-exp-track__step { position: relative; flex: 1 1 0; min-width: 96px; display: flex; flex-direction: column; align-items: center; gap: 8px; font-size: 12.5px; font-weight: 500; color: var(--nx-text-3); text-align: center; white-space: nowrap; }
.jt-exp-track__step::before { content: ''; position: absolute; top: 6px; left: calc(-50% + 10px); right: calc(50% + 10px); height: 2px; background: var(--nx-border); }
.jt-exp-track__step:first-child::before { display: none; }
.jt-exp-track__dot { position: relative; z-index: 1; width: 14px; height: 14px; border-radius: 50%; border: 2px solid #C9CED6; background: var(--nx-surface); }
.jt-exp-track__step.is-done { color: var(--nx-text-2); }
.jt-exp-track__step.is-done .jt-exp-track__dot { border-color: #17A276; background: #17A276; }
.jt-exp-track__step.is-done::before, .jt-exp-track__step.is-current::before { background: #17A276; }
.jt-exp-track__step.is-current { color: var(--nx-text); font-weight: 700; }
.jt-exp-track__step.is-current .jt-exp-track__dot { border-color: var(--nx-accent); background: var(--nx-accent); box-shadow: 0 0 0 4px rgba(242, 106, 27, .18); }
#kt_content form .jt-section-label + .jt-exp-note { margin: -10px 0 14px; font-size: 12.5px; color: var(--nx-text-2); }
.jt-exp-calc { display: flex; flex-direction: column; justify-content: center; gap: 2px; min-height: 38px; padding: 8px 12px; border: 1px dashed var(--nx-border); border-radius: 9px; background: var(--nx-surface-2); }
.jt-exp-calc__value { font-size: 15px; font-weight: 700; color: var(--nx-text); font-variant-numeric: tabular-nums; }
.jt-exp-calc__none { font-size: 13px; font-weight: 500; color: var(--nx-text-3); }
.jt-exp-calc__note { font-size: 12px; color: var(--nx-text-2); }
#kt_content label + .jt-exp-calc { margin-top: 0; }
.card > .jt-exp-actions { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: 12px; }
.jt-exp-actions__note { margin-right: auto; font-size: 13px; color: var(--nx-text-2); }
.jt-exp-actions__done { font-size: 13px; font-weight: 600; color: var(--nx-text-2); }
.jt-exp-blank { margin: 0; padding-left: 18px; columns: 2; column-gap: 24px; font-size: 13px; color: var(--nx-text); }
.jt-exp-blank li { break-inside: avoid; padding: 2px 0; }
.jt-cons-weights { font-variant-numeric: tabular-nums; white-space: nowrap; }
.jt-cons-weights small { display: block; font-size: 12px; color: var(--nx-text-2); }
@media (max-width: 575.98px) {
	.jt-exp-track { padding: 12px; }
	.jt-exp-track__step { min-width: 84px; font-size: 12px; }
	.jt-exp-actions__note { flex: 1 1 100%; }
	.jt-exp-blank { columns: 1; }
}
.jt-exp-filter { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px; margin: 0 0 14px; padding: 10px 14px; border: 1px solid var(--nx-border); border-radius: 10px; background: var(--nx-surface-2); font-size: 13px; color: var(--nx-text-2); }
.jt-exp-filter b { color: var(--nx-text); }
.jt-stat--slate  { --jt-stage: #5B6B82; --jt-stage-tint: #F5F7FA; --jt-stage-tint-2: #EAEEF3; }
/* The confirmation's Cancel and its action on one line, the action last. */
.modal-footer > .jt-exp-move-form { display: inline-flex; margin: 0 0 0 8px; }
.modal-footer:has(> .jt-exp-move-form) { flex-wrap: nowrap; }
=======

/* Top bar avatar: the initial underneath, the photo over it when it loads (jt_topbar.php). */
#kt_quick_user_toggle .symbol .symbol-label.jt-user-initial { position: relative; overflow: hidden; }
#kt_quick_user_toggle .jt-user-photo { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; border-radius: inherit; }

/* 77. Tables that scroll sideways (DataTables scrollX) draw their header above the body and
   keep the original header row inside the body for sizing: that row showed as an empty strip
   above the first row. It keeps sizing the columns, at no height. */
#kt_content .dataTables_scrollBody > table > thead > tr > th,
#kt_content .dataTables_scrollBody > table > thead > tr > td,
.dataTables_scrollBody > table > thead > tr > th { padding-top: 0 !important; padding-bottom: 0 !important; border-top: 0 !important; border-bottom: 0 !important; height: 0 !important; line-height: 0 !important; }
#kt_content .dataTables_scrollBody > table > thead > tr, .dataTables_scrollBody > table > thead > tr { height: 0 !important; }
/* A confirmation's buttons on one line: Cancel / No, then the action, whose form sits in the footer. */
.modal-footer > form { display: inline-flex; margin: 0 0 0 8px; }
.modal-footer:has(> form) { flex-wrap: nowrap; }
/* Allocate TDO: the eight columns fit the card, so Allocate is never off to the right. */
#kt_content table.jt-alloc-table td > :is(select.form-control, input.form-control:not([type=hidden])) { min-width: 0; width: 100%; }
#kt_content table.jt-alloc-table > thead > tr > th { white-space: normal !important; line-height: 1.35; }
#kt_content table.jt-alloc-table > * > tr > :is(th, td) { padding-left: 8px !important; padding-right: 8px !important; }
#kt_content table.jt-alloc-table > * > tr > :nth-child(1) { width: 110px; }
#kt_content table.jt-alloc-table > * > tr > :is(:nth-child(2), :nth-child(3)) { width: 175px; }
#kt_content table.jt-alloc-table > * > tr > :is(:nth-child(4), :nth-child(6), :nth-child(7)) { width: 105px; }
#kt_content table.jt-alloc-table > * > tr > :nth-child(5) { width: 85px; }
#kt_content table.jt-alloc-table > * > tr > :nth-child(8) { width: 56px; }
@media (max-width: 575.98px) { .modal-footer:has(> form) { flex-wrap: wrap; } .modal-footer > form { margin: 8px 0 0; } }
