/* =====================================================================
   eDoctor Global - UI v2
   New application shell (sidebar / topbar / content) and page primitives.
   Loaded after the legacy stylesheets; every rule is scoped to body.ui-v2
   so it wins over the legacy rules without touching them.
   ===================================================================== */

:root {
	--font: 'Inter', system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
	--mono: 'JetBrains Mono', 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace;

	--bg: #F4F6F9;
	--surface: #FFFFFF;
	--surface-2: #F8FAFC;
	--sidebar-bg: #F4F6F9;
	--border: #E4E8EE;
	--border-strong: #CBD2DC;

	--text: #1E2A38;
	--text-2: #55657A;
	--text-3: #8A97A8;

	--primary: #0F8B8D;
	--primary-600: #0B7274;
	--primary-700: #095C5E;
	--primary-soft: #E3F4F4;
	--primary-ring: rgba(15, 139, 141, .22);

	--accent: #E93A00;

	--danger: #D92D20;
	--danger-soft: #FEF0EE;
	--success: #12805C;
	--success-soft: #E6F6EF;
	--warning: #B54708;
	--warning-soft: #FFF6E5;
	--info: #1D5FBF;
	--info-soft: #EAF1FC;

	--radius: 12px;
	--radius-sm: 8px;
	--radius-xs: 6px;

	--shadow-xs: 0 1px 2px rgba(16, 24, 40, .05);
	--shadow-sm: 0 1px 3px rgba(16, 24, 40, .08), 0 1px 2px rgba(16, 24, 40, .04);
	--shadow: 0 8px 24px rgba(16, 24, 40, .10);

	--sidebar-w: 250px;
	--sidebar-w-collapsed: 72px;
	--topbar-h: 58px;
}

/* ------------------------------------------------------------------ base */
body.ui-v2 {
	margin: 0;
	background: var(--bg);
	color: var(--text);
	font: 13px/1.5 var(--font);
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
}
body.ui-v2 *, body.ui-v2 *::before, body.ui-v2 *::after { box-sizing: border-box; }

body.ui-v2 a { color: var(--primary-600); }
body.ui-v2 a:visited { color: var(--primary-600); }
body.ui-v2 a:hover { color: var(--primary-700); text-decoration: none; }

body.ui-v2 svg.ico {
	width: 18px;
	height: 18px;
	flex: 0 0 auto;
	stroke: currentColor;
	fill: none;
	stroke-width: 1.8;
	stroke-linecap: round;
	stroke-linejoin: round;
}

/* ------------------------------------------------------------------ shell */
body.ui-v2 .app {
	display: flex;
	align-items: stretch;
	min-height: 100vh;
}

/* ---- sidebar */
body.ui-v2 .sidebar {
	position: sticky;
	top: 0;
	height: 100vh;
	width: var(--sidebar-w);
	flex: 0 0 var(--sidebar-w);
	display: flex;
	flex-direction: column;
	background: var(--sidebar-bg);
	margin: 0;
	padding: 0;
	float: none;
	z-index: 60;
	transition: width .18s ease, flex-basis .18s ease;
}
body.ui-v2 .sidebar .brand {
	display: flex;
	align-items: center;
	gap: 10px;
	height: var(--topbar-h);
	padding: 0 14px 0 18px;
	border-bottom: 1px solid transparent;
}
body.ui-v2 .sidebar .brand a {
	display: flex;
	align-items: center;
	gap: 10px;
	text-decoration: none;
	color: var(--text);
	min-width: 0;
}
body.ui-v2 .sidebar .brand-mark {
	width: 32px;
	height: 32px;
	flex: 0 0 32px;
	border-radius: 9px;
	background: linear-gradient(135deg, var(--primary) 0%, var(--primary-700) 100%);
	color: #fff;
	display: flex;
	align-items: center;
	justify-content: center;
	font-weight: 800;
	font-size: 15px;
	letter-spacing: -.5px;
	box-shadow: 0 2px 6px rgba(15, 139, 141, .35);
}
body.ui-v2 .sidebar .brand-mark.logo { background: #fff; box-shadow: 0 1px 4px rgba(0, 0, 0, .12); border-radius: 50%; overflow: hidden; }
body.ui-v2 .sidebar .brand-mark.logo img { display: block; width: 32px; height: 32px; object-fit: cover; }
body.ui-v2 .sidebar .brand-name {
	font-size: 17px;
	font-weight: 700;
	letter-spacing: -.3px;
	white-space: nowrap;
}
body.ui-v2 .sidebar .brand-name span { color: var(--accent); }
body.ui-v2 .sidebar .brand .collapse-btn { margin-left: auto; }

body.ui-v2 .sidebar .user-card {
	display: flex;
	align-items: center;
	gap: 10px;
	margin: 6px 12px 10px;
	padding: 9px 10px;
	background: var(--surface);
	border: 1px solid var(--border);
	border-radius: 10px;
	box-shadow: var(--shadow-xs);
	min-width: 0;
}
body.ui-v2 .avatar {
	width: 34px;
	height: 34px;
	flex: 0 0 34px;
	border-radius: 50%;
	background: var(--primary-soft);
	color: var(--primary-700);
	display: flex;
	align-items: center;
	justify-content: center;
	font-weight: 700;
	font-size: 12px;
	letter-spacing: .3px;
	text-transform: uppercase;
}
body.ui-v2 .sidebar .user-card .user-meta { min-width: 0; line-height: 1.25; }
body.ui-v2 .sidebar .user-card .user-name {
	font-weight: 600;
	font-size: 13px;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}
body.ui-v2 .sidebar .user-card .user-site {
	font-size: 11.5px;
	color: var(--text-3);
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

body.ui-v2 .sidebar .nav {
	flex: 1 1 auto;
	overflow-y: auto;
	overflow-x: hidden;
	padding: 2px 12px 16px;
	scrollbar-width: none;
}
body.ui-v2 .sidebar .nav::-webkit-scrollbar { display: none; }

body.ui-v2 .sidebar .sidebar-foot {
	padding: 10px 18px 12px;
	border-top: 1px solid var(--border);
	font-size: 11px;
	color: var(--text-3);
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

/* ---- navigation tree */
body.ui-v2 .left-nav,
body.ui-v2 .left-nav ul {
	list-style: none;
	margin: 0;
	padding: 0;
}
body.ui-v2 .left-nav li ul { display: none; padding-left: 0; }
body.ui-v2 .left-nav li.expanded > ul { display: block; }
body.ui-v2 .left-nav li ul {
	position: relative;
	margin: 2px 0 6px 21px;
	padding-left: 11px;
	border-left: 1px solid var(--border-strong);
}

body.ui-v2 .left-nav .nav-section {
	margin: 14px 0 4px;
	padding: 0 8px;
	font-size: 10.5px;
	font-weight: 700;
	letter-spacing: .12em;
	text-transform: uppercase;
	color: var(--text-3);
}
body.ui-v2 .left-nav .nav-section:first-child { margin-top: 4px; }

body.ui-v2 .left-nav li a {
	display: flex;
	align-items: center;
	gap: 10px;
	margin: 1px 0;
	padding: 7px 8px 7px 8px;
	border-radius: 8px;
	background: transparent;
	color: var(--text-2);
	font-size: 13px;
	font-weight: 500;
	line-height: 1.3;
	text-decoration: none;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
	border: 1px solid transparent;
	cursor: pointer;
}
body.ui-v2 .left-nav li a .nav-label {
	flex: 1 1 auto;
	min-width: 0;
	overflow: hidden;
	text-overflow: ellipsis;
}
body.ui-v2 .left-nav li a .ico { color: var(--text-3); width: 18px; height: 18px; }
body.ui-v2 .left-nav li a .chev {
	width: 14px;
	height: 14px;
	color: var(--text-3);
	transition: transform .15s ease;
}
body.ui-v2 .left-nav li a:hover {
	background: rgba(15, 139, 141, .07);
	color: var(--text);
}
body.ui-v2 .left-nav li a:hover .ico { color: var(--primary-600); }
body.ui-v2 .left-nav li.expanded > a { color: var(--text); font-weight: 600; background: transparent; }
body.ui-v2 .left-nav li.expanded > a .ico { color: var(--primary-600); }
body.ui-v2 .left-nav li.expanded > a .chev { transform: rotate(180deg); }
body.ui-v2 .left-nav li a.active,
body.ui-v2 .left-nav li a.active:hover {
	background: var(--surface);
	color: var(--primary-700);
	font-weight: 600;
	border-color: var(--border);
	box-shadow: var(--shadow-xs);
}
body.ui-v2 .left-nav li a.active .ico { color: var(--primary-600); }

/* nested (level 2+) items */
body.ui-v2 .left-nav li ul li a {
	padding: 6px 8px;
	font-size: 12.5px;
	font-weight: 500;
}
body.ui-v2 .left-nav li ul li ul { margin-left: 8px; }

/* collapsed sidebar (icon rail) */
body.ui-v2.nav-collapsed .sidebar {
	width: var(--sidebar-w-collapsed);
	flex-basis: var(--sidebar-w-collapsed);
}
body.ui-v2.nav-collapsed .sidebar .brand { padding: 0 0 0 20px; }
body.ui-v2.nav-collapsed .sidebar .brand-name,
body.ui-v2.nav-collapsed .sidebar .user-card .user-meta,
body.ui-v2.nav-collapsed .sidebar .nav-section,
body.ui-v2.nav-collapsed .sidebar .nav-label,
body.ui-v2.nav-collapsed .sidebar .chev,
body.ui-v2.nav-collapsed .sidebar .sidebar-foot,
body.ui-v2.nav-collapsed .sidebar .left-nav li ul { display: none; }
body.ui-v2.nav-collapsed .sidebar .brand .collapse-btn { display: none; }
body.ui-v2.nav-collapsed .sidebar .user-card { justify-content: center; padding: 6px; margin: 6px 10px 10px; }
body.ui-v2.nav-collapsed .sidebar .nav { padding: 2px 10px 16px; }
body.ui-v2.nav-collapsed .sidebar .left-nav li a { justify-content: center; padding: 9px 0; }
body.ui-v2.nav-collapsed .sidebar .left-nav li a .ico { width: 20px; height: 20px; }

/* ---- main column */
body.ui-v2 .app-main {
	flex: 1 1 auto;
	min-width: 0;
	display: flex;
	flex-direction: column;
}

/* ---- topbar */
body.ui-v2 .topbar {
	position: sticky;
	top: 0;
	z-index: 50;
	height: var(--topbar-h);
	display: flex;
	align-items: center;
	gap: 10px;
	padding: 0 20px;
	background: rgba(244, 246, 249, .92);
	backdrop-filter: saturate(180%) blur(8px);
	-webkit-backdrop-filter: saturate(180%) blur(8px);
	border-bottom: 1px solid var(--border);
	width: auto;
	margin: 0;
	border-radius: 0;
	box-shadow: none;
}
body.ui-v2 .topbar .mobile-menu { display: none; }
body.ui-v2 .topbar .expand-btn { display: none; }
body.ui-v2.nav-collapsed .topbar .expand-btn { display: inline-flex; }

body.ui-v2 .icon-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 34px;
	height: 34px;
	padding: 0;
	border-radius: 8px;
	border: 1px solid transparent;
	background: transparent;
	color: var(--text-2);
	cursor: pointer;
	text-decoration: none;
	transition: background .12s ease, color .12s ease, border-color .12s ease;
}
body.ui-v2 .icon-btn:hover { background: var(--surface-2); color: var(--text); border-color: var(--border); text-decoration: none; }
body.ui-v2 .icon-btn.sm { width: 28px; height: 28px; border-radius: 7px; }
body.ui-v2 .icon-btn.sm .ico { width: 15px; height: 15px; }
body.ui-v2 .icon-btn.danger:hover { color: var(--danger); background: var(--danger-soft); border-color: transparent; }
body.ui-v2 .icon-btn .ico { width: 18px; height: 18px; }

/* global search */
body.ui-v2 .topbar .search-div {
	position: relative;
	flex: 1 1 auto;
	max-width: 460px;
	margin: 0;
	float: none;
	width: auto;
}
body.ui-v2 .topbar .search-div .search-icon {
	position: absolute;
	left: 11px;
	top: 50%;
	transform: translateY(-50%);
	color: var(--text-3);
	pointer-events: none;
}
body.ui-v2 .topbar .search-input {
	display: block;
	float: none;
	width: 100%;
	height: 38px;
	line-height: 38px;
	padding: 0 96px 0 36px;
	margin: 0;
	text-indent: 0;
	background: var(--surface-2);
	border: 1px solid var(--border);
	border-radius: 10px;
	font: 13.5px/38px var(--font);
	color: var(--text);
	outline: none;
	transition: border-color .12s ease, box-shadow .12s ease, background .12s ease;
}
body.ui-v2 .topbar .search-input::placeholder { color: var(--text-3); }
body.ui-v2 .topbar .search-input:focus {
	background: #fff;
	border-color: var(--primary);
	box-shadow: 0 0 0 3px var(--primary-ring);
}
body.ui-v2 .topbar .search-type {
	position: absolute;
	top: 6px;
	right: 6px;
	height: 26px;
	width: auto;
	min-width: 84px;
	margin: 0;
	padding: 0 22px 0 8px;
	border: 1px solid var(--border);
	border-radius: 7px;
	background: #fff url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%238A97A8' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 12 15 18 9'/></svg>") no-repeat right 6px center;
	font: 12px var(--font);
	color: var(--text-2);
	-webkit-appearance: none;
	appearance: none;
	cursor: pointer;
	outline: none;
}
body.ui-v2 .topbar .search-list {
	position: absolute;
	display: none;
	left: 0;
	right: 0;
	top: 44px;
	width: auto;
	padding: 6px;
	background: var(--surface);
	border: 1px solid var(--border);
	border-radius: 10px;
	box-shadow: var(--shadow);
	font-size: 13px;
	z-index: 70;
	max-height: 60vh;
	overflow-y: auto;
}
body.ui-v2 .topbar .search-item {
	display: flex;
	align-items: center;
	gap: 8px;
	padding: 8px 10px;
	border: none;
	border-radius: 7px;
	cursor: pointer;
}
body.ui-v2 .topbar .search-item:hover { background: var(--surface-2); }
body.ui-v2 .topbar .search-item span.patient { font-size: 13.5px; font-weight: 500; color: var(--text); }
body.ui-v2 .topbar .search-item span.patient b { color: var(--primary-700); }
body.ui-v2 .topbar .search-item span.age { font-size: 12px; color: var(--text-3); }
body.ui-v2 .topbar .search-item a.lastvisit {
	display: inline-block;
	float: none;
	margin-left: auto;
	padding: 2px 8px;
	font-size: 11.5px;
	border-radius: 999px;
	background: var(--primary-soft);
	color: var(--primary-700);
	white-space: nowrap;
}

/* quick actions */
body.ui-v2 .topbar .quick-links {
	display: flex;
	align-items: center;
	gap: 2px;
	float: none;
	width: auto;
	margin: 0 0 0 4px;
	position: static;
}
body.ui-v2 .topbar .quick-links .shortcut {
	display: inline-flex;
	width: 34px;
	height: 34px;
	margin: 0;
	background-image: none !important;
	opacity: 1;
	float: none;
}
body.ui-v2 .topbar .quick-links .shortcut:hover { opacity: 1; }
body.ui-v2 .topbar .quick-links .shortcut.new-patient { color: var(--primary-600); }

body.ui-v2 .topbar .spacer { flex: 1 1 auto; }

/* right side: date / site / user / logout */
body.ui-v2 .topbar .top-links {
	display: flex;
	align-items: center;
	gap: 6px;
	float: none;
	padding: 0;
	font: 12.5px var(--font);
}
body.ui-v2 .topbar .top-links a,
body.ui-v2 .topbar .top-links span {
	color: var(--text-2);
	border: none;
	padding: 0;
	text-decoration: none;
}
body.ui-v2 .topbar .top-links .pill {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	height: 30px;
	padding: 0 10px;
	border-radius: 999px;
	border: 1px solid var(--border);
	background: var(--surface);
	font-size: 12.5px;
	font-weight: 500;
	color: var(--text-2);
	white-space: nowrap;
	cursor: default;
}
body.ui-v2 .topbar .top-links .pill .ico { width: 14px; height: 14px; color: var(--text-3); }
body.ui-v2 .topbar .top-links a.pill.tax-on {
	color: var(--danger);
	border-color: rgba(217, 45, 32, .35);
	background: var(--danger-soft);
}
body.ui-v2 .topbar .top-links a.pill.tax-on .ico { color: var(--danger); }
body.ui-v2 .topbar .top-links .pill.site { color: var(--text-3); }
body.ui-v2 .topbar .top-links .user-chip {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: 0 4px 0 0;
	margin-left: 4px;
}
body.ui-v2 .topbar .top-links .user-chip .avatar { width: 30px; height: 30px; flex-basis: 30px; font-size: 11px; }
body.ui-v2 .topbar .top-links .user-chip .name { font-weight: 600; color: var(--text); white-space: nowrap; }
body.ui-v2 .topbar .top-links .logout { color: var(--text-3); }

/* ---- content */
body.ui-v2 .app-content {
	flex: 1 1 auto;
	min-width: 0;
	padding: 22px 24px 48px;
	display: block;
	width: auto;
	margin: 0;
	background: transparent;
	float: none;
	overflow: visible;
	border-radius: 0;
	box-shadow: none;
}
body.ui-v2 .content-col { position: relative; min-height: 300px; }

/* legacy top-level messages rendered straight into the content column */
body.ui-v2 .content-col > .error,
body.ui-v2 .content-col > .info,
body.ui-v2 .page-alerts .error,
body.ui-v2 .page-alerts .info,
body.ui-v2 .alert {
	display: flex;
	align-items: flex-start;
	gap: 10px;
	margin: 0 0 16px;
	padding: 11px 14px;
	border-radius: 10px;
	border: 1px solid transparent;
	font-size: 13px;
	line-height: 1.45;
}
body.ui-v2 .content-col > .error,
body.ui-v2 .page-alerts .error,
body.ui-v2 .alert.alert-error { background: var(--danger-soft); border-color: rgba(217, 45, 32, .25); color: #9A1F16; }
body.ui-v2 .content-col > .info,
body.ui-v2 .page-alerts .info,
body.ui-v2 .alert.alert-success { background: var(--success-soft); border-color: rgba(18, 128, 92, .25); color: #0B5C42; }
body.ui-v2 .alert.alert-warning { background: var(--warning-soft); border-color: rgba(181, 71, 8, .25); color: #7A3306; }
body.ui-v2 .alert.alert-info { background: var(--info-soft); border-color: rgba(29, 95, 191, .25); color: #123F80; }
body.ui-v2 .alert .ico { width: 18px; height: 18px; margin-top: 1px; }
body.ui-v2 .alert b { font-weight: 600; }
body.ui-v2 .page-alerts .info .warning { color: var(--warning); }

/* ------------------------------------------------------------------ page primitives */
body.ui-v2 .page { max-width: 1400px; }
body.ui-v2 .page-header {
	display: flex;
	align-items: flex-end;
	justify-content: space-between;
	gap: 16px;
	flex-wrap: wrap;
	margin: 0 0 18px;
}
body.ui-v2 .page-header-main {
	display: flex;
	align-items: center;
	gap: 14px;
	min-width: 0;
}
body.ui-v2 .page-eyebrow {
	font-size: 11.5px;
	font-weight: 600;
	letter-spacing: .08em;
	text-transform: uppercase;
	color: var(--text-3);
	margin-bottom: 2px;
}
body.ui-v2 .page-title {
	margin: 0;
	font-size: 24px;
	font-weight: 700;
	letter-spacing: -.4px;
	line-height: 1.2;
	color: var(--text);
}
body.ui-v2 .page-subtitle { margin: 4px 0 0; color: var(--text-2); font-size: 13px; }
body.ui-v2 .page-meta {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 6px;
	margin-top: 7px;
}
body.ui-v2 .page-actions {
	display: flex;
	align-items: center;
	gap: 8px;
	flex-wrap: wrap;
}
body.ui-v2 .avatar.lg { width: 52px; height: 52px; flex-basis: 52px; font-size: 17px; border-radius: 14px; }

body.ui-v2 .chip {
	display: inline-flex;
	align-items: center;
	gap: 5px;
	height: 24px;
	padding: 0 9px;
	border-radius: 999px;
	background: var(--surface);
	border: 1px solid var(--border);
	color: var(--text-2);
	font-size: 12px;
	font-weight: 500;
	white-space: nowrap;
}
body.ui-v2 .chip .ico { width: 13px; height: 13px; color: var(--text-3); }
body.ui-v2 .chip.mono { font-family: var(--mono); font-size: 11.5px; letter-spacing: .3px; }
body.ui-v2 .chip.primary { background: var(--primary-soft); border-color: transparent; color: var(--primary-700); }
body.ui-v2 .chip.success { background: var(--success-soft); border-color: transparent; color: var(--success); }
body.ui-v2 .chip.danger { background: var(--danger-soft); border-color: transparent; color: var(--danger); }
body.ui-v2 .chip.warning { background: var(--warning-soft); border-color: transparent; color: var(--warning); }

/* buttons */
body.ui-v2 .btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 7px;
	height: 36px;
	padding: 0 14px;
	border-radius: 9px;
	border: 1px solid var(--border);
	background: var(--surface);
	color: var(--text);
	font: 500 13px/1 var(--font);
	text-decoration: none;
	cursor: pointer;
	white-space: nowrap;
	box-shadow: var(--shadow-xs);
	transition: background .12s ease, border-color .12s ease, box-shadow .12s ease, color .12s ease;
	-webkit-appearance: none;
	appearance: none;
	text-shadow: none;
	min-width: 0;
	width: auto;
	float: none;
	margin: 0;
}
body.ui-v2 .btn:hover { background: var(--surface-2); border-color: var(--border-strong); color: var(--text); text-decoration: none; }
body.ui-v2 .btn:active { transform: translateY(1px); }
body.ui-v2 .btn:focus-visible { outline: none; box-shadow: 0 0 0 3px var(--primary-ring); }
body.ui-v2 .btn .ico { width: 16px; height: 16px; }
body.ui-v2 .btn.btn-cancel { background: #fff; border-color: var(--border-strong); color: var(--text); font-weight: 600; }
body.ui-v2 .btn.btn-cancel:hover { border-color: var(--text-3); }
body.ui-v2 .btn.btn-primary {
	background: var(--primary);
	border-color: var(--primary);
	color: #fff;
	background-image: none;
}
body.ui-v2 .btn.btn-primary:hover { background: var(--primary-600); border-color: var(--primary-600); color: #fff; }
body.ui-v2 .btn.btn-danger { color: var(--danger); }
body.ui-v2 .btn.btn-danger:hover { background: var(--danger-soft); border-color: rgba(217, 45, 32, .3); }
body.ui-v2 .btn.btn-ghost { border-color: transparent; background: transparent; box-shadow: none; color: var(--text-2); }
body.ui-v2 .btn.btn-ghost:hover { background: var(--surface-2); color: var(--text); }
/* status pill shown instead of the "confirm" button once the analysis is closed */
body.ui-v2 .btn.btn-done,
body.ui-v2 .btn.btn-done:hover { background: var(--success-soft); border-color: rgba(18, 128, 92, .35); color: var(--success); font-weight: 600; cursor: default; transform: none; }
body.ui-v2 .btn.btn-done .ico { color: var(--success); }
body.ui-v2 .btn.sm { height: 30px; padding: 0 10px; font-size: 12.5px; border-radius: 8px; }
body.ui-v2 .btn.xs { height: 26px; padding: 0 8px; font-size: 12px; border-radius: 7px; }
body.ui-v2 .btn:disabled { opacity: .55; cursor: not-allowed; background-image: none; }

/* cards */
body.ui-v2 .card {
	background: var(--surface);
	border: 1px solid var(--border);
	border-radius: var(--radius);
	box-shadow: var(--shadow-sm);
	margin: 0 0 16px;
}
body.ui-v2 .card-head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	padding: 10px 20px;
	border-bottom: 1px solid var(--border);
}
body.ui-v2 .card-head h2 {
	margin: 0;
	font-size: 14.5px;
	font-weight: 600;
	letter-spacing: -.1px;
	color: var(--text);
}
body.ui-v2 .card-head p { margin: 2px 0 0; font-size: 12.5px; color: var(--text-3); }
body.ui-v2 .card-head .card-actions { display: flex; align-items: center; gap: 6px; }
body.ui-v2 .card-body { padding: 18px 20px; }
body.ui-v2 .card-body.tight { padding: 10px 20px; }
body.ui-v2 .card-foot {
	display: flex;
	align-items: center;
	gap: 8px;
	padding: 12px 20px;
	border-top: 1px solid var(--border);
	background: var(--surface-2);
	border-radius: 0 0 var(--radius) var(--radius);
}
body.ui-v2 .card.table-card { overflow: hidden; }

/* detail (read-only) grid */
body.ui-v2 .detail-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(210px, 1fr));
	gap: 14px 24px;
	margin: 0;
}
body.ui-v2 .detail-grid > div { min-width: 0; }
body.ui-v2 .detail-grid dt {
	font-size: 10.5px;
	font-weight: 600;
	letter-spacing: .04em;
	text-transform: uppercase;
	color: var(--text-3);
	margin: 0 0 3px;
}
body.ui-v2 .detail-grid dd {
	margin: 0;
	font-size: 13.5px;
	color: var(--text);
	overflow-wrap: anywhere;
}
body.ui-v2 .detail-grid dd .muted { color: var(--text-3); }
body.ui-v2 .detail-grid dd .tag {
	display: inline-block;
	margin-left: 6px;
	padding: 1px 7px;
	border-radius: 999px;
	background: var(--success-soft);
	color: var(--success);
	font-size: 11px;
	font-weight: 600;
	vertical-align: 1px;
}
body.ui-v2 .detail-grid dd.empty { color: var(--text-3); }

/* forms */
body.ui-v2 .form-grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 14px 20px;
}
body.ui-v2 .form-grid.cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
body.ui-v2 .form-grid.cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
body.ui-v2 .form-grid.cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
body.ui-v2 .form-grid .span-2 { grid-column: span 2; }
body.ui-v2 .form-grid .span-3 { grid-column: span 3; }
body.ui-v2 .form-grid .span-full { grid-column: 1 / -1; }
body.ui-v2 .form-grid > .field-stack { display: flex; flex-direction: column; gap: 14px; min-width: 0; }

body.ui-v2 .field { min-width: 0; margin: 0; padding: 0; display: block; clear: none; }
body.ui-v2 .field > label {
	display: block;
	float: none;
	width: auto;
	margin: 0 0 5px;
	font-size: 12.5px;
	font-weight: 500;
	color: var(--text-2);
}
body.ui-v2 .field > label .required { color: var(--danger); margin-left: 2px; }
body.ui-v2 .field .hint { margin: 4px 0 0; font-size: 12px; color: var(--text-3); }
body.ui-v2 .field .field-error { margin: 4px 0 0; font-size: 12px; color: var(--danger); }

body.ui-v2 .field input[type=text],
body.ui-v2 .field input[type=date],
body.ui-v2 .field input[type=datetime-local],
body.ui-v2 .field input[type=time],
body.ui-v2 .field input[type=email],
body.ui-v2 .field input[type=number],
body.ui-v2 .field input[type=tel],
body.ui-v2 .field input[type=password],
body.ui-v2 .field select,
body.ui-v2 .field textarea {
	display: block;
	float: none;
	width: 100%;
	height: 36px;
	margin: 0;
	padding: 0 11px;
	border: 1px solid var(--border-strong);
	border-radius: 8px;
	background: var(--surface);
	color: var(--text);
	font: 13.5px var(--font);
	outline: none;
	transition: border-color .12s ease, box-shadow .12s ease;
	-webkit-appearance: none;
	appearance: none;
}
body.ui-v2 .field textarea { height: auto; min-height: 84px; padding: 8px 11px; line-height: 1.45; resize: vertical; }
body.ui-v2 .field select {
	padding-right: 30px;
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%238A97A8' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 12 15 18 9'/></svg>");
	background-repeat: no-repeat;
	background-position: right 10px center;
	cursor: pointer;
}
body.ui-v2 .field input:focus,
body.ui-v2 .field select:focus,
body.ui-v2 .field textarea:focus {
	border-color: var(--primary);
	box-shadow: 0 0 0 3px var(--primary-ring);
}
body.ui-v2 .field input::placeholder,
body.ui-v2 .field textarea::placeholder { color: var(--text-3); }
body.ui-v2 .field input:read-only,
body.ui-v2 .field input[readonly],
body.ui-v2 .field input:disabled,
body.ui-v2 .field select:disabled {
	background-color: var(--surface-2) !important;
	color: var(--text-2);
}
body.ui-v2 .field input[type=date]::-webkit-calendar-picker-indicator { opacity: .55; cursor: pointer; }
body.ui-v2 .field.error > label { color: var(--danger); }
body.ui-v2 .field.error input,
body.ui-v2 .field.error select {
	border-color: var(--danger);
	box-shadow: 0 0 0 3px rgba(217, 45, 32, .15);
}

body.ui-v2 .input-row {
	display: flex;
	align-items: center;
	gap: 8px;
	min-width: 0;
}
body.ui-v2 .input-row > input,
body.ui-v2 .input-row > select,
body.ui-v2 .input-row > .input-affix { flex: 1 1 auto; min-width: 0; }
body.ui-v2 .input-row > .icon-btn { flex: 0 0 auto; }
body.ui-v2 .input-affix {
	position: relative;
	display: flex;
	align-items: center;
	min-width: 0;
}
body.ui-v2 .input-affix input { padding-right: 46px !important; text-align: right; }
body.ui-v2 .input-affix span {
	position: absolute;
	right: 11px;
	font-size: 12px;
	color: var(--text-3);
	pointer-events: none;
}
body.ui-v2 .input-affix.sm { flex: 0 0 96px; }

body.ui-v2 .check-inline {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	float: none;
	width: auto;
	margin: 0;
	padding: 0 10px;
	height: 36px;
	border: 1px solid var(--border);
	border-radius: 8px;
	background: var(--surface-2);
	font-size: 12.5px;
	font-weight: 500;
	color: var(--text-2);
	white-space: nowrap;
	cursor: pointer;
	user-select: none;
	flex: 0 0 auto;
}
body.ui-v2 .check-inline input[type=checkbox],
body.ui-v2 .choice-group input[type=checkbox],
body.ui-v2 .choice-group input[type=radio] {
	width: 15px;
	height: 15px;
	margin: 0;
	accent-color: var(--primary);
	cursor: pointer;
	float: none;
}
body.ui-v2 .check-inline:has(input:checked) { border-color: var(--primary); background: var(--primary-soft); color: var(--primary-700); }

/* segmented choice (sex etc.) */
body.ui-v2 .choice-group { display: flex; flex-wrap: wrap; gap: 8px; }
body.ui-v2 .choice-group label.check {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	float: none;
	width: auto;
	height: 36px;
	margin: 0;
	padding: 0 12px 0 10px;
	border: 1px solid var(--border-strong);
	border-radius: 8px;
	background: var(--surface);
	font-size: 13px;
	font-weight: 500;
	color: var(--text-2);
	cursor: pointer;
	user-select: none;
	transition: border-color .12s ease, background .12s ease, color .12s ease;
}
body.ui-v2 .choice-group label.check:hover { border-color: var(--primary); }
body.ui-v2 .choice-group label.check:has(input:checked) {
	border-color: var(--primary);
	background: var(--primary-soft);
	color: var(--primary-700);
	box-shadow: inset 0 0 0 1px var(--primary);
}

/* switch rows (settings) */
body.ui-v2 .toggle-list { display: flex; flex-direction: column; }
body.ui-v2 .toggle-row {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	padding: 12px 0;
	border-bottom: 1px solid var(--border);
}
body.ui-v2 .toggle-row:last-child { border-bottom: none; }
body.ui-v2 .toggle-row .toggle-text { min-width: 0; }
body.ui-v2 .toggle-row .toggle-title { font-weight: 500; color: var(--text); font-size: 13.5px; }
body.ui-v2 .toggle-row .toggle-desc { font-size: 12px; color: var(--text-3); margin-top: 1px; }
body.ui-v2 .toggle-row .toggle-control { flex: 0 0 auto; }
body.ui-v2 .switch {
	position: relative;
	display: inline-block;
	width: 40px;
	height: 22px;
	flex: 0 0 40px;
}
body.ui-v2 .switch input { position: absolute; opacity: 0; width: 0; height: 0; margin: 0; }
body.ui-v2 .switch .track {
	position: absolute;
	inset: 0;
	border-radius: 999px;
	background: var(--border-strong);
	transition: background .15s ease;
	cursor: pointer;
}
body.ui-v2 .switch .track::after {
	content: "";
	position: absolute;
	top: 3px;
	left: 3px;
	width: 16px;
	height: 16px;
	border-radius: 50%;
	background: #fff;
	box-shadow: 0 1px 2px rgba(16, 24, 40, .3);
	transition: transform .15s ease;
}
body.ui-v2 .switch input:checked + .track { background: var(--primary); }
body.ui-v2 .switch input:checked + .track::after { transform: translateX(18px); }
body.ui-v2 .switch input:focus-visible + .track { box-shadow: 0 0 0 3px var(--primary-ring); }
body.ui-v2 .toggle-row .field-inline { display: flex; align-items: center; gap: 8px; }
body.ui-v2 .toggle-row .field-inline input[type=text] {
	width: 80px;
	height: 34px;
	padding: 0 10px;
	border: 1px solid var(--border-strong);
	border-radius: 8px;
	font: 13.5px var(--font);
	text-align: right;
	outline: none;
}
body.ui-v2 .toggle-row .field-inline input[type=text]:focus { border-color: var(--primary); box-shadow: 0 0 0 3px var(--primary-ring); }

body.ui-v2 .form-actions {
	display: flex;
	align-items: center;
	gap: 10px;
	margin: 4px 0 0;
	padding: 0;
	border: none;
}
body.ui-v2 .form-actions .form-actions-note { margin-left: auto; font-size: 12px; color: var(--text-3); }

/* filter bar */
body.ui-v2 .ui-filter { display: block; overflow: visible; margin: 0 0 16px; }
body.ui-v2 .ui-filter .card-body {
	display: flex;
	align-items: flex-end;
	gap: 12px 16px;
	flex-wrap: wrap;
	padding: 16px 20px;
}
body.ui-v2 .ui-filter .field { flex: 1 1 160px; max-width: 240px; float: none; margin: 0; clear: none; }
body.ui-v2 .ui-filter .field.wide { flex-basis: 300px; max-width: 340px; }
body.ui-v2 .ui-filter .field input[type=text],
body.ui-v2 .ui-filter .field input[type=date],
body.ui-v2 .ui-filter .field select { width: 100%; }
body.ui-v2 .ui-filter .input-row .sep { color: var(--text-3); flex: 0 0 auto; }
body.ui-v2 .ui-filter .filter-actions { display: flex; gap: 8px; margin-left: auto; float: none; }

/* data tables */
body.ui-v2 .data-table {
	width: 100%;
	margin: 0;
	border-collapse: collapse;
	font: 13px var(--font);
}
body.ui-v2 .data-table thead td,
body.ui-v2 .data-table thead th {
	padding: 10px 12px;
	border: none;
	border-bottom: 1px solid var(--border);
	background: var(--surface-2);
	font-size: 11.5px;
	font-weight: 600;
	letter-spacing: .05em;
	text-transform: uppercase;
	color: var(--text-3);
	white-space: nowrap;
}
body.ui-v2 .data-table thead td a {
	color: var(--text-3);
	text-decoration: none;
	display: inline-flex;
	align-items: center;
	gap: 4px;
}
body.ui-v2 .data-table thead td a::after {
	content: "";
	display: inline-block;
	width: 10px;
	height: 10px;
	opacity: .5;
	background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%238A97A8' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'><path d='m7 15 5 5 5-5'/><path d='m7 9 5-5 5 5'/></svg>") no-repeat center / contain;
}
body.ui-v2 .data-table thead td a:hover { color: var(--text); }
body.ui-v2 .data-table tr { border: none; }
body.ui-v2 .data-table tbody tr { border-top: 1px solid var(--border); }
body.ui-v2 .data-table tbody tr:first-child { border-top: none; }
body.ui-v2 .data-table tbody tr:hover { background: #F6FAFA; }
body.ui-v2 .data-table tbody td {
	padding: 9px 12px;
	height: auto;
	font-family: var(--font);
	font-size: 13px;
	color: var(--text);
	vertical-align: middle;
}
body.ui-v2 .data-table tbody td a { color: var(--text); font-weight: 500; }
body.ui-v2 .data-table tbody td a:hover { color: var(--primary-700); text-decoration: underline; }
body.ui-v2 .data-table td.muted { color: var(--text-3); }
body.ui-v2 .data-table td.num { text-align: right; font-variant-numeric: tabular-nums; }
body.ui-v2 .data-table tfoot { border-top: 1px solid var(--border); background: var(--surface-2); }
body.ui-v2 .data-table tfoot td { padding: 9px 12px; }
body.ui-v2 .data-table tfoot td.note { font: italic 12px var(--font); color: var(--text-3); }
body.ui-v2 .data-table td.status { width: 28px; padding-right: 0; font-size: 20px; line-height: 1; text-align: center; }
body.ui-v2 .data-table td.status.open { color: var(--danger); }
body.ui-v2 .data-table td.status.active { color: var(--primary); }
body.ui-v2 .data-table td.status.closed { color: var(--border-strong); }
body.ui-v2 .data-table td.status.finished { color: var(--success); }
body.ui-v2 .data-table .inside-button {
	display: inline-flex;
	align-items: center;
	height: 26px;
	padding: 0 9px;
	border-radius: 7px;
	border: 1px solid var(--border);
	background: var(--surface);
	color: var(--text-2) !important;
	font-size: 12px;
	font-weight: 500 !important;
	text-decoration: none !important;
	white-space: nowrap;
}
body.ui-v2 .data-table .inside-button:hover { border-color: var(--primary); color: var(--primary-700) !important; }
body.ui-v2 .data-table input[type=checkbox] { width: 15px; height: 15px; accent-color: var(--primary); margin: 0; vertical-align: middle; }
body.ui-v2 .data-table .row-link {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 30px;
	height: 30px;
	border-radius: 8px;
	color: var(--primary-600);
}
body.ui-v2 .data-table .row-link:hover { background: var(--primary-soft); text-decoration: none; }
body.ui-v2 .data-table .row-link .ico { width: 16px; height: 16px; }
body.ui-v2 .data-table .empty-row td { padding: 28px 12px; text-align: center; color: var(--text-3); font-style: italic; }
body.ui-v2 .request-page .data-table .empty-row td { padding: 10px 12px; }
body.ui-v2 .table-scroll { overflow-x: auto; }

body.ui-v2 .table-toolbar {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	padding: 12px 20px;
	border-bottom: 1px solid var(--border);
}
body.ui-v2 .table-toolbar .count { font-size: 12.5px; color: var(--text-3); }

/* ------------------------------------------------------------------ patient module */
body.ui-v2 .patient-view .visits-title {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	margin: 24px 0 10px;
}
body.ui-v2 .patient-view .visits-title h2 {
	margin: 0;
	font-size: 15px;
	font-weight: 600;
	display: flex;
	align-items: center;
	gap: 8px;
}
body.ui-v2 .patient-view .visits-title .count-badge {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 22px;
	height: 22px;
	padding: 0 7px;
	border-radius: 999px;
	background: var(--primary-soft);
	color: var(--primary-700);
	font-size: 12px;
	font-weight: 600;
}

/* visit accordion: legacy fieldset markup, restyled */
body.ui-v2 .patient-view fieldset.visit,
body.ui-v2 .patient-view fieldset.visit.collapsed {
	position: relative;
	display: block;
	height: auto;
	margin: 0 0 10px;
	padding: 0;
	background: var(--surface) !important;
	border: 1px solid var(--border);
	border-radius: var(--radius);
	box-shadow: var(--shadow-sm);
	text-align: left;
	min-inline-size: 0;
}
body.ui-v2 .patient-view fieldset.visit > legend,
body.ui-v2 .patient-view fieldset.visit.collapsed > legend {
	display: block;
	float: left;
	width: 100%;
	margin: 0;
	padding: 0;
}
body.ui-v2 .patient-view fieldset.visit legend a,
body.ui-v2 .patient-view fieldset.visit.collapsed legend a {
	display: flex;
	align-items: center;
	gap: 10px;
	padding: 13px 20px 13px 16px;
	background: none;
	color: var(--text);
	font-size: 13.5px;
	font-weight: 600;
	text-decoration: none;
	border-radius: var(--radius);
}
body.ui-v2 .patient-view fieldset.visit legend a::before {
	content: "";
	display: inline-block;
	width: 18px;
	height: 18px;
	flex: 0 0 18px;
	background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230F8B8D' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 12 15 18 9'/></svg>") no-repeat center / contain;
	transition: transform .15s ease;
}
body.ui-v2 .patient-view fieldset.visit.collapsed legend a::before { transform: rotate(-90deg); }
body.ui-v2 .patient-view fieldset.visit legend a:hover { color: var(--primary-700); background: var(--surface-2); }
body.ui-v2 .patient-view fieldset.visit legend a .visit-date { font-weight: 600; }
body.ui-v2 .patient-view fieldset.visit legend a .visit-sub { font-weight: 400; color: var(--text-3); font-size: 12.5px; }

body.ui-v2 .patient-view fieldset.visit > .quick-links,
body.ui-v2 .patient-view fieldset.visit.collapsed > .quick-links {
	display: flex;
	align-items: center;
	gap: 6px;
	position: absolute;
	top: 9px;
	right: 12px;
	float: none;
}
body.ui-v2 .patient-view fieldset.visit.collapsed > .quick-links * { display: inline-flex; }
body.ui-v2 .patient-view fieldset.visit > .visit-content {
	clear: both;
	padding: 6px 20px 18px;
	border-top: 1px solid var(--border);
}
body.ui-v2 .patient-view fieldset.visit.collapsed > .visit-content { display: none; }
body.ui-v2 .patient-view fieldset.visit > .visit-content:empty { display: none; }

/* duplicate-patient warning block */
body.ui-v2 .record-exist {
	border: 1px solid rgba(181, 71, 8, .3);
	border-radius: var(--radius);
	padding: 0;
	margin: 0 0 16px;
	background: var(--surface);
	overflow: hidden;
}
body.ui-v2 .record-exist .alert { margin: 0; border-radius: 0; border: none; border-bottom: 1px solid rgba(181, 71, 8, .25); }
body.ui-v2 .record-exist .select-item {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 30px;
	height: 30px;
	border-radius: 8px;
	color: var(--primary-600);
	background: none;
}
body.ui-v2 .record-exist .select-item:hover { background: var(--primary-soft); }
body.ui-v2 .record-exist .data-table tfoot td { height: auto; }

/* ------------------------------------------------------------------ quick exam prices drawer */
body.ui-v2 .quick-exam-prices {
	top: var(--topbar-h) !important;
	background: var(--surface);
	border-left: 1px solid var(--border);
	box-shadow: var(--shadow);
	overflow: hidden auto;
	z-index: 55;
}
body.ui-v2 .quick-exam-prices .quick-buttons { padding: 12px 12px; display: flex; gap: 6px; align-items: center; }
body.ui-v2 .quick-buttons input {
	flex: 1 1 auto;
	width: auto;
	height: 34px;
	padding: 0 10px;
	border: 1px solid var(--border-strong);
	border-radius: 8px;
	font: 13px var(--font);
	outline: none;
}
body.ui-v2 .quick-buttons input:focus { border-color: var(--primary); box-shadow: 0 0 0 3px var(--primary-ring); }
body.ui-v2 .quick-buttons button {
	height: 34px;
	width: 34px;
	margin: 0;
	border: 1px solid var(--border);
	border-radius: 8px;
	background-color: var(--surface);
	opacity: 1;
	cursor: pointer;
}
body.ui-v2 .quick-buttons button:hover { background-color: var(--surface-2); }
body.ui-v2 .quick-buttons .show {
	/* edge tab under the topbar, where the drawer opens, clear of the chat bar at the bottom */
	position: fixed;
	top: calc(var(--topbar-h) + 16px);
	right: 0;
	bottom: auto;
	width: 40px;
	height: 40px;
	border-radius: 10px 0 0 10px;
	background-color: var(--primary);
	background-image: url(../images/ico_search_light.png);
	background-size: 18px;
	border: none;
	box-shadow: var(--shadow);
	opacity: 1;
}
body.ui-v2 .quick-buttons .show:hover { background-color: var(--primary-600); }
body.ui-v2 .quick-results .item { padding: 7px 12px; border-bottom: 1px solid var(--border); }
body.ui-v2 .quick-results .item p { font: 12.5px var(--font); }

/* ------------------------------------------------------------------ status toast */
body.ui-v2 .save-status {
	top: 12px;
	width: auto;
	min-width: 320px;
	max-width: 640px;
	left: 50%;
	margin-left: 0;
	transform: translateX(-50%);
	padding: 12px 18px;
	border-radius: 10px;
	font: 600 14px var(--font) !important;
	box-shadow: var(--shadow);
	color: #fff !important;
	z-index: 999;
}
body.ui-v2 .save-status.error { background: var(--danger); }
body.ui-v2 .save-status.success { background: var(--success); }

/* alert modal from showAlert() */
body.ui-v2 .overlay { position: fixed; background: rgba(16, 24, 40, .45); z-index: 1000; }
body.ui-v2 .overlay .message {
	width: 440px;
	height: auto;
	min-height: 0;
	padding: 22px 24px 64px;
	border-radius: 14px;
	box-shadow: var(--shadow);
	font: 500 14px/1.5 var(--font);
	color: var(--text);
}
body.ui-v2 .overlay .message .btndiv {
	left: auto;
	right: 24px;
	bottom: 18px;
	width: auto;
	padding: 8px 18px;
	border-radius: 8px;
	background: var(--primary);
	border-color: var(--primary);
	color: #fff;
	font-weight: 600;
}

/* ------------------------------------------------------------------ origin request module (PatientReq) */
body.ui-v2 .request-page .page-subtitle .mono { font-family: var(--mono); font-size: 12px; color: var(--text-3); }
body.ui-v2 .request-page ~ .request-page { margin-top: 24px; }
body.ui-v2 .request-layout { margin-bottom: 24px; }

/* generic count badge for card heads */
body.ui-v2 .card-head .count-badge,
body.ui-v2 .card-head h2 .count-badge {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 22px;
	height: 22px;
	padding: 0 7px;
	border-radius: 999px;
	background: var(--primary-soft);
	color: var(--primary-700);
	font-size: 12px;
	font-weight: 600;
	margin-left: 4px;
}
body.ui-v2 .card-head h2 .ico { width: 18px; height: 18px; color: var(--primary); margin-right: 8px; vertical-align: -4px; }

/* two column layout: form left, exams / packets / barcodes right */
body.ui-v2 .request-layout {
	display: grid;
	grid-template-columns: minmax(0, 5fr) minmax(0, 6fr);
	gap: 20px;
	align-items: start;
}
body.ui-v2 .request-main,
body.ui-v2 .request-side { display: flex; flex-direction: column; gap: 20px; min-width: 0; }
body.ui-v2 .request-main .card { margin: 0; }
body.ui-v2 .request-side .card { margin: 0; }
body.ui-v2 .request-main .form-actions { margin-top: 0; }

/* exam picker (autocomplete) */
body.ui-v2 .exam-picker {
	display: flex;
	align-items: center;
	gap: 8px;
	padding: 12px 20px;
	border-bottom: 1px solid var(--border);
	background: var(--surface-2);
}
body.ui-v2 .exam-picker.locked {
	color: var(--text-3);
	font-size: 12.5px;
}
body.ui-v2 .exam-picker.locked .ico { width: 16px; height: 16px; flex: 0 0 auto; color: var(--text-3); }
body.ui-v2 .exam-picker .filter-data { position: relative; flex: 1 1 auto; min-width: 0; float: none; width: auto; }
body.ui-v2 .exam-picker .picker-icon {
	position: absolute;
	left: 10px;
	top: 50%;
	width: 16px;
	height: 16px;
	margin-top: -8px;
	color: var(--text-3);
	pointer-events: none;
}
body.ui-v2 .exam-picker .filter-input {
	box-sizing: border-box;
	width: 100%;
	height: 36px;
	margin: 0;
	padding: 0 12px 0 34px;
	border: 1px solid var(--border-strong);
	border-radius: 8px;
	background: var(--surface) none;
	font: 13px var(--font);
	color: var(--text);
	outline: none;
	transition: border-color .12s ease, box-shadow .12s ease;
}
body.ui-v2 .exam-picker .filter-input:focus { border-color: var(--primary); box-shadow: 0 0 0 3px var(--primary-ring); }
body.ui-v2 .exam-picker .filter-input.filled { background-color: var(--primary-soft); border-color: var(--primary); color: var(--primary-700); font-weight: 500; }
body.ui-v2 .exam-picker .filter-input::placeholder { color: var(--text-3); }
body.ui-v2 .exam-picker .filter-list {
	position: absolute;
	display: none;
	left: 0;
	right: 0;
	top: calc(100% + 4px);
	width: auto;
	max-height: 320px;
	overflow-y: auto;
	padding: 4px;
	border: 1px solid var(--border);
	border-radius: 10px;
	background: var(--surface);
	box-shadow: var(--shadow);
	font: 13px var(--font);
	z-index: 40;
}
body.ui-v2 .exam-picker .filter-item {
	box-sizing: border-box;
	width: 100%;
	padding: 7px 10px;
	border: none;
	border-radius: 6px;
	color: var(--text);
	cursor: pointer;
}
body.ui-v2 .exam-picker .filter-item b,
body.ui-v2 .exam-picker .filter-item strong { color: var(--primary-700); }
body.ui-v2 .exam-picker .filter-item:hover { background: var(--surface-2); }
body.ui-v2 .exam-picker .filter-item.active { background: var(--primary-soft); color: var(--primary-700); }
body.ui-v2 .exam-picker .btn { flex: 0 0 auto; height: 36px; }

/* exam list table */
body.ui-v2 .exam-card .card-head { padding-bottom: 10px; }
/* let the exam picker's suggestion list float over the cards below; the table rounds its own bottom corners instead */
body.ui-v2 .card.table-card.exam-card { overflow: visible; }
body.ui-v2 .card.table-card.exam-card > .table-scroll { border-radius: 0 0 var(--radius) var(--radius); }
body.ui-v2 .exam-card .exam-picker { position: relative; z-index: 45; }
body.ui-v2 .exam-table tbody td.status { width: 40px; padding-right: 12px; }
body.ui-v2 .data-table td.status.waiting  { color: var(--border-strong); }
body.ui-v2 .data-table td.status.accepted { color: var(--info); }
body.ui-v2 .data-table td.status.refused  { color: var(--danger); }
body.ui-v2 .exam-table tr.total-row { background: var(--surface-2); }
body.ui-v2 .exam-table tr.total-row td { font-weight: 600; }
body.ui-v2 .exam-table tr.total-row td.total-label { text-align: right; color: var(--text-3); font-size: 11.5px; letter-spacing: .05em; text-transform: uppercase; }
body.ui-v2 .exam-table tr.total-row td.total { color: var(--text); font-size: 14px; }
body.ui-v2 .exam-table tr.empty-row td.error { color: var(--text-3); font-weight: 400; }

/* delete icon inside tables */
body.ui-v2 .data-table a.del-item {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 28px;
	height: 28px;
	margin: 0 auto;
	padding: 0;
	border-radius: 7px;
	background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%238A97A8' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M3 6h18'/><path d='M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6'/><path d='M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2'/><line x1='10' y1='11' x2='10' y2='17'/><line x1='14' y1='11' x2='14' y2='17'/></svg>") no-repeat center / 16px;
}
body.ui-v2 .data-table a.del-item:hover {
	background-color: var(--danger-soft);
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23D92D20' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M3 6h18'/><path d='M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6'/><path d='M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2'/><line x1='10' y1='11' x2='10' y2='17'/><line x1='14' y1='11' x2='14' y2='17'/></svg>");
}

/* ajax status line under the exam table */
body.ui-v2 .divAjaxStatus {
	display: none;
	margin: 0;
	padding: 8px 20px;
	border-top: 1px solid var(--border);
	font-size: 12.5px;
	font-weight: 500;
	text-align: left;
}
body.ui-v2 .divAjaxStatus.is-ok { background: var(--success-soft); color: var(--success); }
body.ui-v2 .divAjaxStatus.is-error { background: var(--danger-soft); color: var(--danger); }

/* packets */
body.ui-v2 .packet-card .card-head { align-items: center; }
body.ui-v2 .packet-grid { gap: 8px; }
body.ui-v2 .packet-grid label.check { height: 34px; font-size: 12.5px; max-width: 100%; }
body.ui-v2 .packet-grid label.check span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
body.ui-v2 .packet-grid label.check:has(input:disabled) { cursor: default; }
body.ui-v2 .packet-grid label.check:has(input:disabled:not(:checked)) { opacity: .55; }
body.ui-v2 .packet-grid label.check:has(input:disabled:not(:checked)):hover { border-color: var(--border-strong); }

/* barcodes */
body.ui-v2 .barcode-list { display: flex; flex-wrap: wrap; gap: 8px; padding: 14px 20px; }
body.ui-v2 .barcode-list .barcode-empty { font-size: 12.5px; color: var(--text-3); font-style: italic; }
body.ui-v2 .barcode-list .primar-item {
	position: relative;
	display: inline-flex;
	align-items: center;
	gap: 8px;
	width: auto;
	height: 34px;
	margin: 0;
	padding: 0 12px 0 34px;
	border: 1px solid var(--border-strong);
	border-radius: 8px;
	background: var(--surface) url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230F8B8D' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 6 2 18 2 18 9'/><path d='M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2'/><rect x='6' y='14' width='12' height='8'/></svg>") no-repeat 10px center / 16px;
	color: var(--text) !important;
	font: 500 13px var(--mono);
	opacity: 1;
	cursor: pointer;
	transition: border-color .12s ease, background-color .12s ease;
}
body.ui-v2 .barcode-list .primar-item:hover { border-color: var(--primary); background-color: var(--primary-soft); color: var(--primary-700) !important; opacity: 1 !important; }
body.ui-v2 .barcode-list .primar-item.accepted { border-color: var(--success); color: var(--success) !important; }
body.ui-v2 .barcode-list .primar-item.missing { border-color: var(--danger); color: var(--danger) !important; }

/* today's request list */
body.ui-v2 .request-list tbody tr.current { background: var(--primary-soft); }
body.ui-v2 .request-list tbody tr.current:hover { background: var(--primary-soft); }
body.ui-v2 .request-list tbody tr.current td:first-child { box-shadow: inset 3px 0 0 var(--primary); }
body.ui-v2 .request-list tbody td .row-note { margin-top: 2px; font-size: 12px; color: var(--text-3); }
body.ui-v2 .request-list td.exl-names,
body.ui-v2 .request-list td.exl-prices { line-height: 1.6; font-size: 12.5px; }
body.ui-v2 .request-list td.exl-names span.waiting,
body.ui-v2 .request-list td.exl-prices span.waiting  { color: var(--text-2); }
body.ui-v2 .request-list td.exl-names span.accepted,
body.ui-v2 .request-list td.exl-prices span.accepted { color: var(--info); }
body.ui-v2 .request-list td.exl-names span.finished,
body.ui-v2 .request-list td.exl-prices span.finished { color: var(--success); }
body.ui-v2 .request-list td.exl-names span.refused,
body.ui-v2 .request-list td.exl-prices span.refused  { color: var(--danger); text-decoration: line-through; }
body.ui-v2 .request-list td.status-dots { white-space: normal; }
body.ui-v2 .request-list td.status-dots span,
body.ui-v2 .status-legend span {
	display: inline-block;
	width: 9px;
	height: 9px;
	margin: 2px;
	border-radius: 50%;
	font-size: 0;
	line-height: 0;
	vertical-align: middle;
	background: var(--border-strong);
}
body.ui-v2 .request-list td.status-dots span.accepted, body.ui-v2 .status-legend span.accepted { background: var(--info); }
body.ui-v2 .request-list td.status-dots span.finished, body.ui-v2 .status-legend span.finished { background: var(--success); }
body.ui-v2 .request-list td.status-dots span.refused,  body.ui-v2 .status-legend span.refused  { background: var(--danger); }
body.ui-v2 .status-legend { display: inline-flex; align-items: center; gap: 4px 6px; flex-wrap: wrap; font-style: normal; }
body.ui-v2 .status-legend span { margin: 0 2px 0 8px; }
body.ui-v2 .status-legend span:first-child { margin-left: 0; }
body.ui-v2 .request-list tfoot td.total { font-weight: 600; font-size: 14px; color: var(--text); }
body.ui-v2 .request-list tfoot td.note { font-style: normal; }

/* ------------------------------------------------------------------ visit module (Visit.class.php) */
body.ui-v2 .visit-page .page-header-main { display: flex; align-items: center; gap: 16px; }

/* tabs: legacy ul.head-tab restyled as a segmented tab bar */
body.ui-v2 .ui-tabs {
	display: flex;
	flex-wrap: wrap;
	gap: 4px;
	float: none;
	width: auto;
	height: auto;
	margin: 0 0 16px;
	padding: 4px;
	list-style: none;
	border: 1px solid var(--border);
	border-radius: 10px;
	background: var(--surface);
	box-shadow: var(--shadow-xs);
}
body.ui-v2 .ui-tabs li { float: none; height: auto; margin: 0; padding: 0; }
body.ui-v2 .ui-tabs a {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	height: 34px;
	margin: 0;
	padding: 0 14px;
	border-radius: 7px;
	border: none;
	background: transparent;
	color: var(--text-2);
	font: 500 13px var(--font);
	text-decoration: none;
	transition: background .12s ease, color .12s ease;
}
body.ui-v2 .ui-tabs a .ico { width: 16px; height: 16px; color: var(--text-3); }
body.ui-v2 .ui-tabs a:hover { background: var(--surface-2); color: var(--text); }
body.ui-v2 .ui-tabs a.active { background: var(--primary-soft); color: var(--primary-700); font-weight: 600; }
body.ui-v2 .ui-tabs a.active .ico { color: var(--primary); }

body.ui-v2 .visit-page .visit-form { margin: 0; }
body.ui-v2 .visit-page .visit-form > .error,
body.ui-v2 .visit-page .visit-form > .info { margin-bottom: 16px; }

/* static value inside a field (site name) */
body.ui-v2 .field .field-static {
	display: flex;
	align-items: center;
	gap: 8px;
	height: 36px;
	padding: 0 12px;
	border: 1px dashed var(--border-strong);
	border-radius: 8px;
	background: var(--surface-2);
	color: var(--text-2);
	font-size: 13px;
}
body.ui-v2 .field .field-static .ico { width: 15px; height: 15px; color: var(--text-3); }

/* autocomplete pickers inside form fields */
body.ui-v2 .field .ui-picker { position: relative; float: none; width: auto; }
body.ui-v2 .field .ui-picker .filter-input {
	box-sizing: border-box;
	width: 100%;
	height: 36px;
	margin: 0;
	padding: 0 12px;
	border: 1px solid var(--border-strong);
	border-radius: 8px;
	background: var(--surface) none;
	font: 13px var(--font);
	color: var(--text);
	outline: none;
	transition: border-color .12s ease, box-shadow .12s ease;
}
body.ui-v2 .field .ui-picker .filter-input:focus { border-color: var(--primary); box-shadow: 0 0 0 3px var(--primary-ring); }
body.ui-v2 .field .ui-picker .filter-input.filled { background-color: var(--primary-soft); border-color: var(--primary); color: var(--primary-700); font-weight: 500; }
body.ui-v2 .field .ui-picker .filter-input::placeholder { color: var(--text-3); font-weight: 400; }
body.ui-v2 .field .ui-picker .filter-list,
body.ui-v2 .data-table .ui-picker .filter-list {
	position: absolute;
	display: none;
	left: 0;
	right: 0;
	top: calc(100% + 4px);
	width: auto;
	max-height: 280px;
	overflow-y: auto;
	padding: 4px;
	border: 1px solid var(--border);
	border-radius: 10px;
	background: var(--surface);
	box-shadow: var(--shadow);
	font: 13px var(--font);
	z-index: 40;
}
body.ui-v2 .field .ui-picker .filter-item,
body.ui-v2 .data-table .ui-picker .filter-item {
	box-sizing: border-box;
	width: 100%;
	padding: 7px 10px;
	border: none;
	border-radius: 6px;
	color: var(--text);
	cursor: pointer;
}
body.ui-v2 .field .ui-picker .filter-item:hover,
body.ui-v2 .data-table .ui-picker .filter-item:hover { background: var(--surface-2); }
body.ui-v2 .field .ui-picker .filter-item.active,
body.ui-v2 .data-table .ui-picker .filter-item.active { background: var(--primary-soft); color: var(--primary-700); }
body.ui-v2 .field .refer-data { float: none; }
body.ui-v2 .field .refer-data input[type=text] { flex: 1 1 auto; }
body.ui-v2 .card-foot .divAjaxStatus.inline { display: none; border: none; padding: 0 0 0 12px; background: none; }

/* exam table extras */
body.ui-v2 .visit-exam-list td.refer { position: relative; min-width: 160px; }
body.ui-v2 .visit-exam-list td.refer .ref-name { margin-right: 6px; }
body.ui-v2 .visit-exam-list td.refer .inline-refer { display: inline-block; width: 180px; vertical-align: middle; }
body.ui-v2 .visit-exam-list td.refer .inline-refer .filter-input {
	box-sizing: border-box;
	width: 100%;
	height: 30px;
	margin: 0;
	padding: 0 10px;
	border: 1px solid var(--primary);
	border-radius: 7px;
	background: var(--surface) none;
	font: 13px var(--font);
	outline: none;
	box-shadow: 0 0 0 3px var(--primary-ring);
}
body.ui-v2 .visit-exam-list td.refer .inline-refer .filter-input.filled { background-color: var(--primary-soft); }
body.ui-v2 .data-table a.edit-item,
body.ui-v2 .data-table a.small-btn.save {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 26px;
	height: 26px;
	margin: 0;
	padding: 0;
	border-radius: 7px;
	vertical-align: middle;
	background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%238A97A8' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z'/><path d='m15 5 4 4'/></svg>") no-repeat center / 14px;
	opacity: 1;
}
body.ui-v2 .data-table a.edit-item:hover { background-color: var(--primary-soft); }
body.ui-v2 .data-table a.small-btn.save {
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230F8B8D' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'><polyline points='20 6 9 17 4 12'/></svg>");
	background-size: 16px;
	border: 1px solid var(--primary);
	background-color: var(--surface);
	float: none;
	position: static;
}
body.ui-v2 .data-table a.small-btn.save:hover { background-color: var(--primary-soft); }
body.ui-v2 .data-table td.ellipsis { max-width: 160px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* catalog of exams (filterexams fragment) */
body.ui-v2 .exam-catalog .card-head { align-items: center; }
body.ui-v2 .exam-catalog .search-exam { float: none; text-align: left; }
body.ui-v2 .exam-catalog .search-exam input[type=text] {
	box-sizing: border-box;
	width: 220px;
	height: 34px;
	margin: 0;
	padding: 0 12px;
	border: 1px solid var(--border-strong);
	border-radius: 8px;
	font: 13px var(--font);
	outline: none;
}
body.ui-v2 .exam-catalog .search-exam input[type=text]:focus { border-color: var(--primary); box-shadow: 0 0 0 3px var(--primary-ring); }
body.ui-v2 .filter-exams { margin: 0; padding: 8px 20px 16px; clear: none; }
body.ui-v2 .filter-exams .catalog-empty { padding: 20px 0; color: var(--text-3); font-style: italic; }
body.ui-v2 .filter-exams fieldset.exam-group {
	margin: 8px 0 0;
	padding: 0;
	border: 1px solid var(--border);
	border-radius: 10px;
	background: var(--surface);
	min-width: 0;
}
body.ui-v2 .filter-exams fieldset.exam-group legend {
	float: left;
	width: 100%;
	margin: 0;
	padding: 0;
}
body.ui-v2 .filter-exams fieldset.exam-group legend a {
	display: flex;
	align-items: center;
	gap: 8px;
	padding: 10px 14px;
	color: var(--text);
	font-weight: 600;
	font-size: 13px;
	text-decoration: none;
	border-radius: 10px;
}
body.ui-v2 .filter-exams fieldset.exam-group legend a:hover { background: var(--surface-2); }
body.ui-v2 .filter-exams fieldset.exam-group legend a .chev { width: 16px; height: 16px; color: var(--text-3); transition: transform .15s ease; }
body.ui-v2 .filter-exams fieldset.exam-group.collapsed legend a .chev { transform: rotate(-90deg); }
body.ui-v2 .filter-exams fieldset.exam-group legend a .count-badge { margin-left: 2px; }
body.ui-v2 .filter-exams fieldset.exam-group .exam-group-body {
	clear: both;
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
	padding: 4px 14px 14px;
	border-top: 1px solid var(--border);
}
body.ui-v2 .filter-exams fieldset.exam-group.collapsed .exam-group-body { display: none; }
body.ui-v2 .filter-exams .letter-section {
	flex: 0 0 100%;
	width: auto;
	margin: 6px 0 0;
	padding: 6px 0 2px;
	border: none;
	font-size: 11.5px;
	font-weight: 600;
	letter-spacing: .05em;
	color: var(--text-3);
	clear: both;
}
body.ui-v2 .filter-exams label.check {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	float: none;
	width: auto;
	max-width: 100%;
	height: 32px;
	margin: 0;
	padding: 0 12px 0 10px;
	border: 1px solid var(--border-strong);
	border-radius: 8px;
	background: var(--surface);
	font-size: 12.5px;
	font-weight: 500;
	color: var(--text-2);
	cursor: pointer;
	user-select: none;
}
body.ui-v2 .filter-exams label.check span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
body.ui-v2 .filter-exams label.check input[type=checkbox] { width: 14px; height: 14px; margin: 0; accent-color: var(--primary); float: none; }
body.ui-v2 .filter-exams label.check:hover { border-color: var(--primary); color: var(--text); }
body.ui-v2 .filter-exams label.check:has(input:checked) { border-color: var(--primary); background: var(--primary-soft); color: var(--primary-700); }
body.ui-v2 .filter-exams fieldset.packet-group label.check { font-weight: 600; }

/* barcode tab */
body.ui-v2 .visit-barcode { display: flex; flex-direction: column; gap: 20px; }
body.ui-v2 .visit-barcode .card { margin: 0; }
body.ui-v2 .barcode-layout {
	display: grid;
	grid-template-columns: minmax(0, 6fr) minmax(0, 5fr);
	gap: 20px;
	align-items: start;
}
body.ui-v2 .barcode-side { display: flex; flex-direction: column; gap: 20px; min-width: 0; }
body.ui-v2 .tube-buttons { display: flex; flex-wrap: wrap; gap: 6px; }
body.ui-v2 .tube-buttons .addtube {
	width: auto;
	margin: 0;
	background-image: none;
	font-family: var(--font);
	color: var(--text-2);
	cursor: pointer;
}
body.ui-v2 .tube-buttons .addtube:hover { border-color: var(--primary); color: var(--primary-700); background-color: var(--primary-soft); }
body.ui-v2 .tube-buttons .addtube.is-busy { opacity: .5; pointer-events: none; }
body.ui-v2 .sample-list { flex-direction: column; gap: 6px; }
body.ui-v2 .sample-list .primar-container { display: flex; align-items: center; gap: 8px; opacity: 1; }
body.ui-v2 .sample-list .primar-container .primar-item { flex: 1 1 auto; justify-content: flex-start; }
body.ui-v2 .sample-list .primar-container .primar-item b { font-weight: 600; margin-right: 4px; }
body.ui-v2 .sample-list .label-container { position: relative; display: inline-flex; width: 18px; height: 18px; flex: 0 0 auto; cursor: pointer; }
body.ui-v2 .sample-list .label-container input { position: absolute; inset: 0; margin: 0; opacity: 0; cursor: pointer; }
body.ui-v2 .sample-list .label-container .span-item {
	position: absolute;
	inset: 0;
	border: 1px solid var(--border-strong);
	border-radius: 5px;
	background: var(--surface);
}
body.ui-v2 .sample-list .label-container .span-item::after {
	content: "";
	position: absolute;
	left: 5px;
	top: 1px;
	width: 5px;
	height: 10px;
	border: solid #fff;
	border-width: 0 2px 2px 0;
	transform: rotate(45deg);
	opacity: 0;
}
body.ui-v2 .sample-list .label-container input:checked ~ .span-item { background: var(--success); border-color: var(--success); }
body.ui-v2 .sample-list .label-container input:checked ~ .span-item::after { opacity: 1; }
body.ui-v2 .sample-list .del-primar {
	flex: 0 0 auto;
	width: 26px;
	height: 26px;
	border-radius: 7px;
	cursor: pointer;
	background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%238A97A8' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><line x1='18' y1='6' x2='6' y2='18'/><line x1='6' y1='6' x2='18' y2='18'/></svg>") no-repeat center / 14px;
}
body.ui-v2 .sample-list .del-primar:hover { background-color: var(--danger-soft); }
body.ui-v2 .bx-list td.sample .smp-name { display: inline-block; }
body.ui-v2 .bx-list td.sample select {
	height: 30px;
	padding: 0 8px;
	border: 1px solid var(--primary);
	border-radius: 7px;
	font: 13px var(--font);
	background: var(--surface);
}
body.ui-v2 .bx-list td.sample-actions { width: 60px; white-space: nowrap; }
body.ui-v2 .bx-list .mikro-item {
	display: inline-flex;
	align-items: center;
	width: auto;
	height: 30px;
	margin: 0;
	padding: 0 10px 0 30px;
	border: 1px solid var(--border-strong);
	border-radius: 8px;
	background: var(--surface) url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230F8B8D' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 6 2 18 2 18 9'/><path d='M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2'/><rect x='6' y='14' width='12' height='8'/></svg>") no-repeat 9px center / 14px;
	color: var(--text) !important;
	font: 500 12.5px var(--mono);
	opacity: 1;
	cursor: pointer;
}
body.ui-v2 .bx-list .mikro-item:hover { border-color: var(--primary); background-color: var(--primary-soft); color: var(--primary-700) !important; }

/* history */
body.ui-v2 .visit-history .page-header-main { display: flex; align-items: center; gap: 16px; }
body.ui-v2 .status-legend .status-dot {
	display: inline-block;
	width: 9px;
	height: 9px;
	margin: 0 2px 0 8px;
	border-radius: 50%;
	vertical-align: middle;
	background: var(--border-strong);
}
body.ui-v2 .status-legend .status-dot:first-child { margin-left: 0; }
body.ui-v2 .status-legend .status-dot.active { background: var(--primary); }
body.ui-v2 .status-legend .status-dot.open { background: var(--danger); }
body.ui-v2 .data-table tbody tr.current { background: var(--primary-soft); }
body.ui-v2 .data-table tbody tr.current:hover { background: var(--primary-soft); }

/* exam catalog: neutralise the legacy fieldset / collapsed rules */
body.ui-v2 .filter-exams fieldset.exam-group,
body.ui-v2 .filter-exams fieldset.exam-group.collapsed {
	position: static;
	height: auto;
	margin: 8px 0 0;
	padding: 0;
	border: 1px solid var(--border);
	border-width: 1px;
	border-radius: 10px;
	background: var(--surface) !important;
}
body.ui-v2 .filter-exams fieldset.exam-group.collapsed legend,
body.ui-v2 .filter-exams fieldset.exam-group.collapsed legend *,
body.ui-v2 .filter-exams fieldset.exam-group.collapsed legend a .chev,
body.ui-v2 .filter-exams fieldset.exam-group.collapsed legend a .count-badge { display: inline-flex; }
body.ui-v2 .filter-exams fieldset.exam-group.collapsed legend { display: block; }
body.ui-v2 .filter-exams fieldset.exam-group.collapsed legend a { display: flex; }
body.ui-v2 .filter-exams fieldset.exam-group legend a,
body.ui-v2 .filter-exams fieldset.exam-group.collapsed legend a {
	width: auto;
	height: auto;
	padding: 10px 14px;
	margin: 0;
	background: none;
	background-image: none;
	font: 600 13px var(--font);
	color: var(--text);
	text-indent: 0;
}
body.ui-v2 .filter-exams fieldset.exam-group legend a:hover { background: var(--surface-2); color: var(--text); }
body.ui-v2 .filter-exams fieldset.exam-group.collapsed .exam-group-body { display: none; }

/* ------------------------------------------------------------------ exam module (Exams.class.php) */
body.ui-v2 .exam-page .page-header-main { display: flex; align-items: center; gap: 16px; }
body.ui-v2 .exam-page .ui-tabs a .ico { color: var(--warning); }
body.ui-v2 .exam-page .ui-tabs a.active .ico { color: var(--primary); }
body.ui-v2 .exam-page .form-view { float: none; width: auto; }
body.ui-v2 .exam-page .form-view label { width: auto; float: none; }
body.ui-v2 .exam-card .card-head h2 .chip { margin-left: 8px; vertical-align: 2px; font-weight: 500; }
body.ui-v2 .exam-doctors { margin-bottom: 18px; }
body.ui-v2 .exam-doctors .doctor-row { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; }
body.ui-v2 .exam-doctors .dr-list { display: flex; flex-wrap: wrap; gap: 6px; float: none; }
body.ui-v2 .exam-doctors .dr-list .dr-empty { font-size: 12.5px; color: var(--text-3); font-style: italic; }
body.ui-v2 .exam-doctors .dr-list a.dr-chip {
	font-weight: 500;
	text-decoration: none;
	color: var(--primary-700);
	background: var(--primary-soft);
	border-color: transparent;
	padding-right: 26px;
	position: relative;
}
body.ui-v2 .exam-doctors .dr-list a.dr-chip::after {
	content: "";
	position: absolute;
	right: 8px;
	top: 50%;
	width: 12px;
	height: 12px;
	margin-top: -6px;
	background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23095C5E' stroke-width='2.5' stroke-linecap='round'><line x1='18' y1='6' x2='6' y2='18'/><line x1='6' y1='6' x2='18' y2='18'/></svg>") no-repeat center / contain;
	opacity: .6;
}
body.ui-v2 .exam-doctors .dr-list a.dr-chip:hover { background: var(--danger-soft); color: var(--danger); }
body.ui-v2 .exam-doctors .dr-list a.dr-chip:hover::after { opacity: 1; filter: hue-rotate(160deg); }
body.ui-v2 .exam-doctors .dr-add { float: none; margin: 0; width: auto; }
body.ui-v2 .exam-doctors .dr-add select {
	height: 36px;
	min-width: 220px;
	padding: 0 32px 0 12px;
	border: 1px solid var(--border-strong);
	border-radius: 8px;
	background: var(--surface);
	font: 13px var(--font);
	color: var(--text);
}
body.ui-v2 .exam-doctors .dr-add .icon-btn[disabled] { opacity: .4; pointer-events: none; }
body.ui-v2 .exam-editor textarea.exam-desc {
	box-sizing: border-box;
	width: 100%;
	min-height: 360px;
	height: auto;
	padding: 14px 16px;
	border: 1px solid var(--border-strong);
	border-radius: 10px;
	background: var(--surface);
	font: 14px/1.6 var(--font);
	color: var(--text);
	resize: vertical;
	outline: none;
}
body.ui-v2 .exam-editor textarea.exam-desc:focus { border-color: var(--primary); box-shadow: 0 0 0 3px var(--primary-ring); }
body.ui-v2 .exam-editor textarea.exam-desc[readonly] { background: var(--surface-2); color: var(--text-2); }
body.ui-v2 .exam-page .form-actions .btn.hidden { display: none !important; }
body.ui-v2 .exam-page .form-actions .btn[disabled] { opacity: .5; cursor: not-allowed; }

/* list pages (todo / finished) share the filter form */
body.ui-v2 .exam-list-page .form-filter { display: block; float: none; width: 100%; box-sizing: border-box; overflow: visible; margin: 0; padding: 0; border: none; background: none; }
body.ui-v2 .exam-list-page .form-filter .ui-filter { display: block; width: auto; }
body.ui-v2 .exam-list-page .form-filter .field { float: none; }
body.ui-v2 .exam-list-page .form-filter label { float: none; width: auto; height: auto; padding: 0; }
body.ui-v2 .exam-list-page .form-filter .choice-group label.check { width: auto; }
body.ui-v2 .exam-list-page .form-filter input[type=date] { width: auto; flex: 1 1 auto; min-width: 0; }
body.ui-v2 .exam-list-page .form-filter .filter-actions .btn.search {
	width: auto;
	height: 36px;
	padding: 0 16px;
	background-image: none;
	opacity: 1;
	border-radius: 8px;
}
body.ui-v2 .exam-list-page .form-filter select {
	box-sizing: border-box;
	width: 100%;
	height: 36px;
	padding: 0 32px 0 12px;
	border: 1px solid var(--border-strong);
	border-radius: 8px;
	background: var(--surface);
	font: 13px var(--font);
	color: var(--text);
}

/* ------------------------------------------------------------------ exam configuration pages (ExamList / ExamPakete / ExamServices) */
body.ui-v2 .exam-config .form-entry { float: none; width: auto; margin: 0; padding: 0; border: none; background: none; }
body.ui-v2 .exam-config .form-entry label { float: none; width: auto; }
body.ui-v2 .exam-config .form-actions { margin-bottom: 20px; }
body.ui-v2 .config-list .table-filters { display: flex; gap: 8px; flex-wrap: wrap; }
body.ui-v2 .config-list .table-filters select {
	height: 34px;
	min-width: 160px;
	padding: 0 30px 0 10px;
	border: 1px solid var(--border-strong);
	border-radius: 8px;
	background: var(--surface);
	font: 12.5px var(--font);
	color: var(--text);
}
body.ui-v2 .data-table .yes-icon { width: 16px; height: 16px; color: var(--success); vertical-align: middle; }
body.ui-v2 .data-table .no-dot { display: inline-block; width: 8px; height: 8px; border-radius: 50%; background: var(--border-strong); vertical-align: middle; }
body.ui-v2 .data-table td.fmt-cell { white-space: nowrap; }
body.ui-v2 .data-table .fmt-chip {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 20px;
	height: 20px;
	margin: 0 1px;
	border-radius: 5px;
	background: var(--primary-soft);
	color: var(--primary-700);
	font-size: 11px;
	font-weight: 700;
}
body.ui-v2 .data-table td.ellipsis.w250 { max-width: 320px; }
body.ui-v2 .data-table td.ellipsis.w120 { max-width: 160px; }
body.ui-v2 .data-table td.ellipsis.w90 { max-width: 130px; }
body.ui-v2 .data-table tfoot td.total { font-weight: 600; color: var(--text); }

/* packages: form + exam list side by side */
body.ui-v2 .pkt-layout {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
	gap: 20px;
	align-items: start;
	margin-bottom: 20px;
}
body.ui-v2 .pkt-layout .card { margin: 0; }
body.ui-v2 .pkt-exams-card .pkt-exam-list {
	box-sizing: border-box;
	display: block;
	width: 100%;
	height: auto;
	min-height: 300px;
	margin: 0;
	padding: 6px;
	border: none;
	background: var(--surface);
	font: 13px/1.5 var(--font);
	color: var(--text);
	outline: none;
}
body.ui-v2 .pkt-exams-card .pkt-exam-list option { padding: 7px 10px; border-radius: 6px; }
body.ui-v2 .pkt-exams-card .pkt-exam-list option:checked { background: var(--primary-soft); color: var(--primary-700); }
body.ui-v2 .pkt-exams-card .pkt-total { display: flex; justify-content: space-between; align-items: center; }
body.ui-v2 .pkt-exams-card .pkt-total .muted { color: var(--text-3); font-size: 12.5px; }
body.ui-v2 .pkt-exams-card .pkt-total b { font-size: 15px; }

/* report: group-by checkboxes in the table head */
body.ui-v2 .exam-report .data-table thead input.group-by { width: 14px; height: 14px; margin: 0 6px 0 0; vertical-align: -2px; accent-color: var(--primary); cursor: pointer; }
body.ui-v2 .exam-report .data-table thead td { white-space: nowrap; }

body.ui-v2 .exam-list-page .form-filter .choice-group label.check { height: 36px; padding: 0 12px 0 10px; }
body.ui-v2 .exam-list-page .form-filter .choice-group { gap: 6px; }

body.ui-v2 .ui-filter .field:has(> .choice-group) { flex: 0 0 auto; max-width: none; }
body.ui-v2 .ui-filter .field > .choice-group { flex-wrap: nowrap; }

/* ------------------------------------------------------------------ responsive */
@media (max-width: 1100px) {
	body.ui-v2 .pkt-layout { grid-template-columns: 1fr; }
	body.ui-v2 .barcode-layout { grid-template-columns: 1fr; }
	body.ui-v2 .request-layout { grid-template-columns: 1fr; }
	body.ui-v2 .topbar .top-links .pill.site { display: none; }
	body.ui-v2 .form-grid.cols-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	body.ui-v2 .form-grid.cols-3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 900px) {
	body.ui-v2 .sidebar {
		position: fixed;
		left: 0;
		top: 0;
		bottom: 0;
		height: 100vh;
		width: var(--sidebar-w) !important;
		flex-basis: var(--sidebar-w) !important;
		transform: translateX(-100%);
		transition: transform .2s ease;
		box-shadow: none;
		display: flex !important;
	}
	body.ui-v2.nav-open .sidebar { transform: translateX(0); box-shadow: var(--shadow); }
	body.ui-v2 .nav-backdrop {
		display: none;
		position: fixed;
		inset: 0;
		background: rgba(16, 24, 40, .4);
		z-index: 59;
	}
	body.ui-v2.nav-open .nav-backdrop { display: block; }
	body.ui-v2 .topbar { padding: 0 12px; gap: 6px; }
	body.ui-v2 .topbar .mobile-menu {
		display: inline-flex;
		width: 34px;
		height: 34px;
		margin: 0;
		background-image: none;
	}
	body.ui-v2 .topbar .expand-btn { display: none !important; }
	body.ui-v2 .topbar .quick-links { display: none; }
	body.ui-v2 .topbar .top-links .user-chip .name,
	body.ui-v2 .topbar .top-links .pill.date .label { display: none; }
	body.ui-v2 .app-content { padding: 16px 16px 40px; }
	body.ui-v2 .page-title { font-size: 20px; }
	body.ui-v2 .form-grid,
	body.ui-v2 .form-grid.cols-3,
	body.ui-v2 .form-grid.cols-4 { grid-template-columns: 1fr; }
	body.ui-v2 .form-grid .span-2,
	body.ui-v2 .form-grid .span-3 { grid-column: auto; }
	body.ui-v2 .ui-filter .field { max-width: none; }
	body.ui-v2 .ui-filter .filter-actions { width: 100%; margin-left: 0; }
	body.ui-v2 .ui-filter .filter-actions .btn { flex: 1 1 auto; }
	body.ui-v2 .card-head, body.ui-v2 .card-body { padding-left: 16px; padding-right: 16px; }
	body.ui-v2 .page-header { align-items: flex-start; }
	body.ui-v2 .page-actions { width: 100%; }
	body.ui-v2 .page-actions .btn { flex: 1 1 auto; }
	body.ui-v2 .patient-view fieldset.visit > .quick-links { position: static; padding: 0 16px 10px; }
}
@media (max-width: 600px) {
	body.ui-v2 .topbar .top-links .pill.date { display: none; }
	body.ui-v2 .topbar .search-type { display: none; }
	body.ui-v2 .topbar .search-input { padding-right: 12px; }
}

/* ------------------------------------------------------------------ small utilities */
body.ui-v2 .mono { font-family: var(--mono); font-size: 12.5px; letter-spacing: .2px; }
body.ui-v2 .page > .error,
body.ui-v2 .page > .info { display: flex; align-items: flex-start; gap: 10px; margin: 0 0 16px; padding: 11px 14px; border-radius: 10px; border: 1px solid transparent; font-size: 13px; line-height: 1.45; }
body.ui-v2 .page > .error { background: var(--danger-soft); border-color: rgba(217, 45, 32, .25); color: #9A1F16; }
body.ui-v2 .page > .info { background: var(--success-soft); border-color: rgba(18, 128, 92, .25); color: #0B5C42; }
body.ui-v2 .page-alerts:empty { display: none; }

/* collapsed visit rows: the legacy rule hides every descendant, keep the legend text */
body.ui-v2 .patient-view fieldset.visit.collapsed legend a > span { display: inline; }

/* chat status bar (WhatsApp) as a pill so it does not collide with the quick-price button */
body.ui-v2 #chatInfo {
	bottom: 16px;
	right: 20px;
	width: auto;
	height: auto;
	padding: 7px 14px;
	border: 1px solid var(--border);
	border-radius: 999px;
	background: var(--surface);
	box-shadow: var(--shadow-sm);
	font: 500 12px var(--font);
	color: var(--text-3);
	cursor: pointer;
	z-index: 56;
}
body.ui-v2 .quick-buttons .show { bottom: 60px; }

/* ------------------------------------------------------------------ visit view (VisitView.class.php) */
body.ui-v2 .visit-view .visit-notes {
	margin: 16px 0 0;
	padding: 12px 14px;
	border-radius: 10px;
	background: var(--surface-2);
	border: 1px solid var(--border);
}
body.ui-v2 .visit-view .visit-notes-label {
	font-size: 11.5px;
	font-weight: 600;
	letter-spacing: .04em;
	text-transform: uppercase;
	color: var(--text-3);
	margin-bottom: 4px;
}
body.ui-v2 .visit-view .visit-notes-body { font-size: 13.5px; color: var(--text); line-height: 1.5; }
body.ui-v2 .visit-view .card-head h2 { display: inline-flex; align-items: center; gap: 8px; }
body.ui-v2 .visit-view .card-head h2 .ico { width: 17px; height: 17px; color: var(--primary); }
body.ui-v2 .visit-view .exam-list .data-table td.ellipsis { max-width: 180px; }
body.ui-v2 .visit-view .data-table .chip { height: 22px; font-size: 11.5px; }

/* embedded (patient accordion) variant */
body.ui-v2 .visit-view.embedded { padding-top: 12px; }
body.ui-v2 .visit-view.embedded .card { box-shadow: none; }
body.ui-v2 .visit-view.embedded .card:last-child { margin-bottom: 0; }

/* legacy result blocks rendered inside .card-body.embed */
body.ui-v2 .visit-view .embed { padding: 14px 20px 18px; font-size: 13px; }
body.ui-v2 .visit-view .embed .item-table,
body.ui-v2 .visit-view .embed table.content.micro,
body.ui-v2 .visit-view .embed table.content.micro table { width: 100%; border-collapse: collapse; margin: 0; font: 13px var(--font); }
body.ui-v2 .visit-view .embed .item-table thead td,
body.ui-v2 .visit-view .embed table.content.micro thead td {
	padding: 8px 10px;
	border: none !important;
	border-bottom: 1px solid var(--border) !important;
	background: var(--surface-2);
	font: 600 10.5px var(--font);
	font-style: normal !important;
	letter-spacing: .05em;
	text-transform: uppercase;
	color: var(--text-3);
	white-space: nowrap;
}
body.ui-v2 .visit-view .embed .item-table tr,
body.ui-v2 .visit-view .embed table.content.micro tr { border: none; }
body.ui-v2 .visit-view .embed .item-table tbody tr,
body.ui-v2 .visit-view .embed table.content.micro tbody tr { border-top: 1px solid var(--border) !important; }
body.ui-v2 .visit-view .embed .item-table tbody tr:first-child,
body.ui-v2 .visit-view .embed table.content.micro tbody tr:first-child { border-top: none !important; }
body.ui-v2 .visit-view .embed .item-table tbody tr:hover,
body.ui-v2 .visit-view .embed table.content.micro tbody tr:hover { background: #F6FAFA !important; }
body.ui-v2 .visit-view .embed .item-table tbody td,
body.ui-v2 .visit-view .embed table.content.micro tbody td {
	padding: 7px 10px;
	height: auto;
	border: none !important;
	font: 13px var(--font);
	color: var(--text);
	vertical-align: middle;
}
body.ui-v2 .visit-view .embed .item-table tfoot td { padding: 8px 10px; border-top: 1px solid var(--border); font-size: 12.5px; color: var(--text-2); }
body.ui-v2 .visit-view .embed .item-table tfoot td.notes i { color: var(--text-3); }

/* exam (free text) result */
body.ui-v2 .visit-view .embed .form-view { display: block; }
body.ui-v2 .visit-view .embed .form-view .form-item { display: block; float: none; width: auto; margin: 0 0 10px; padding: 0; }
body.ui-v2 .visit-view .embed .form-view .form-item > label {
	display: inline-block;
	float: none;
	width: auto;
	margin: 0 8px 0 0;
	font-size: 11.5px;
	font-weight: 600;
	letter-spacing: .04em;
	text-transform: uppercase;
	color: var(--text-3);
}
body.ui-v2 .visit-view .embed .form-view .html-view {
	margin: 4px 0 0;
	padding: 12px 14px;
	border: 1px solid var(--border);
	border-radius: 10px;
	background: var(--surface-2);
	font-size: 13.5px;
	line-height: 1.55;
	color: var(--text);
	overflow-wrap: anywhere;
}
body.ui-v2 .visit-view .embed .form-view .photos a {
	display: inline-block;
	width: 96px;
	height: 96px;
	margin: 6px 6px 0 0;
	border-radius: 10px;
	border: 1px solid var(--border);
	background-size: cover;
	background-position: center;
}

/* analysis result table */
body.ui-v2 .visit-view .embed .ax-view td.ax-name { font-weight: 500; }
body.ui-v2 .visit-view .embed .ax-view td.ax-value { font-weight: 600; font-variant-numeric: tabular-nums; }
body.ui-v2 .visit-view .embed .ax-view td.ax-unit,
body.ui-v2 .visit-view .embed .ax-view td.ax-desc { color: var(--text-3); font-size: 12.5px; }
body.ui-v2 .visit-view .embed .ax-view td.ax-flag:not(:empty) { color: var(--danger); font-weight: 600; font-size: 12px; }
body.ui-v2 .visit-view .embed .ax-view td.bold { padding-top: 14px; font-weight: 600; color: var(--primary-700); font-size: 12.5px; }
body.ui-v2 .visit-view .embed .upload-view:empty { display: none; }

/* microbiology result */
body.ui-v2 .visit-view .result-card:not(.invoice) .embed > table[width="100%"]:first-child td { padding: 3px 10px 3px 0; border: none; font-size: 13px; }
body.ui-v2 .visit-view .result-card:not(.invoice) .embed > table[width="100%"]:first-child td i { color: var(--text-3); font-style: normal; font-size: 11.5px; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; }
body.ui-v2 .visit-view .result-card:not(.invoice) .embed > table[width="100%"]:first-child td b { font-weight: 600; }
body.ui-v2 .visit-view .embed table.content.micro { margin-top: 12px !important; border: 1px solid var(--border); border-radius: 10px; overflow: hidden; }
body.ui-v2 .visit-view .embed table.content.micro > tbody > tr > td { padding: 0 !important; border: none !important; }
body.ui-v2 .visit-view .embed table.content.micro > tbody > tr > td[style*="border-right"] { border-right: 1px solid var(--border) !important; }
body.ui-v2 .visit-view .embed table.content.micro thead tr { background: var(--surface-2) !important; }
body.ui-v2 .visit-view .embed table.content.micro td.foot-td { padding: 8px 10px !important; border-top: 1px solid var(--border) !important; color: var(--text-2); font-size: 12.5px; }

/* invoice */
body.ui-v2 .visit-view .invoice .embed > table > tbody > tr:first-child > td {
	padding: 0 0 10px;
	border: none;
	color: var(--text-3);
	font-size: 11px;
	line-height: 1.5;
}
body.ui-v2 .visit-view .invoice .embed > table > tbody > tr:first-child > td i { font-size: 10px; }
body.ui-v2 .visit-view .invoice .embed > table > tbody > tr:first-child > td i { color: var(--text-3); font-style: normal; }
body.ui-v2 .visit-view .invoice .embed > table > tbody > tr:first-child > td b { font-weight: 500; color: var(--text-2); margin-right: 6px; }
body.ui-v2 .visit-view .invoice .embed > table > tbody > tr > td { border: none; vertical-align: top; }
body.ui-v2 .visit-view .invoice .embed .item-table.view { border: 1px solid var(--border); border-radius: 10px; overflow: hidden; }
body.ui-v2 .visit-view .invoice .embed .item-table.view td[align="right"] { font-variant-numeric: tabular-nums; }
body.ui-v2 .visit-view .invoice .embed fieldset.subview {
	display: block;
	margin: 0;
	padding: 0;
	border: 1px solid var(--border);
	border-radius: 10px;
	background: var(--surface);
	min-width: 0;
	width: auto;
}
body.ui-v2 .visit-view .invoice .embed fieldset.subview legend {
	float: left;
	width: 100%;
	margin: 0;
	padding: 9px 12px;
	border-bottom: 1px solid var(--border);
	background: var(--surface-2);
	font-size: 11.5px;
	font-weight: 600;
	letter-spacing: .05em;
	text-transform: uppercase;
	color: var(--text-3);
}
body.ui-v2 .visit-view .invoice .embed fieldset.subview > * { clear: both; }
body.ui-v2 .visit-view .invoice .embed fieldset.payments { min-width: 380px; }
body.ui-v2 .visit-view .invoice .embed fieldset.payments .item-table thead td { background: none; text-transform: none; letter-spacing: 0; font-size: 12px; }
body.ui-v2 .visit-view .invoice .embed fieldset.payments .item-table td.error { color: var(--text-3); font-style: italic; }
body.ui-v2 .visit-view .invoice .embed fieldset.invoice-totals { width: 240px; margin-left: auto; }
body.ui-v2 .visit-view .invoice .embed #invTotals { width: 100%; border-collapse: collapse; }
body.ui-v2 .visit-view .invoice .embed #invTotals td { padding: 6px 12px; border: none; font: 13px var(--font); font-variant-numeric: tabular-nums; }
body.ui-v2 .visit-view .invoice .embed #invTotals td.label { color: var(--text-3); font-style: normal; font-size: 12.5px; }
body.ui-v2 .visit-view .invoice .embed #invTotals tr:last-child td { border-top: 1px solid var(--border); font-weight: 600; }
body.ui-v2 .visit-view .invoice .embed #invTotals td.warning { color: var(--danger); font-weight: 600; }
body.ui-v2 .visit-view .invoice .embed fieldset.invoice-notes span { display: block; padding: 10px 12px; font-size: 13px; }
@media (max-width: 900px) {
	body.ui-v2 .visit-view .invoice .embed fieldset.payments { min-width: 0; }
	body.ui-v2 .visit-view .invoice .embed > table > tbody > tr > td[rowspan] { display: block; }
}

/* ------------------------------------------------------------------ visit reports (VisitReports.class.php) */
body.ui-v2 .visit-report .form-filter { display: block; float: none; width: 100%; box-sizing: border-box; overflow: visible; margin: 0; padding: 0; border: none; background: none; }
body.ui-v2 .visit-report .form-filter .ui-filter { display: block; width: auto; }
body.ui-v2 .visit-report .form-filter .field { float: none; }
body.ui-v2 .visit-report .form-filter label { float: none; width: auto; height: auto; padding: 0; }
body.ui-v2 .visit-report .form-filter input[type=date] { width: auto; flex: 1 1 auto; min-width: 0; }
body.ui-v2 .visit-report .form-filter select {
	box-sizing: border-box;
	width: 100%;
	height: 36px;
	padding: 0 32px 0 12px;
	border: 1px solid var(--border-strong);
	border-radius: 8px;
	background: var(--surface);
	font: 13px var(--font);
	color: var(--text);
}
body.ui-v2 .visit-report .form-filter .filter-actions .btn.search { width: auto; height: 36px; padding: 0 16px; background-image: none; opacity: 1; border-radius: 8px; }
body.ui-v2 .visit-report .form-filter .ui-picker .filter-list { width: auto; }
body.ui-v2 .visit-report .table-toolbar .card-actions { display: flex; gap: 6px; }
body.ui-v2 .visit-report .data-table thead input.group-by { width: 14px; height: 14px; margin: 0 6px 0 0; vertical-align: -2px; accent-color: var(--primary); cursor: pointer; }
body.ui-v2 .visit-report .data-table thead td { white-space: nowrap; }
body.ui-v2 .visit-report .data-table tfoot td.num.total { font-weight: 600; color: var(--text); }
body.ui-v2 .visit-report .data-table td.status.active { color: var(--success); }

/* ------------------------------------------------------------------ visit services tab (VisitServices.class.php) */
body.ui-v2 .service-picker { flex-wrap: wrap; }
body.ui-v2 .service-picker .filter-data { flex: 1 1 260px; }
body.ui-v2 .service-picker .picker-num { display: flex; align-items: center; gap: 6px; flex: 0 0 auto; }
body.ui-v2 .service-picker .picker-num label { font-size: 12px; color: var(--text-3); white-space: nowrap; }
body.ui-v2 .service-picker .picker-num input[type=text] {
	box-sizing: border-box;
	width: 84px !important;
	height: 36px;
	margin: 0;
	padding: 0 10px;
	border: 1px solid var(--border-strong);
	border-radius: 8px;
	background: var(--surface);
	font: 13px var(--font);
	text-align: right;
	outline: none;
}
body.ui-v2 .service-picker .picker-num.ccy input[type=text] { width: 56px !important; text-align: center; }
body.ui-v2 .service-picker .picker-num input[readonly] { background: var(--surface-2); color: var(--text-2); }
body.ui-v2 .service-picker .picker-num input:focus { border-color: var(--primary); box-shadow: 0 0 0 3px var(--primary-ring); }
body.ui-v2 .service-picker .btn.hidden { display: none !important; }
body.ui-v2 .service-picker .btn.saveItem { background-image: none; }
body.ui-v2 .service-catalog .filter-exams .service-group label.check { max-width: 320px; }

/* ------------------------------------------------------------------ visit diagnose tab (VisitDiagnose.class.php) */
body.ui-v2 .diagnose-card .form-entry { float: none; width: auto; margin: 0; padding: 0; border: none; background: none; }
body.ui-v2 .diagnose-card .form-entry label { float: none; width: auto; }
body.ui-v2 .diagnose-card .ui-picker .filter-list.dgn-list { max-height: 360px; }
body.ui-v2 .diagnose-card .ui-picker .filter-item { display: flex; align-items: flex-start; gap: 10px; }
body.ui-v2 .diagnose-card .ui-picker .filter-item label.dgn-code {
	flex: 0 0 68px;
	width: auto;
	margin: 0;
	padding: 0;
	font-family: var(--mono);
	font-size: 12px;
	font-weight: 600;
	color: var(--primary-700);
	cursor: pointer;
}
body.ui-v2 .diagnose-card .card-foot #save_status:empty { display: none; }
body.ui-v2 .diagonose-list .chip.mono { font-weight: 600; }

/* ------------------------------------------------------------------ visit anamnesis tab (VisitDiagnose.class.php) */
body.ui-v2 .anamnesis.form-entry { float: none; width: auto; margin: 0; padding: 0; border: none; background: none; }
body.ui-v2 .anamnesis.form-entry label { float: none; width: auto; text-align: left; }
body.ui-v2 .anamnesis .vitals-grid .input-affix { flex: 1 1 auto; }
body.ui-v2 .anamnesis .vitals-grid .input-affix input.one-four { width: 100% !important; text-align: right; }
body.ui-v2 .anamnesis .vitals-grid .input-row .sep { color: var(--text-3); flex: 0 0 auto; }
body.ui-v2 .anamnesis .card-foot .save-note { display: none; font-size: 12.5px; color: var(--success); }
body.ui-v2 .upload-card .upload-row {
	display: flex;
	align-items: center;
	gap: 10px;
	flex-wrap: wrap;
	padding: 12px 20px;
	border-bottom: 1px solid var(--border);
	background: var(--surface-2);
}
body.ui-v2 .upload-card .file-btn { position: relative; overflow: hidden; cursor: pointer; }
body.ui-v2 .upload-card .file-btn input[type=file] { position: absolute; inset: 0; opacity: 0; width: 100%; height: 100%; cursor: pointer; }
body.ui-v2 .upload-card .file-name { font-size: 12.5px; color: var(--text-3); max-width: 220px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
body.ui-v2 .upload-card .file-name.has-file { color: var(--text); font-weight: 500; }
body.ui-v2 .upload-card input.file-desc {
	box-sizing: border-box;
	flex: 1 1 200px;
	height: 36px;
	margin: 0;
	padding: 0 12px;
	border: 1px solid var(--border-strong);
	border-radius: 8px;
	background: var(--surface);
	font: 13px var(--font);
	outline: none;
}
body.ui-v2 .upload-card input.file-desc:focus { border-color: var(--primary); box-shadow: 0 0 0 3px var(--primary-ring); }
body.ui-v2 .upload-card .btn.upload { background-image: none; width: auto; }
body.ui-v2 .upload-card .data-table a.open-item.file-type {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: auto;
	height: 22px;
	padding: 0 8px;
	border-radius: 999px;
	background: var(--primary-soft) none;
	color: var(--primary-700) !important;
	font-size: 11px;
	font-weight: 600;
	letter-spacing: .04em;
	text-decoration: none !important;
}
body.ui-v2 .upload-card .data-table a.open-item.file-type:hover { background: var(--primary); color: #fff !important; }

/* ------------------------------------------------------------------ invoice module (Invoice.class.php) */
body.ui-v2 .invoice-page .card-head h2,
body.ui-v2 .invoice-form .card-head h2 { display: inline-flex; align-items: center; gap: 8px; }
body.ui-v2 .invoice-page .page-actions input.btn,
body.ui-v2 .invoice-actions input.btn { width: auto; margin: 0; background-image: none; font-family: var(--font); cursor: pointer; }
body.ui-v2 .invoice-page .page-actions input.btn.hidden,
body.ui-v2 .invoice-actions input.btn.hidden { display: none !important; }
body.ui-v2 .invoice-page input.btn.taxed,
body.ui-v2 .invoice-actions input.btn.taxed { border-color: var(--success); color: var(--success); background: var(--success-soft); }
body.ui-v2 .invoice-page input.btn[disabled],
body.ui-v2 .invoice-actions input.btn[disabled] { opacity: .5; cursor: not-allowed; }
body.ui-v2 .invoice-form.embedded { padding-top: 4px; }
body.ui-v2 .invoice-form.embedded .card { box-shadow: none; }
body.ui-v2 .invoice-actions { flex-wrap: wrap; }
body.ui-v2 .invoice-actions-bottom { display: flex; gap: 8px; margin-top: 16px; }

/* items table */
body.ui-v2 .invoice-items-card .data-table td.row-actions { white-space: nowrap; text-align: right; }
body.ui-v2 .invoice-items-card .data-table td.row-actions a { float: none; margin-left: 2px; vertical-align: middle; }
body.ui-v2 .data-table a.save-item,
body.ui-v2 .data-table a.disc-item,
body.ui-v2 .data-table a.ecr-item,
body.ui-v2 .data-table a.small-btn.search,
body.ui-v2 .data-table a.small-btn.clear {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 26px;
	height: 26px;
	margin: 0;
	padding: 0;
	border-radius: 7px;
	vertical-align: middle;
	background-color: transparent;
	background-repeat: no-repeat;
	background-position: center;
	background-size: 15px;
	opacity: 1;
	float: none;
	position: static;
}
body.ui-v2 .data-table a.save-item { border: 1px solid var(--primary); background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230F8B8D' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'><polyline points='20 6 9 17 4 12'/></svg>"); }
body.ui-v2 .data-table a.disc-item { background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%238A97A8' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><line x1='19' y1='5' x2='5' y2='19'/><circle cx='6.5' cy='6.5' r='2.5'/><circle cx='17.5' cy='17.5' r='2.5'/></svg>"); }
body.ui-v2 .data-table a.ecr-item { background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%238A97A8' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 6 2 18 2 18 9'/><path d='M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2'/><rect x='6' y='14' width='12' height='8'/></svg>"); }
body.ui-v2 .data-table a.small-btn.search { background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%238A97A8' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><circle cx='11' cy='11' r='8'/><line x1='21' y1='21' x2='16.65' y2='16.65'/></svg>"); }
body.ui-v2 .data-table a.small-btn.clear { background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%238A97A8' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><line x1='18' y1='6' x2='6' y2='18'/><line x1='6' y1='6' x2='18' y2='18'/></svg>"); }
body.ui-v2 .data-table a.disc-item:hover,
body.ui-v2 .data-table a.ecr-item:hover,
body.ui-v2 .data-table a.small-btn.search:hover,
body.ui-v2 .data-table a.small-btn.clear:hover { background-color: var(--surface-2); }
body.ui-v2 .data-table a.save-item:hover { background-color: var(--primary-soft); }
body.ui-v2 .data-table a.hidden { display: none !important; }
body.ui-v2 .data-table input.inline-edit {
	box-sizing: border-box;
	width: 80px;
	height: 30px;
	margin: 0;
	padding: 0 8px;
	border: 1px solid var(--primary);
	border-radius: 7px;
	font: 13px var(--font);
	text-align: right;
	outline: none;
	box-shadow: 0 0 0 3px var(--primary-ring);
}

/* article add row (tfoot) */
body.ui-v2 .invoice-items-card tfoot.article-add { background: var(--surface-2); border-top: 1px solid var(--border); }
body.ui-v2 .invoice-items-card tfoot.article-add.hidden { display: none; }
body.ui-v2 .invoice-items-card tfoot.article-add td { padding: 10px 8px; border: none; vertical-align: middle; }
body.ui-v2 .invoice-items-card tfoot.article-add input[type=text],
body.ui-v2 .invoice-items-card tfoot.article-add select {
	box-sizing: border-box;
	width: 100%;
	height: 34px;
	margin: 0;
	padding: 0 10px;
	border: 1px solid var(--border-strong);
	border-radius: 8px;
	background: var(--surface);
	font: 13px var(--font);
	color: var(--text);
	outline: none;
}
body.ui-v2 .invoice-items-card tfoot.article-add input.number { text-align: right; }
body.ui-v2 .invoice-items-card tfoot.article-add input.w70 { width: 84px !important; }
body.ui-v2 .invoice-items-card tfoot.article-add input.w50 { width: 64px !important; }
body.ui-v2 .invoice-items-card tfoot.article-add input.w80 { width: 96px !important; }
body.ui-v2 .invoice-items-card tfoot.article-add input[readonly] { background: var(--surface); color: var(--text-2); }
body.ui-v2 .invoice-items-card tfoot.article-add input:focus,
body.ui-v2 .invoice-items-card tfoot.article-add select:focus { border-color: var(--primary); box-shadow: 0 0 0 3px var(--primary-ring); }
body.ui-v2 .invoice-items-card tfoot.article-add .ui-picker { position: relative; float: none; width: auto; min-width: 200px; }
body.ui-v2 .invoice-items-card tfoot.article-add .ui-picker .filter-input.filled { background: var(--primary-soft); border-color: var(--primary); color: var(--primary-700); font-weight: 500; }
body.ui-v2 .invoice-items-card tfoot.article-add .ui-picker .filter-list {
	position: absolute;
	display: none;
	left: 0;
	right: 0;
	top: calc(100% + 4px);
	width: auto;
	max-height: 280px;
	overflow-y: auto;
	padding: 4px;
	border: 1px solid var(--border);
	border-radius: 10px;
	background: var(--surface);
	box-shadow: var(--shadow);
	font: 13px var(--font);
	z-index: 40;
}
body.ui-v2 .invoice-items-card tfoot.article-add .ui-picker .filter-item { box-sizing: border-box; width: 100%; padding: 7px 10px; border: none; border-radius: 6px; cursor: pointer; }
body.ui-v2 .invoice-items-card tfoot.article-add .ui-picker .filter-item:hover { background: var(--surface-2); }
body.ui-v2 .invoice-items-card tfoot.article-add .ui-picker .filter-item.active { background: var(--primary-soft); color: var(--primary-700); }
body.ui-v2 .invoice-items-card tfoot.article-add td.row-actions { white-space: nowrap; }
body.ui-v2 .invoice-items-card tfoot.article-add td.row-actions a { margin-left: 2px; }

/* payments + notes + totals layout */
body.ui-v2 .invoice-layout {
	display: grid;
	grid-template-columns: minmax(0, 7fr) minmax(0, 4fr);
	gap: 20px;
	align-items: start;
	margin-bottom: 16px;
}
body.ui-v2 .invoice-main,
body.ui-v2 .invoice-side { display: flex; flex-direction: column; gap: 16px; min-width: 0; }
body.ui-v2 .invoice-main .card,
body.ui-v2 .invoice-side .card { margin: 0; }
body.ui-v2 .invoice-payments-card tfoot.payment-add { background: var(--surface-2); border-top: 1px solid var(--border); }
body.ui-v2 .invoice-payments-card tfoot.payment-add.hidden { display: none; }
body.ui-v2 .invoice-payments-card tfoot.payment-add td { padding: 10px 8px; border: none; vertical-align: middle; }
body.ui-v2 .invoice-payments-card tfoot.payment-add input[type=text],
body.ui-v2 .invoice-payments-card tfoot.payment-add select {
	box-sizing: border-box;
	height: 34px;
	margin: 0;
	padding: 0 10px;
	border: 1px solid var(--border-strong);
	border-radius: 8px;
	background: var(--surface);
	font: 13px var(--font);
	color: var(--text);
	outline: none;
}
body.ui-v2 .invoice-payments-card tfoot.payment-add input.pmt-date { width: 100px; text-align: center; background: var(--surface-2); color: var(--text-2); }
body.ui-v2 .invoice-payments-card tfoot.payment-add input.pmt-sum { width: 110px; text-align: right; font-weight: 600; }
body.ui-v2 .invoice-payments-card tfoot.payment-add input:focus,
body.ui-v2 .invoice-payments-card tfoot.payment-add select:focus { border-color: var(--primary); box-shadow: 0 0 0 3px var(--primary-ring); }
body.ui-v2 .invoice-payments-card .ajax-status { padding: 0 20px; }
body.ui-v2 .invoice-payments-card .ajax-status:empty { display: none; }

body.ui-v2 .invoice-notes-card .notes-text { display: block; min-height: 20px; font-size: 13.5px; line-height: 1.5; color: var(--text); white-space: pre-wrap; }
body.ui-v2 .invoice-notes-card .notes-text:empty::before { content: "Nuk ka sh\00EBnime."; color: var(--text-3); font-style: italic; }
body.ui-v2 .invoice-notes-card #divModNotes.hidden { display: none; }
body.ui-v2 .invoice-notes-card textarea {
	box-sizing: border-box;
	display: block;
	width: 100%;
	min-height: 80px;
	padding: 8px 11px;
	border: 1px solid var(--border-strong);
	border-radius: 8px;
	font: 13.5px/1.45 var(--font);
	resize: vertical;
	outline: none;
}
body.ui-v2 .invoice-notes-card textarea:focus { border-color: var(--primary); box-shadow: 0 0 0 3px var(--primary-ring); }
body.ui-v2 .invoice-notes-card .notes-actions { display: flex; gap: 8px; margin-top: 10px; }
body.ui-v2 .invoice-notes-card .card-actions .btn.hidden { display: none !important; }

body.ui-v2 .invoice-totals-card #invTotals { width: 100%; border-collapse: collapse; }
body.ui-v2 .invoice-totals-card #invTotals td { padding: 8px 6px; border: none; font: 13.5px var(--font); font-variant-numeric: tabular-nums; vertical-align: middle; }
body.ui-v2 .invoice-totals-card #invTotals td.label { color: var(--text-3); font-size: 12.5px; font-style: normal; text-align: left; }
body.ui-v2 .invoice-totals-card #invTotals td:nth-child(2) { font-weight: 500; }
body.ui-v2 .invoice-totals-card #invTotals td:nth-child(3) { width: 34px; padding: 0 0 0 4px; }
body.ui-v2 .invoice-totals-card #invTotals tr.subtotal td { border-top: 1px solid var(--border); }
body.ui-v2 .invoice-totals-card #invTotals tr.topay td { border-top: 1px solid var(--border); font-size: 15px; font-weight: 600; }
body.ui-v2 .invoice-totals-card #invTotals tr.topay td.label { font-size: 12.5px; font-weight: 600; color: var(--text-2); }
body.ui-v2 .invoice-totals-card #invTotals td.warning { color: var(--danger); }
body.ui-v2 .invoice-totals-card #invTotals input[type=text] {
	box-sizing: border-box;
	width: 90px;
	height: 30px;
	padding: 0 8px;
	border: 1px solid var(--primary);
	border-radius: 7px;
	font: 13px var(--font);
	text-align: right;
	outline: none;
	box-shadow: 0 0 0 3px var(--primary-ring);
}
body.ui-v2 .invoice-totals-card a.small-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 26px;
	height: 26px;
	margin: 0;
	padding: 0;
	border-radius: 7px;
	float: none;
	position: static;
	background-color: transparent;
	background-repeat: no-repeat;
	background-position: center;
	background-size: 14px;
	opacity: 1;
}
body.ui-v2 .invoice-totals-card a.small-btn.edit { background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%238A97A8' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z'/><path d='m15 5 4 4'/></svg>"); }
body.ui-v2 .invoice-totals-card a.small-btn.edit:hover { background-color: var(--primary-soft); }
body.ui-v2 .invoice-totals-card a.small-btn.save { border: 1px solid var(--primary); background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230F8B8D' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'><polyline points='20 6 9 17 4 12'/></svg>"); background-size: 15px; }
body.ui-v2 .invoice-totals-card a.small-btn.hidden { display: none !important; }

/* history */
body.ui-v2 .invoice-history .data-table td.num.danger { color: var(--danger); font-weight: 600; }
body.ui-v2 .invoice-history .data-table td a.mono { font-family: var(--mono); font-size: 12.5px; }
body.ui-v2 .invoice-history .data-table td .muted { color: var(--text-3); font-size: 12px; margin-left: 6px; }
body.ui-v2 .invoice-user-payments .data-table tfoot td.num.total { font-weight: 600; color: var(--text); }

/* settings */
body.ui-v2 .invoice-settings .card-body + .card-body { border-top: 1px solid var(--border); }
body.ui-v2 .invoice-settings .field .hint { margin-top: 5px; }

@media (max-width: 1100px) {
	body.ui-v2 .invoice-layout { grid-template-columns: 1fr; }
}

/* ------------------------------------------------------------------ invoice reports (InvoiceReports.class.php) */
body.ui-v2 .invoice-report .form-filter { display: block; float: none; width: 100%; box-sizing: border-box; overflow: visible; margin: 0; padding: 0; border: none; background: none; }
body.ui-v2 .invoice-report .form-filter .ui-filter { display: block; width: auto; }
body.ui-v2 .invoice-report .form-filter .field { float: none; }
body.ui-v2 .invoice-report .form-filter label { float: none; width: auto; height: auto; padding: 0; }
body.ui-v2 .invoice-report .form-filter .choice-group label.check { width: auto; height: 36px; padding: 0 12px 0 10px; }
body.ui-v2 .invoice-report .form-filter .choice-group { gap: 6px; }
body.ui-v2 .invoice-report .form-filter input[type=date] { width: auto; flex: 1 1 auto; min-width: 0; }
body.ui-v2 .invoice-report .form-filter select {
	box-sizing: border-box;
	width: 100%;
	height: 36px;
	padding: 0 32px 0 12px;
	border: 1px solid var(--border-strong);
	border-radius: 8px;
	background: var(--surface);
	font: 13px var(--font);
	color: var(--text);
}
body.ui-v2 .invoice-report .form-filter .filter-actions .btn.search { width: auto; height: 36px; padding: 0 16px; background-image: none; opacity: 1; border-radius: 8px; }
body.ui-v2 .invoice-report .form-filter .ui-picker .filter-list { width: auto; }
body.ui-v2 .invoice-report .data-table thead input.group-by { width: 14px; height: 14px; margin: 0 6px 0 0; vertical-align: -2px; accent-color: var(--primary); cursor: pointer; }
body.ui-v2 .invoice-report .data-table thead input.group-by[disabled] { opacity: .45; cursor: default; }
body.ui-v2 .invoice-report .data-table thead td { white-space: nowrap; }
body.ui-v2 .invoice-report .data-table tfoot td { font-weight: 600; }
body.ui-v2 .invoice-report .data-table tfoot td.note { font-weight: 400; }
body.ui-v2 .invoice-report .data-table td.status { width: 28px; }
body.ui-v2 .invoice-report input.btn { width: auto; margin: 0 6px 8px 0; background-image: none; font-family: var(--font); cursor: pointer; }
body.ui-v2 .invoice-report input.btn[disabled] { opacity: .5; cursor: not-allowed; }
body.ui-v2 .invoice-report .card.table-card { margin-bottom: 12px; }

/* ------------------------------------------------------------------ popup windows (open.php) */
body.ui-v2.popup { margin: 0; padding: 20px; background: var(--bg); min-height: 100vh; box-sizing: border-box; }
body.ui-v2.popup .page { max-width: none; }
body.ui-v2.popup .page > .error,
body.ui-v2.popup .page > .info { margin-bottom: 16px; }

/* ------------------------------------------------------------------ calendar module (Calendar.class.php) */
body.ui-v2 .btn.icon-only { width: 36px; padding: 0; }
body.ui-v2 .btn.icon-only .ico { margin: 0; }
body.ui-v2 .calendar-page .date-nav { display: inline-flex; gap: 4px; }
body.ui-v2 .calendar-page .date-nav .btn { border-radius: 9px; }

/* month strip (table picker) */
body.ui-v2 .calendar-page .date-strip { margin-bottom: 16px; }
body.ui-v2 .calendar-page .date-strip .table-scroll { padding: 8px 10px; }
body.ui-v2 .calendar-page table.date-picker { width: 100%; border: none; border-spacing: 3px; text-align: center; }
body.ui-v2 .calendar-page .date-picker td { height: 30px; border-radius: 8px; font: 12.5px var(--font); color: var(--text-2); cursor: default; }
body.ui-v2 .calendar-page .date-picker td.day { min-width: 28px; }
body.ui-v2 .calendar-page .date-picker td.weekend { background: var(--surface-2); color: var(--text-3); }
body.ui-v2 .calendar-page .date-picker td.td-picker { cursor: pointer; color: var(--text); font-weight: 500; }
body.ui-v2 .calendar-page .date-picker td.td-picker:hover { background: var(--primary-soft); color: var(--primary-700); }
body.ui-v2 .calendar-page .date-picker td.cur-date,
body.ui-v2 .calendar-page .date-picker td.cur-date:hover { background: var(--primary); color: #fff; font-weight: 600; }
body.ui-v2 .calendar-page .date-picker td.month-name { white-space: nowrap; padding: 0 8px; }
body.ui-v2 .calendar-page .date-picker td.month-name a {
	display: inline-flex;
	align-items: center;
	height: 28px;
	padding: 0 10px;
	border: 1px solid var(--border);
	border-radius: 8px;
	background: var(--surface);
	color: var(--text-2);
	font-size: 12px;
	font-weight: 500;
	text-decoration: none;
}
body.ui-v2 .calendar-page .date-picker td.month-name a:hover { border-color: var(--primary); color: var(--primary-700); }

/* floating month picker */
body.ui-v2 .pickup-calendar { border-radius: var(--radius); box-shadow: var(--shadow); border: 1px solid var(--border); background: var(--surface); }

/* day grid */
body.ui-v2 .calendar-card { padding: 0; overflow: hidden; }
body.ui-v2 .calendar-card .bigCal { width: 100%; margin: 0; border: none; border-radius: 0; background: var(--surface); }
body.ui-v2 .calendar-card .bigCal .container { width: calc(100% - 56px); }
body.ui-v2 .calendar-card .bigCal .times { width: 56px; padding-top: 44px; background: var(--surface-2); border-right: 1px solid var(--border); }
body.ui-v2 .calendar-card .bigCal .times a {
	border-top: 1px solid var(--border);
	font: 500 11.5px var(--font);
	color: var(--text-3);
	text-decoration: none;
	padding-top: 3px;
}
body.ui-v2 .calendar-card .bigCal .times a:hover { color: var(--primary-700); background: var(--primary-soft); }
body.ui-v2 .calendar-card .schedule { border-left: 1px solid var(--border); background: var(--surface); }
body.ui-v2 .calendar-card .schedule:first-child { border-left: none; }
body.ui-v2 .calendar-card .schedule .header {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	height: 44px;
	padding: 0 32px;
	box-sizing: border-box;
	background: var(--surface-2);
	border-bottom: 1px solid var(--border);
	font: 600 13px var(--font);
	font-style: normal;
	color: var(--text);
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}
body.ui-v2 .calendar-card .schedule.collapsed .header { font-weight: 500; color: var(--text-3); padding: 0 6px; cursor: pointer; }
body.ui-v2 .calendar-card .schedule.collapsed .header:hover { color: var(--primary-700); background: var(--primary-soft); }
body.ui-v2 .calendar-card .schedule.collapsed .calendar_day { background: repeating-linear-gradient(180deg, transparent 0 19px, var(--border) 19px 20px); background-color: var(--surface-2); opacity: .7; }
body.ui-v2 .calendar-card .schedule .header .print {
	top: 8px;
	right: 8px;
	width: 28px;
	height: 28px;
	border-radius: 7px;
	background-image: none;
	opacity: 1;
	color: var(--text-3);
	display: inline-flex;
	align-items: center;
	justify-content: center;
}
body.ui-v2 .calendar-card .schedule .header .print .ico { width: 15px; height: 15px; }
body.ui-v2 .calendar-card .schedule .header .print:hover { background: var(--surface); color: var(--primary-700); box-shadow: var(--shadow-sm); }
body.ui-v2 .calendar-card .schedule .calendar_day { background: repeating-linear-gradient(180deg, transparent 0 19px, var(--border) 19px 20px); }
body.ui-v2 .calendar-card .event {
	width: 100%;
	box-sizing: border-box;
	padding-left: 4px;
	font: 12.5px var(--font);
}
body.ui-v2 .calendar-card .event_timed {
	border: none;
	border-radius: 6px;
	box-shadow: inset 4px 0 0 rgba(0, 0, 0, .18), 0 1px 2px rgba(16, 24, 40, .12);
	cursor: pointer;
}
body.ui-v2 .calendar-card .event_timed:hover { filter: brightness(.96); }
/* text vertically centred in the block; "safe" keeps the first line visible when a short block holds wrapped text */
body.ui-v2 .calendar-card .event_timed { display: flex; align-items: center; align-items: safe center; overflow: hidden; }
body.ui-v2 .calendar-card .event_timed > .appointment { flex: 1 1 auto; min-width: 0; padding-top: 0; }
body.ui-v2 .calendar-card .event_all_day { border-bottom: 1px dashed rgba(0, 0, 0, .15); }
body.ui-v2 .calendar-card .event .appointment { padding: 2px 6px 0 6px; color: #1f2937; line-height: 17px; }
body.ui-v2 .calendar-card .event .appointment .evt-time { font-weight: 700; margin-right: 6px; font-variant-numeric: tabular-nums; }
body.ui-v2 .calendar-card .event .appointment .evt-title { font-weight: 600; }
body.ui-v2 .calendar-card .event .appointment .evt-patient { margin-left: 4px; }
body.ui-v2 .calendar-card .event .appointment .evt-meta { margin-left: 6px; opacity: .75; font-size: 11.5px; }
body.ui-v2 .calendar-card .event .appointment .status {
	float: right;
	margin: 1px 0 0 6px;
	padding: 0 6px;
	border-radius: 999px;
	background: rgba(255, 255, 255, .7);
	font-size: 10.5px;
	font-weight: 600;
	letter-spacing: .03em;
	text-transform: uppercase;
	color: #1f2937;
}
body.ui-v2 .calendar-card .event .appointment .status.cl,
body.ui-v2 .calendar-card .event .appointment .status.no { color: var(--danger); }
body.ui-v2 .calendar-card .event .appointment .status.dn { color: var(--success); }

/* config pages: form + list */
body.ui-v2 .config-layout { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: 20px; align-items: start; }
body.ui-v2 .config-layout .card { margin: 0; }
body.ui-v2 .calendar-config .form-entry { float: none; width: auto; margin: 0; padding: 0; border: none; background: none; }
body.ui-v2 .calendar-config .form-entry .field > label { float: none; width: auto; }
body.ui-v2 .calendar-config .form-entry select { width: 100%; }
body.ui-v2 .calendar-config .color-row input[type=text] { flex: 1 1 auto; font-family: var(--mono); }
body.ui-v2 .calendar-config .color-row .color-swatch { width: 34px; height: 34px; flex: 0 0 34px; border-radius: 8px; border: 1px solid var(--border); }
body.ui-v2 .calendar-config .color-row .btn { flex: 0 0 auto; }
body.ui-v2 .calendar-config .input-row .choice-group { flex: 0 0 auto; }
body.ui-v2 .calendar-config .input-row select { flex: 1 1 auto; width: auto; }
body.ui-v2 .calendar-config .data-table tr.current td { background: var(--primary-soft); }
body.ui-v2 .calendar-config .color-dot { display: inline-block; width: 14px; height: 14px; margin-right: 8px; border-radius: 4px; border: 1px solid rgba(0, 0, 0, .1); vertical-align: -2px; }
body.ui-v2 .calendar-config .form-entry input.one-four { width: 100% !important; text-align: center; }
body.ui-v2 .calendar-settings .toggle-list .switch { width: 40px; }

/* event form + search popup */
body.ui-v2 .calendar-event .form-entry,
body.ui-v2 .calendar-search .form-filter { float: none; width: auto; margin: 0; padding: 0; border: none; background: none; }
body.ui-v2 .calendar-event .form-entry .field > label,
body.ui-v2 .calendar-search .form-filter label { float: none; width: auto; height: auto; padding: 0; }
body.ui-v2 .calendar-event .form-entry select,
body.ui-v2 .calendar-search .form-filter select {
	box-sizing: border-box;
	width: 100%;
	height: 36px;
	padding: 0 32px 0 12px;
	border: 1px solid var(--border-strong);
	border-radius: 8px;
	background: var(--surface);
	font: 13px var(--font);
	color: var(--text);
}
body.ui-v2 .calendar-event .form-entry input.one-four { width: 100% !important; text-align: center; }
body.ui-v2 .calendar-event .form-entry .input-affix input.one-four { text-align: right; }
body.ui-v2 .calendar-event .form-entry input.locked,
body.ui-v2 .calendar-event .form-entry select.locked { background: var(--surface-2) !important; color: var(--text-3); pointer-events: none; }
body.ui-v2 .calendar-event .card-foot input.btn { width: auto; margin: 0; background-image: none; font-family: var(--font); cursor: pointer; }
body.ui-v2 .calendar-event .card-foot input.btn[disabled] { opacity: .5; cursor: not-allowed; }
body.ui-v2 .calendar-event .card-foot .btn-danger { margin-left: auto; }
/* event form: one card, two titled sections */
body.ui-v2 .calendar-event .event-card { margin: 0; }
body.ui-v2 .calendar-event .event-card > .card-body { padding: 16px 18px 18px; }
body.ui-v2 .calendar-event .event-section-title { display: flex; align-items: center; gap: 8px; margin: 0 0 12px; font: 600 13px var(--font); color: var(--text); }
body.ui-v2 .calendar-event .event-section-title .ico { width: 16px; height: 16px; color: var(--primary); }
body.ui-v2 .calendar-event .form-grid + .event-section-title { margin-top: 18px; padding-top: 16px; border-top: 1px solid var(--border); }
body.ui-v2 .calendar-event .form-grid { gap: 10px 14px; }
body.ui-v2 .calendar-event .field > label { margin-bottom: 4px; }

/* event overlay on the calendar page (form runs in an iframe) */
body.ui-v2 .event-modal { position: fixed; inset: 0; z-index: 10000; display: none; align-items: center; justify-content: center; padding: 24px; background: rgba(16, 24, 40, .45); }
body.ui-v2 .event-modal.open { display: flex; }
body.ui-v2 .event-modal-panel { position: relative; width: min(760px, 100%); height: min(600px, calc(100vh - 48px)); background: var(--bg); border-radius: 14px; box-shadow: 0 24px 60px rgba(16, 24, 40, .3); overflow: hidden; }
body.ui-v2 .event-modal-panel.wide { width: min(1000px, 100%); }
body.ui-v2 .event-modal-panel iframe { display: block; width: 100%; height: 100%; border: 0; background: var(--bg); }
body.ui-v2 .event-modal-close { position: absolute; top: 16px; right: 16px; z-index: 1; display: inline-flex; align-items: center; justify-content: center; width: 32px; height: 32px; padding: 0; border: 1px solid var(--border); border-radius: 8px; background: var(--surface); color: var(--text-2); cursor: pointer; }
body.ui-v2 .event-modal-close:hover { background: var(--surface-2); color: var(--text); }
body.ui-v2 .event-modal-close .ico { width: 16px; height: 16px; }
/* the form page itself when shown inside the overlay */
html.in-modal body.ui-v2.popup { min-height: 0; padding: 18px 20px 20px; }
html.in-modal body.ui-v2.popup .calendar-event .page-header,
html.in-modal body.ui-v2.popup .calendar-search .page-header { margin-bottom: 12px; padding-right: 48px; }
html.in-modal body.ui-v2.popup .calendar-event .card-foot { position: sticky; bottom: 0; z-index: 2; }
body.ui-v2 .calendar-search .form-filter .filter-actions .btn.search { width: auto; height: 36px; padding: 0 16px; background-image: none; opacity: 1; border-radius: 8px; }
body.ui-v2 .calendar-search .data-table tr.oneresult { cursor: pointer; }
body.ui-v2 .calendar-search .data-table tr.oneresult.highlight td { background: var(--primary-soft); }

@media (max-width: 1100px) {
	body.ui-v2 .config-layout { grid-template-columns: 1fr; }
}
body.ui-v2 .field > label.check-inline { display: inline-flex; width: auto; }
body.ui-v2 .calendar-card .schedule.collapsed .header .print { display: none; }
body.ui-v2 .pickup-calendar { top: 160px; right: 24px; }
/* popups are narrow windows: keep the multi-column grids */
body.ui-v2.popup .form-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
body.ui-v2.popup .form-grid.cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
body.ui-v2.popup .form-grid.cols-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
body.ui-v2.popup .form-grid .span-2 { grid-column: span 2; }
body.ui-v2.popup .form-grid.cols-3 .span-full,
body.ui-v2.popup .form-grid.cols-4 .span-full { grid-column: 1 / -1; }

/* ------------------------------------------------------------------ analysis lists (Analiza.class.php) */
body.ui-v2 .analiza-list .form-filter { display: block; float: none; width: 100%; box-sizing: border-box; overflow: visible; margin: 0; padding: 0; border: none; background: none; }
body.ui-v2 .analiza-list .form-filter .ui-filter { display: block; width: auto; }
body.ui-v2 .analiza-list .form-filter .field { float: none; }
body.ui-v2 .analiza-list .form-filter label { float: none; width: auto; height: auto; padding: 0; }
body.ui-v2 .analiza-list .form-filter .choice-group label.check { width: auto; height: 36px; padding: 0 12px 0 10px; }
body.ui-v2 .analiza-list .form-filter .choice-group { gap: 6px; }
body.ui-v2 .analiza-list .form-filter .choice-group label.level-info:has(input:checked) { border-color: #2563EB; color: #1D4ED8; background: #EFF6FF; }
body.ui-v2 .analiza-list .form-filter .choice-group label.level-warn:has(input:checked) { border-color: var(--warning); color: var(--warning); background: var(--warning-soft); }
body.ui-v2 .analiza-list .form-filter .choice-group label.level-crit:has(input:checked) { border-color: var(--danger); color: var(--danger); background: var(--danger-soft); }
body.ui-v2 .analiza-list .form-filter input[type=date] { width: auto; flex: 1 1 auto; min-width: 0; }
body.ui-v2 .analiza-list .form-filter input.num-input { width: auto; flex: 1 1 60px; text-align: center; }
body.ui-v2 .analiza-list .form-filter select {
	box-sizing: border-box;
	width: 100%;
	height: 36px;
	padding: 0 32px 0 12px;
	border: 1px solid var(--border-strong);
	border-radius: 8px;
	background: var(--surface);
	font: 13px var(--font);
	color: var(--text);
}
body.ui-v2 .analiza-list .form-filter .filter-actions .btn { width: auto; height: 36px; padding: 0 14px; background-image: none; opacity: 1; border-radius: 8px; }
body.ui-v2 .analiza-list .form-filter .ui-picker .filter-list { width: auto; }
/* legacy status colors kept on purpose (users know them): plain names orange (old global link color), spans by status */
body.ui-v2 .analiza-list .data-table tbody td a { color: #e93a00; }
/* compact rows on the lab work lists (todo, finished, verify...) so more records fit */
body.ui-v2 .analiza-list .data-table tbody td,
body.ui-v2 .biolog-list .data-table tbody td { padding: 4px 10px; }
body.ui-v2 .analiza-list .data-table td a span { color: #229A05; }
body.ui-v2 .analiza-list .data-table td a .finished { color: #229A05; }
body.ui-v2 .analiza-list .data-table td a .sent { color: #115580; }
body.ui-v2 .analiza-list .data-table td a .sms { color: #115C73; }
body.ui-v2 .analiza-list .data-table td a .conf { color: #000; }
body.ui-v2 .analiza-list .data-table td a .flag { color: #fff; background-color: #e93a00; padding-right: 3px; }
body.ui-v2 .analiza-list .data-table.finished td a span { color: #115C73; }
body.ui-v2 .analiza-list .data-table td.ellipsis { max-width: 180px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
body.ui-v2 .analiza-list .data-table tfoot td.note { font-weight: 400; }
body.ui-v2 .analiza-list .barcode-card { padding-bottom: 6px; }
body.ui-v2 .analiza-list .orders-wrapper { margin-top: 4px; }

/* ------------------------------------------------------------------ analysis results page (AnalizaFill.class.php) */
body.ui-v2 .analiza-page .tab-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin: 0 0 16px; }
body.ui-v2 .analiza-page .tab-row .ui-tabs { margin: 0; flex: 1 1 auto; gap: 6px; padding: 0; border: none; background: none; box-shadow: none; }
/* group tabs: read as buttons even when not selected */
body.ui-v2 .analiza-page .tab-row .ui-tabs a { background: var(--surface); border: 1px solid var(--border); box-shadow: var(--shadow-xs); }
body.ui-v2 .analiza-page .tab-row .ui-tabs a:hover { background: var(--surface-2); border-color: var(--border-strong); }
body.ui-v2 .analiza-page .tab-row .ui-tabs a.active { background: var(--primary-soft); border-color: var(--primary); }
body.ui-v2 .analiza-page .page-actions .btn.uplink,
body.ui-v2 .analiza-page .tab-actions .btn.uplink { float: none; margin: 0; background-image: none; color: var(--text-2); }
body.ui-v2 .analiza-page .page-actions .btn.uplink.active,
body.ui-v2 .analiza-page .tab-actions .btn.uplink.active { border-color: var(--primary); color: var(--primary-700); background: var(--primary-soft); }
body.ui-v2 .analiza-page .page-actions .btn.uplink img,
body.ui-v2 .analiza-page .tab-actions .btn.uplink img { height: 14px; margin-left: 4px; vertical-align: -2px; }
body.ui-v2 .analiza-page .page-actions .btn.uplink img.hidden,
body.ui-v2 .analiza-page .tab-actions .btn.uplink img.hidden { display: none; }
body.ui-v2 .analiza-page .page-actions .btn.uplink.busy,
body.ui-v2 .analiza-page .tab-actions .btn.uplink.busy { opacity: .6; cursor: progress; pointer-events: none; }
body.ui-v2 .analiza-page .ui-tabs a .tab-ico { width: 15px; height: 15px; margin-left: 6px; }
body.ui-v2 .analiza-page .ui-tabs a .tab-ico.confed { color: var(--success); }
body.ui-v2 .analiza-page .ui-tabs a .tab-ico.closed { color: var(--primary); }
body.ui-v2 .analiza-page .ui-tabs a .tab-ico.missing { color: var(--danger); }
body.ui-v2 .analiza-page .ax-results { float: none; width: auto; margin: 0; padding: 0; border: none; background: none; }
body.ui-v2 .analiza-page .ax-card .card-head h2 { display: inline-flex; align-items: center; gap: 8px; }

/* result table: legacy markup restyled */
body.ui-v2 .analiza-page table.ax-table { width: 100%; border-collapse: collapse; margin: 0; font: 13px var(--font); background: var(--surface); }
body.ui-v2 .analiza-page table.ax-table thead td {
	padding: 9px 10px;
	border: none !important;
	border-bottom: 1px solid var(--border) !important;
	background: var(--surface-2);
	font: 600 10.5px var(--font);
	font-style: normal;
	letter-spacing: .05em;
	text-transform: uppercase;
	color: var(--text-3);
	white-space: nowrap;
}
body.ui-v2 .analiza-page table.ax-table thead td.vlera { padding-right: 10px; }
body.ui-v2 .analiza-page table.ax-table tbody { background: none; }
body.ui-v2 .analiza-page table.ax-table tr { border: none !important; }
body.ui-v2 .analiza-page table.ax-table tbody td {
	padding: 2px 8px;
	box-sizing: border-box;
	height: 30px !important; /* table cells treat height as a minimum; beats the inline 15px on repeat rows */
	border: none !important;
	border-top: 1px solid var(--border) !important;
	font: 13px var(--font);
	color: var(--text);
	vertical-align: middle;
	background-color: transparent !important;
}
body.ui-v2 .analiza-page table.ax-table tbody tr.no-border td { border-top: none !important; }
body.ui-v2 .analiza-page table.ax-table tbody tr:hover td { background-color: #F6FAFA !important; }
body.ui-v2 .analiza-page table.ax-table.no-value,
body.ui-v2 .analiza-page table.ax-table tr.no-value { background-color: transparent; }
body.ui-v2 .analiza-page table.ax-table tr.no-value td { background-color: var(--warning-soft) !important; }
body.ui-v2 .analiza-page table.ax-table tr.no-value:hover td { background-color: #FBEFD9 !important; }
body.ui-v2 .analiza-page table.ax-table td.ax-name { font-weight: 600 !important; color: var(--text); }
body.ui-v2 .analiza-page table.ax-table td.axc-name { white-space: nowrap; }
body.ui-v2 .analiza-page table.ax-table tbody td.ax-device { white-space: nowrap; font-size: 11.5px; color: var(--text-2); }
body.ui-v2 .analiza-page table.ax-table td.ax-range { font-size: 11.5px; }
body.ui-v2 .analiza-page table.ax-table td.ax-rvalue { color: var(--text) !important; font-size: 13.5px !important; } /* overrides the inline #999 / 12px */
body.ui-v2 .analiza-page table.ax-table td.bold { font-weight: 600; color: var(--primary-700); padding-top: 12px; }
body.ui-v2 .analiza-page table.ax-table td.tdHide.hidden { display: none; }
body.ui-v2 .analiza-page table.ax-table input.aniValue {
	box-sizing: border-box;
	width: 116px;
	height: 26px;
	margin: 0;
	padding: 0 6px;
	border: 1px solid var(--border-strong);
	border-radius: 8px;
	background: var(--surface);
	font: 600 13.5px var(--font);
	text-align: center;
	color: var(--text);
	outline: none;
	float: none;
	transition: border-color .12s ease, box-shadow .12s ease;
}
body.ui-v2 .analiza-page table.ax-table input.aniValue:focus { border-color: var(--primary); box-shadow: 0 0 0 3px var(--primary-ring); }
body.ui-v2 .analiza-page table.ax-table input.aniValue[disabled] { background: var(--surface-2); color: var(--text); -webkit-text-fill-color: var(--text); opacity: 1; border-color: var(--border); }
body.ui-v2 .analiza-page table.ax-table input.aniValue[style*="background-color"] { border-color: var(--danger); }
body.ui-v2 .analiza-page table.ax-table select.changeMachine { height: 30px; padding: 0 8px; border: 1px solid var(--border-strong); border-radius: 7px; font: 12.5px var(--font); }
body.ui-v2 .analiza-page table.ax-table select.changeMachine.hidden { display: none; }
body.ui-v2 .analiza-page table.ax-table td.mainValue { white-space: nowrap; }
body.ui-v2 .analiza-page table.ax-table td.mainValue a { float: none; display: inline-flex; vertical-align: middle; margin: 0 1px; }
body.ui-v2 .analiza-page table.ax-table .ax-notes {
	display: inline-block;
	padding: 6px 10px;
	border-radius: 8px;
	border: 1px solid rgba(217, 45, 32, .25);
	background: var(--danger-soft);
	font-size: 12.5px;
	line-height: 1.5;
}
body.ui-v2 .analiza-page table.ax-table .ax-notes div { color: inherit !important; }
body.ui-v2 .analiza-page table.ax-table .cbc-images { display: flex; gap: 6px; flex-wrap: wrap; padding: 6px 0; }
body.ui-v2 .analiza-page table.ax-table .cbc-images img { width: 24%; border-radius: 8px; border: 1px solid var(--border); padding: 0; }

/* icon buttons inside the result table (inline svg replaces the png sprites) */
body.ui-v2 .analiza-page .item-table a.save-item-v2,
body.ui-v2 .analiza-page .item-table a.end-item,
body.ui-v2 .analiza-page .item-table a.confirm-item,
body.ui-v2 .analiza-page .item-table a.valid-item,
body.ui-v2 .analiza-page .item-table a.qc-item,
body.ui-v2 .analiza-page .item-table a.error-item,
body.ui-v2 .analiza-page .item-table a.choose-item,
body.ui-v2 .analiza-page .item-table a.edit-item.modMachine,
body.ui-v2 .analiza-page .item-table a.small-btn.show-history {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 26px;
	height: 26px;
	margin: 0;
	padding: 0;
	border-radius: 7px;
	float: none;
	position: static;
	vertical-align: middle;
	background-color: transparent;
	background-repeat: no-repeat;
	background-position: center;
	background-size: 16px;
	opacity: 1;
	color: var(--text-3);
}
body.ui-v2 .analiza-page .item-table a.save-item-v2 { background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%238A97A8' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z'/><polyline points='17 21 17 13 7 13 7 21'/><polyline points='7 3 7 8 15 8'/></svg>"); }
body.ui-v2 .analiza-page .item-table a.save-item-v2.done { background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2312805C' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z'/><polyline points='17 21 17 13 7 13 7 21'/><polyline points='7 3 7 8 15 8'/></svg>"); }
body.ui-v2 .analiza-page .item-table a.end-item { background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%238A97A8' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><rect x='3' y='11' width='18' height='11' rx='2'/><path d='M7 11V7a5 5 0 0 1 10 0v4'/></svg>"); }
body.ui-v2 .analiza-page .item-table a.end-item.done { background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2312805C' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><rect x='3' y='11' width='18' height='11' rx='2'/><path d='M7 11V7a5 5 0 0 1 10 0v4'/><polyline points='9 16 11 18 15 14'/></svg>"); }
body.ui-v2 .analiza-page .item-table a.confirm-item { background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%238A97A8' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><polyline points='18 6 7 17 2 12'/><polyline points='22 10 13 19'/></svg>"); }
body.ui-v2 .analiza-page .item-table a.confirm-item.done { background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%232563EB' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'><polyline points='18 6 7 17 2 12'/><polyline points='22 10 13 19'/></svg>"); }
body.ui-v2 .analiza-page .item-table a.save-item-v2,
body.ui-v2 .analiza-page .item-table a.end-item,
body.ui-v2 .analiza-page .item-table a.confirm-item { width: 30px; height: 30px; background-size: 19px; }
body.ui-v2 .analiza-page .item-table a.valid-item.ok { background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2312805C' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z'/><polyline points='9 12 11 14 15 10'/></svg>"); }
body.ui-v2 .analiza-page .item-table a.valid-item.not-ok { background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23D92D20' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z'/><line x1='9.5' y1='9.5' x2='14.5' y2='14.5'/><line x1='14.5' y1='9.5' x2='9.5' y2='14.5'/></svg>"); }
body.ui-v2 .analiza-page .item-table a.valid-item.noted { border: 2px solid #2563EB; border-radius: 8px; }
body.ui-v2 .analiza-page .item-table a.qc-item.ok { background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2312805C' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><circle cx='12' cy='12' r='9'/><polyline points='8 12 11 15 16 9'/></svg>"); }
body.ui-v2 .analiza-page .item-table a.qc-item.error { background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23D92D20' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><circle cx='12' cy='12' r='9'/><line x1='12' y1='8' x2='12' y2='12'/><line x1='12' y1='16' x2='12.01' y2='16'/></svg>"); }
body.ui-v2 .analiza-page .item-table a.error-item,
body.ui-v2 .analiza-page .item-table a.error-item.yellow { background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23B54708' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M10.29 3.86 1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z'/><line x1='12' y1='9' x2='12' y2='13'/><line x1='12' y1='17' x2='12.01' y2='17'/></svg>"); }
body.ui-v2 .analiza-page .item-table a.error-item.blue { background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%232563EB' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><circle cx='12' cy='12' r='9'/><line x1='12' y1='16' x2='12' y2='12'/><line x1='12' y1='8' x2='12.01' y2='8'/></svg>"); }
body.ui-v2 .analiza-page .item-table a.error-item.red { background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23D92D20' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'><path d='M10.29 3.86 1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z'/><line x1='12' y1='9' x2='12' y2='13'/><line x1='12' y1='17' x2='12.01' y2='17'/></svg>"); }
body.ui-v2 .analiza-page .item-table a.choose-item { background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%238A97A8' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><polygon points='12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2'/></svg>"); }
body.ui-v2 .analiza-page .item-table a.edit-item.modMachine { background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%238A97A8' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z'/><path d='m15 5 4 4'/></svg>"); background-size: 14px; }
body.ui-v2 .analiza-page .item-table a.edit-item.modMachine.hidden { display: none; }
body.ui-v2 .analiza-page .item-table a.small-btn.show-history { background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%238A97A8' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><circle cx='12' cy='12' r='9'/><polyline points='12 7 12 12 15 14'/></svg>"); }
body.ui-v2 .analiza-page .item-table a.small-btn.show-history.black { background-color: var(--primary-soft); }
body.ui-v2 .analiza-page .item-table a.save-item-v2:hover,
body.ui-v2 .analiza-page .item-table a.end-item:hover,
body.ui-v2 .analiza-page .item-table a.confirm-item:hover,
body.ui-v2 .analiza-page .item-table a.valid-item:hover,
body.ui-v2 .analiza-page .item-table a.qc-item:hover,
body.ui-v2 .analiza-page .item-table a.error-item:hover,
body.ui-v2 .analiza-page .item-table a.choose-item:hover,
body.ui-v2 .analiza-page .item-table a.edit-item.modMachine:hover,
body.ui-v2 .analiza-page .item-table a.small-btn.show-history:hover { background-color: var(--surface-2); opacity: 1; }
body.ui-v2 .analiza-page .history-list {
	top: 30px;
	left: auto;
	right: 0;
	width: 260px;
	margin: 0;
	padding: 6px;
	border: 1px solid var(--border);
	border-radius: 10px;
	background: var(--surface);
	box-shadow: var(--shadow);
	font-size: 12.5px;
	z-index: 60;
}
body.ui-v2 .analiza-page .history-list .item { padding: 5px 8px; border-radius: 6px; }
body.ui-v2 .analiza-page .history-list .item:hover { background: var(--surface-2); }
body.ui-v2 .analiza-page .history-list.hidden { display: none; }
/* history cell: last value + clock button on one centred line */
body.ui-v2 .analiza-page .ax-hist { display: flex; align-items: center; justify-content: center; gap: 8px; }
body.ui-v2 .analiza-page .ax-hist-btn { position: relative; display: flex; align-items: center; }
body.ui-v2 .analiza-page .ax-hist-btn a.small-btn { float: none; margin: 0; }

/* extra data card */
body.ui-v2 .analiza-page .ax-extra-card textarea.has-comment { border-color: var(--warning); background: var(--warning-soft); }
body.ui-v2 .analiza-page .ax-extra-card fieldset.collapsible {
	margin: 16px 0 0;
	padding: 0;
	border: 1px solid var(--border);
	border-radius: 10px;
	background: var(--surface);
	min-width: 0;
}
body.ui-v2 .analiza-page .ax-extra-card fieldset.collapsible legend { float: left; width: 100%; margin: 0; padding: 0; }
body.ui-v2 .analiza-page .ax-extra-card fieldset.collapsible legend a {
	display: flex;
	align-items: center;
	gap: 8px;
	padding: 10px 14px;
	color: var(--text);
	font-weight: 600;
	font-size: 13px;
	text-decoration: none;
	border-radius: 10px;
}
body.ui-v2 .analiza-page .ax-extra-card fieldset.collapsible legend a:hover { background: var(--surface-2); }
body.ui-v2 .analiza-page .ax-extra-card fieldset.collapsible legend a .chev { width: 16px; height: 16px; color: var(--text-3); transition: transform .15s ease; }
body.ui-v2 .analiza-page .ax-extra-card fieldset.collapsible.collapsed legend a .chev { transform: rotate(-90deg); }
body.ui-v2 .analiza-page .ax-extra-card fieldset.collapsible .collapsible-body { clear: both; padding: 4px 14px 14px; border-top: 1px solid var(--border); }
body.ui-v2 .analiza-page .ax-extra-card fieldset.collapsible.collapsed .collapsible-body { display: none; }
body.ui-v2 .analiza-page .ax-actions { flex-wrap: wrap; }
body.ui-v2 .analiza-page .ax-actions input.btn { width: auto; margin: 0; background-image: none; font-family: var(--font); cursor: pointer; }
body.ui-v2 .analiza-page .ax-actions input.btn.hidden { display: none !important; }
body.ui-v2 .analiza-page .ax-actions input.btn[disabled] { opacity: .55; cursor: not-allowed; }
body.ui-v2 .analiza-page .ax-actions .valid-chip { height: 28px; }
body.ui-v2 .analiza-page .mail-working, body.ui-v2 .analiza-page .mail-success, body.ui-v2 .analiza-page .mail-error { margin: 8px 0; }
/* barcode / order tables keep their legacy class but get the data-table head */
body.ui-v2 .analiza-list .barcode-card table.ax-barcode { width: 100%; border-collapse: collapse; margin: 0; font: 13px var(--font); }
body.ui-v2 .analiza-list .barcode-card table.ax-barcode thead td {
	padding: 10px 12px;
	border: none !important;
	border-bottom: 1px solid var(--border) !important;
	background: var(--surface-2);
	font: 600 11.5px var(--font);
	letter-spacing: .05em;
	text-transform: uppercase;
	color: var(--text-3);
	white-space: nowrap;
}
body.ui-v2 .analiza-list .barcode-card table.ax-barcode tbody td { padding: 8px 12px; font: 13px var(--font); vertical-align: middle; }
/* Pajisja also holds the visit barcode ("01667259 - xx"): keep it on one line, give Instrumenti less room */
body.ui-v2 .analiza-list .barcode-card table.ax-barcode thead td:nth-child(4) { width: 150px; }
body.ui-v2 .analiza-list .barcode-card table.ax-barcode thead td:nth-child(8) { width: 120px; }
body.ui-v2 .analiza-list .barcode-card table.ax-barcode [id^="divSampleBcode"] { white-space: nowrap; }

/* ------------------------------------------------------------------ microbiology lists (Biologji.class.php) */
body.ui-v2 .biolog-list .form-filter { display: block; float: none; width: 100%; box-sizing: border-box; overflow: visible; margin: 0; padding: 0; border: none; background: none; }
body.ui-v2 .biolog-list .form-filter .ui-filter { display: block; width: auto; }
body.ui-v2 .biolog-list .form-filter .field { float: none; }
body.ui-v2 .biolog-list .form-filter label { float: none; width: auto; height: auto; padding: 0; }
body.ui-v2 .biolog-list .form-filter input[type=date] { width: auto; flex: 1 1 auto; min-width: 0; }
body.ui-v2 .biolog-list .form-filter select {
	box-sizing: border-box;
	width: 100%;
	height: 36px;
	padding: 0 32px 0 12px;
	border: 1px solid var(--border-strong);
	border-radius: 8px;
	background: var(--surface);
	font: 13px var(--font);
	color: var(--text);
}
body.ui-v2 .biolog-list .form-filter .filter-actions .btn.search { width: auto; height: 36px; padding: 0 16px; background-image: none; opacity: 1; border-radius: 8px; }
body.ui-v2 .biolog-list .form-filter .ui-picker .filter-list { width: auto; }
/* legacy status colors kept on purpose (users know them): plain names orange (old global link color), spans by status */
body.ui-v2 .biolog-list .data-table tbody td a { color: #e93a00; }
body.ui-v2 .biolog-list .data-table td a span { color: #229A05; }
body.ui-v2 .biolog-list .data-table td a .finished { color: #229A05; }
body.ui-v2 .biolog-list .data-table td a .sent { color: #115580; }
body.ui-v2 .biolog-list .data-table td a .sms { color: #115C73; }
/* flagged: legacy #e93a00 as text color, no background (user request 2026-10-05) */
body.ui-v2 .biolog-list .data-table td a .flag { color: #e93a00; background: none; padding-right: 0; }
/* toDo list: old inline colors (S = blue, U/other = orange) */
body.ui-v2 .biolog-list .data-table.todo td a .sent { color: blue; }
body.ui-v2 .biolog-list .data-table.todo td a .flag { color: orange; }
body.ui-v2 .biolog-list .data-table.finished td a span { color: #115C73; }
body.ui-v2 .biolog-list .data-table td.ellipsis { max-width: 180px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
body.ui-v2 .biolog-list .barcode-card table.bx-barcode { width: 100%; border-collapse: collapse; margin: 0; font: 13px var(--font); }
body.ui-v2 .biolog-list .barcode-card table.bx-barcode thead td {
	padding: 10px 12px;
	border: none !important;
	border-bottom: 1px solid var(--border) !important;
	background: var(--surface-2);
	font: 600 11.5px var(--font);
	letter-spacing: .05em;
	text-transform: uppercase;
	color: var(--text-3);
	white-space: nowrap;
}
body.ui-v2 .biolog-list .barcode-card table.bx-barcode tbody td { padding: 8px 12px; font: 13px var(--font); vertical-align: middle; }
body.ui-v2 .biolog-list .data-table.todo .dot-printed { background: var(--text-3); }
body.ui-v2 .biolog-list .data-table.todo td.bx-comment input.inline-edit.bx-comment-input { width: 100%; text-align: left; }
body.ui-v2 .biolog-list .data-table.todo td.bx-comment.saved { background-color: var(--success-soft); }
body.ui-v2 .biolog-list .data-table.todo td.bx-comment:hover { background-color: var(--primary-soft); }
body.ui-v2 .biolog-list .data-table.todo .bx-res-toggle { border: 1px solid var(--border-strong); border-radius: 8px; vertical-align: middle; }
body.ui-v2 .biolog-list .data-table.todo .bx-res-btn { display: inline-flex; align-items: center; justify-content: center; height: 30px; line-height: 1; padding: 0 12px; font: 500 12.5px var(--font); color: var(--text-2) !important; }
body.ui-v2 .biolog-list .data-table.todo .bx-res-btn:hover { background: var(--surface-2); }
body.ui-v2 .biolog-list .data-table.todo .bx-res-btn + .bx-res-btn { border-left: 1px solid var(--border-strong); }
body.ui-v2 .biolog-list .data-table.todo .bx-res-btn.on[data-val="N"] { background: var(--success-soft); color: var(--success) !important; }
body.ui-v2 .biolog-list .data-table.todo .bx-res-btn.on[data-val="P"] { background: var(--danger-soft); color: var(--danger) !important; }
body.ui-v2 .biolog-list .data-table.todo .bx-close-btn { display: inline-flex; align-items: center; justify-content: center; height: 30px; line-height: 1; padding: 0 12px; border: 1px solid var(--success); border-radius: 8px; color: var(--success) !important; font: 600 12.5px var(--font); }
body.ui-v2 .biolog-list .data-table.todo .bx-close-btn:hover { background: var(--success-soft); }
body.ui-v2 .biolog-list .data-table.todo .chip.bx-closed { background: var(--surface-2); color: var(--text-2); }
body.ui-v2 .biolog-list .data-table.todo td.bx-comment .bx-comment-add { color: var(--text-3); font-style: italic; }
body.ui-v2 .biolog-list .same-material-card { margin-top: 16px; }
body.ui-v2 .biolog-list .same-material-title { padding: 10px 12px; border-bottom: 1px solid var(--border); font: 600 13px var(--font); color: var(--text); }
body.ui-v2 .biolog-list .same-material-empty { padding: 10px 12px; font: 13px var(--font); color: var(--text-3); }
body.ui-v2 .biolog-list .barcode-card .mikro-item.printed { border-color: var(--success); background-color: var(--success-soft); color: var(--success) !important; }

/* ------------------------------------------------------------------ microbiology result page (BiologjiFill.class.php) */
body.ui-v2 .biolog-page .tab-actions .history-select {
	height: 30px;
	max-width: 260px;
	padding: 0 28px 0 10px;
	border: 1px solid var(--danger);
	border-radius: 8px;
	background: var(--danger-soft);
	color: var(--danger);
	font: 500 12.5px var(--font);
}
body.ui-v2 .biolog-page .bx-form-entry { float: none; width: auto; margin: 0; padding: 0; border: none; background: none; }
body.ui-v2 .biolog-page .bx-form-entry .field > label { float: none; width: auto; }
body.ui-v2 .biolog-page .bx-form-entry select { width: 100%; }
body.ui-v2 .biolog-page .bx-organism-layout { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: 20px; align-items: start; }
body.ui-v2 .biolog-page .bx-organism-main .form-item { float: none; width: auto; margin: 0; padding: 0; }
body.ui-v2 .biolog-page .bx-organism-main .data-table { border: 1px solid var(--border); border-radius: 10px; overflow: visible; border-collapse: separate; border-spacing: 0; }
body.ui-v2 .biolog-page .bx-organism-main .data-table tbody tr + tr td,
body.ui-v2 .biolog-page .bx-organism-main .data-table tfoot td { border-top: 1px solid var(--border); }
body.ui-v2 .biolog-page .bx-organism-main .data-table tfoot td { background: var(--surface-2); }
body.ui-v2 .biolog-page .bx-organism-main .data-table thead td:first-child { border-top-left-radius: 9px; }
body.ui-v2 .biolog-page .bx-organism-main .data-table thead td:last-child { border-top-right-radius: 9px; }
body.ui-v2 .biolog-page .bx-organism-main .data-table tfoot td:first-child { border-bottom-left-radius: 9px; }
body.ui-v2 .biolog-page .bx-organism-main .data-table tfoot td:last-child { border-bottom-right-radius: 9px; }
body.ui-v2 .biolog-page .bx-items-layout { display: grid; grid-template-columns: 1fr; gap: 20px; align-items: start; padding: 0; }
body.ui-v2 .biolog-page .bx-items-layout.with-idn { grid-template-columns: minmax(0, 13fr) minmax(0, 7fr); }
body.ui-v2 .biolog-page .bx-items-card { padding: 0; background: none; border: none; box-shadow: none; }
body.ui-v2 .biolog-page .bx-items-card > .card-body { padding: 0; }
body.ui-v2 .biolog-page .bx-table-card { margin: 0; }
body.ui-v2 .biolog-page .bx-table-card .card-head h2 { display: inline-flex; align-items: center; gap: 8px; }
body.ui-v2 .biolog-page .data-table tr.row-warn td { background: var(--danger-soft); }
body.ui-v2 .biolog-page .data-table td label.check { display: inline-flex; align-items: center; gap: 6px; float: none; width: auto; height: 28px; padding: 0 8px; border: 1px solid var(--border); border-radius: 7px; font-size: 12.5px; cursor: pointer; }
body.ui-v2 .biolog-page .data-table td label.check:has(input:checked) { border-color: rgba(15, 139, 141, .4); background: var(--primary-soft); color: var(--primary-700); }
body.ui-v2 .biolog-page .data-table td label.check input { width: 14px; height: 14px; margin: 0; accent-color: var(--primary); float: none; }
body.ui-v2 .biolog-page .data-table td label.check.w50 { width: auto !important; min-width: 50px; box-sizing: border-box; white-space: nowrap; }
body.ui-v2 .biolog-page #bxItemsTable tbody td { padding: 2px 5px; }
body.ui-v2 .biolog-page .data-table td select {
	box-sizing: border-box;
	height: 30px;
	padding: 0 26px 0 8px;
	border: 1px solid var(--border-strong);
	border-radius: 7px;
	background: var(--surface);
	font: 12.5px var(--font);
	color: var(--text);
}
body.ui-v2 .biolog-page .data-table tfoot { background: var(--surface-2); border-top: 1px solid var(--border); }
body.ui-v2 .biolog-page .data-table tfoot td { padding: 8px 10px; vertical-align: middle; }
body.ui-v2 .biolog-page .data-table tfoot input[type=text],
body.ui-v2 .biolog-page .data-table tfoot select {
	box-sizing: border-box;
	width: 100%;
	height: 34px;
	margin: 0;
	padding: 0 10px;
	border: 1px solid var(--border-strong);
	border-radius: 8px;
	background: var(--surface) none;
	font: 13px var(--font);
	color: var(--text);
	outline: none;
	float: none;
}
body.ui-v2 .biolog-page .data-table tfoot input.filter-input.filled { background-color: var(--primary-soft); border-color: var(--primary); color: var(--primary-700); font-weight: 500; }
body.ui-v2 .biolog-page .data-table tfoot input[type=text]:focus,
body.ui-v2 .biolog-page .data-table tfoot select:focus { border-color: var(--primary); box-shadow: 0 0 0 3px var(--primary-ring); }
body.ui-v2 .biolog-page .data-table tfoot input[disabled] { background: var(--surface-2); color: var(--text-3); }
body.ui-v2 .biolog-page .data-table tfoot .filter-data { position: relative; float: none; width: auto; }
body.ui-v2 .biolog-page .data-table tfoot .filter-data .filter-list {
	position: absolute;
	display: none;
	left: 0;
	right: 0;
	top: calc(100% + 4px);
	width: auto;
	max-height: 280px;
	overflow-y: auto;
	padding: 4px;
	border: 1px solid var(--border);
	border-radius: 10px;
	background: var(--surface);
	box-shadow: var(--shadow);
	font: 13px var(--font);
	z-index: 40;
}
body.ui-v2 .biolog-page .data-table tfoot .filter-data .filter-item { box-sizing: border-box; width: 100%; padding: 7px 10px; border: none; border-radius: 6px; cursor: pointer; }
body.ui-v2 .biolog-page .data-table tfoot .filter-data .filter-item:hover { background: var(--surface-2); }
body.ui-v2 .biolog-page .data-table tfoot .filter-data .filter-item.active { background: var(--primary-soft); color: var(--primary-700); }
body.ui-v2 .biolog-page .data-table tfoot input.filter-other { width: 80px !important; text-align: right; }
body.ui-v2 .biolog-page .data-table tfoot a.small-btn.save { float: none; }
body.ui-v2 .biolog-page .data-table tfoot a.small-btn.save[disabled] { opacity: .4; pointer-events: none; }
/* "te tjera": one compact row, textareas are one line and open up on focus */
body.ui-v2 .biolog-page .bx-extra-card > .card-body { padding: 10px 16px; }
body.ui-v2 .biolog-page .bx-extra-grid { display: flex; align-items: flex-start; gap: 12px; }
body.ui-v2 .biolog-page .bx-extra-grid .field { flex: 1 1 0; min-width: 0; }
body.ui-v2 .biolog-page .bx-extra-grid .field.bx-doc { flex: 0 0 220px; }
body.ui-v2 .biolog-page .bx-extra-grid .field > label { margin-bottom: 3px; font-size: 11.5px; }
body.ui-v2 .biolog-page .bx-extra-grid select { height: 34px; }
body.ui-v2 .biolog-page .bx-extra-grid textarea { display: block; width: 100%; box-sizing: border-box; min-height: 34px; height: 34px; padding: 6px 10px; line-height: 20px; overflow: hidden; resize: none; transition: height .15s ease; }
body.ui-v2 .biolog-page .bx-extra-grid textarea:focus { height: 110px; overflow: auto; resize: vertical; }
body.ui-v2 .biolog-page .bx-extra-grid textarea.filled { border-color: var(--primary); }
body.ui-v2 .biolog-page .bx-extra-card > .card-foot { padding: 8px 16px; }
@media (max-width: 899px) {
	body.ui-v2 .biolog-page .bx-extra-grid { flex-wrap: wrap; }
	body.ui-v2 .biolog-page .bx-extra-grid .field, body.ui-v2 .biolog-page .bx-extra-grid .field.bx-doc { flex: 1 1 calc(50% - 6px); }
}
@media (max-width: 599px) {
	body.ui-v2 .biolog-page .bx-extra-grid .field, body.ui-v2 .biolog-page .bx-extra-grid .field.bx-doc { flex-basis: 100%; }
}
body.ui-v2 .biolog-page .bx-extra-card textarea.has-comment { border-color: var(--warning); background: var(--warning-soft); }
body.ui-v2 .biolog-page .bx-actions { flex-wrap: wrap; }
body.ui-v2 .biolog-page .bx-actions input.btn { width: auto; margin: 0; background-image: none; font-family: var(--font); cursor: pointer; }
body.ui-v2 .biolog-page .bx-actions input.btn.hidden,
body.ui-v2 .biolog-page .bx-actions .btn.hidden { display: none !important; }
body.ui-v2 .biolog-page .bx-actions input.btn[disabled] { opacity: .55; cursor: not-allowed; }
@media (max-width: 1100px) {
	body.ui-v2 .biolog-page .bx-organism-layout,
	body.ui-v2 .biolog-page .bx-items-layout.with-idn { grid-template-columns: 1fr; }
}
body.ui-v2 .biolog-page .bx-organism-main .filter-data.w320,
body.ui-v2 .biolog-page .bx-organism-main input.w320 { width: 100% !important; }
body.ui-v2 .biolog-page #tblOrganismList { table-layout: fixed; }
@media (max-width: 599px) { body.ui-v2 .biolog-page #tblOrganismList col.bx-col-num { width: 110px; } }
body.ui-v2 .biolog-page #tblOrganismList col.bx-col-org { width: 34%; }
body.ui-v2 .biolog-page #tblOrganismList col.bx-col-num { width: 150px; }
body.ui-v2 .biolog-page #tblOrganismList col.bx-col-act { width: 40px; }
body.ui-v2 .biolog-page #tblOrganismList tbody td:nth-child(2) { white-space: nowrap; }
body.ui-v2 .biolog-page #tblOrganismList tbody td:nth-child(3) { font-size: 11.5px; line-height: 1.4; color: var(--text-2); }
body.ui-v2 .biolog-page #tblOrganismList tfoot #tNumber { width: 100% !important; }
body.ui-v2 .legend-row { display: flex; flex-wrap: wrap; gap: 6px; margin: 0 0 12px; }
body.ui-v2 .legend-row .chip.legend-mark { background: #a6bff2; border-color: transparent; color: #1e3a8a; }
body.ui-v2 .legend-row .chip.legend-sent { background: #c4f6ca; border-color: transparent; color: #14532d; }
body.ui-v2 .legend-row .chip.legend-error { background: #e7b1b1; border-color: transparent; color: #7f1d1d; }
body.ui-v2 .legend-row .dot { display: inline-block; width: 8px; height: 8px; border-radius: 50%; }
body.ui-v2 .legend-row .dot-conf { background: #115580; }
body.ui-v2 .legend-row .dot-proc { background: #e93a00; }

/* ------------------------------------------------------------------ legacy compatibility layer
   Pages that still render the old markup (.form-title / .form-entry / .form-item / .item-table / .form-filter)
   straight into the content column get the new look without touching their PHP. Scoped to direct children
   of .content-col so converted pages are not affected. */
body.ui-v2 .content-col > .form-title {
	position: relative;
	margin: 0 0 18px;
	padding: 0;
	border: none;
	font: 700 24px/1.2 var(--font);
	letter-spacing: -.4px;
	color: var(--text);
}
body.ui-v2 .content-col > .form-title .sep { color: var(--border-strong); padding: 0 8px; font-weight: 400; }
body.ui-v2 .content-col > .form-title .underlinks {
	position: static;
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
	margin-top: 10px;
}
body.ui-v2 .content-col > .form-title .underlinks .divider { display: none; }
body.ui-v2 .content-col > .form-title .underlinks a {
	display: inline-flex;
	align-items: center;
	height: 30px;
	padding: 0 12px;
	border: 1px solid var(--border);
	border-radius: 8px;
	background: var(--surface);
	color: var(--text-2);
	font: 500 12.5px var(--font);
	letter-spacing: 0;
	text-decoration: none;
	cursor: pointer;
}
body.ui-v2 .content-col > .form-title .underlinks a:hover { border-color: var(--primary); color: var(--primary-700); text-decoration: none; }
body.ui-v2 .content-col > .form-title .error,
body.ui-v2 .content-col > .form-title .info {
	position: static;
	display: block;
	margin: 10px 0 0;
	padding: 10px 14px;
	border-radius: 10px;
	border: 1px solid transparent;
	font: 13px/1.45 var(--font);
	letter-spacing: 0;
}
body.ui-v2 .content-col > .form-title .error { background: var(--danger-soft); border-color: rgba(217, 45, 32, .25); color: #9A1F16; }
body.ui-v2 .content-col > .form-title .info { background: var(--success-soft); border-color: rgba(18, 128, 92, .25); color: #0B5C42; }

/* forms */
body.ui-v2 .content-col > .form-entry,
body.ui-v2 .content-col > .form-view,
body.ui-v2 .content-col > form > .form-entry {
	float: none;
	width: auto;
	margin: 0;
	padding: 0;
	border: none;
	background: none;
	font-family: var(--font);
}
body.ui-v2 .content-col > .form-entry fieldset,
body.ui-v2 .content-col > .form-view fieldset {
	display: block;
	margin: 0 0 16px;
	padding: 16px 20px 6px;
	border: 1px solid var(--border);
	border-radius: var(--radius);
	background: var(--surface);
	box-shadow: var(--shadow-sm);
	min-width: 0;
}
body.ui-v2 .content-col > .form-entry fieldset::after,
body.ui-v2 .content-col > .form-view fieldset::after { content: ""; display: block; clear: both; }
body.ui-v2 .content-col > .form-entry fieldset legend,
body.ui-v2 .content-col > .form-view fieldset legend {
	float: left;
	width: 100%;
	margin: 0 0 12px;
	padding: 0 0 10px;
	border-bottom: 1px solid var(--border);
	font: 600 14.5px var(--font);
	color: var(--text);
}
body.ui-v2 .content-col > .form-entry fieldset legend a,
body.ui-v2 .content-col > .form-view fieldset legend a { color: var(--text); text-decoration: none; }
body.ui-v2 .content-col > .form-entry fieldset.collapsed { padding-bottom: 12px; }
body.ui-v2 .content-col > .form-entry fieldset.collapsed legend { margin: 0; padding: 0; border: none; }
body.ui-v2 .content-col > .form-entry fieldset.submit,
body.ui-v2 .content-col > .form-view fieldset.submit {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 8px;
	padding: 0;
	border: none;
	background: none;
	box-shadow: none;
}
body.ui-v2 .content-col > .form-entry .form-item,
body.ui-v2 .content-col > .form-view .form-item {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 8px 12px;
	clear: both;
	margin: 0 0 10px;
	font: 13px var(--font);
	color: var(--text);
}
body.ui-v2 .content-col > .form-entry .form-item > label,
body.ui-v2 .content-col > .form-view .form-item > label,
body.ui-v2 .content-col > .form-entry .form-item > label.w80 {
	flex: 0 0 150px;
	float: none;
	width: 150px;
	margin: 0;
	padding: 0;
	font: 500 12.5px var(--font);
	color: var(--text-2);
}
body.ui-v2 .content-col > .form-entry .form-item > label.check,
body.ui-v2 .content-col > .form-entry .form-item > label.checkbox,
body.ui-v2 .content-col > .form-entry .form-item label.check,
body.ui-v2 .content-col > .form-entry .form-item label.checkbox {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	flex: 0 0 auto;
	width: auto;
	height: 34px;
	padding: 0 10px;
	border: 1px solid var(--border);
	border-radius: 8px;
	background: var(--surface-2);
	font: 500 12.5px var(--font);
	color: var(--text-2);
	cursor: pointer;
}
body.ui-v2 .content-col > .form-entry .form-item label.check:has(input:checked),
body.ui-v2 .content-col > .form-entry .form-item label.checkbox:has(input:checked) { border-color: var(--primary); background: var(--primary-soft); color: var(--primary-700); }
body.ui-v2 .content-col > .form-entry input[type=text],
body.ui-v2 .content-col > .form-entry input[type=date],
body.ui-v2 .content-col > .form-entry input[type=datetime-local],
body.ui-v2 .content-col > .form-entry input[type=number],
body.ui-v2 .content-col > .form-entry input[type=password],
body.ui-v2 .content-col > .form-entry input[type=email],
body.ui-v2 .content-col > .form-entry select,
body.ui-v2 .content-col > .form-entry textarea {
	box-sizing: border-box;
	float: none;
	height: 34px;
	min-width: 220px;
	margin: 0;
	padding: 0 10px;
	border: 1px solid var(--border-strong);
	border-radius: 8px;
	background: var(--surface);
	color: var(--text);
	font: 13px var(--font);
	outline: none;
	transition: border-color .12s ease, box-shadow .12s ease;
}
body.ui-v2 .content-col > .form-entry select { padding-right: 28px; }
body.ui-v2 .content-col > .form-entry select[multiple],
body.ui-v2 .content-col > .form-entry select.list,
body.ui-v2 .content-col > .form-entry select[size] { height: auto; padding: 6px; }
body.ui-v2 .content-col > .form-entry textarea { height: auto; min-height: 72px; padding: 8px 10px; line-height: 1.45; resize: vertical; }
body.ui-v2 .content-col > .form-entry input.one-four,
body.ui-v2 .content-col > .form-entry input.two-four,
body.ui-v2 .content-col > .form-entry input.three-four { min-width: 0; text-align: center; }
body.ui-v2 .content-col > .form-entry input:hover,
body.ui-v2 .content-col > .form-entry select:hover,
body.ui-v2 .content-col > .form-entry textarea:hover { outline: none; }
body.ui-v2 .content-col > .form-entry input:focus,
body.ui-v2 .content-col > .form-entry select:focus,
body.ui-v2 .content-col > .form-entry textarea:focus { border-color: var(--primary); box-shadow: 0 0 0 3px var(--primary-ring); }
body.ui-v2 .content-col > .form-entry input[readonly],
body.ui-v2 .content-col > .form-entry input:disabled,
body.ui-v2 .content-col > .form-entry select:disabled,
body.ui-v2 .content-col > .form-entry textarea:disabled { background: var(--surface-2); color: var(--text-2); }
body.ui-v2 .content-col > .form-entry input.checkbox,
body.ui-v2 .content-col > .form-entry input[type=checkbox],
body.ui-v2 .content-col > .form-entry input[type=radio] {
	width: 16px;
	height: 16px;
	min-width: 0;
	margin: 0;
	padding: 0;
	float: none;
	border: none;
	box-shadow: none;
	accent-color: var(--primary);
	cursor: pointer;
}
body.ui-v2 .content-col > .form-entry .form-item .info,
body.ui-v2 .content-col > .form-entry .form-item .divider { color: var(--text-3); font-size: 12px; }
body.ui-v2 .content-col > .form-entry .left-box,
body.ui-v2 .content-col > .form-entry .right-box { float: left; width: 50%; box-sizing: border-box; padding-right: 20px; }
body.ui-v2 .content-col > .form-entry .right-box { padding-right: 0; }

/* buttons (legacy input.submit / input.button anywhere in the content column) */
body.ui-v2 .content-col input.submit,
body.ui-v2 .content-col input.button,
body.ui-v2 .content-col button.button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	height: 36px;
	min-width: 0;
	width: auto;
	margin: 0 6px 0 0;
	padding: 0 14px;
	border: 1px solid var(--border);
	border-radius: 9px;
	background: var(--surface);
	color: var(--text);
	font: 500 13px var(--font);
	text-shadow: none;
	box-shadow: var(--shadow-sm);
	cursor: pointer;
	float: none;
}
body.ui-v2 .content-col input.submit {
	border-color: var(--primary);
	background: var(--primary);
	color: #fff;
	font-weight: 600;
}
body.ui-v2 .content-col input.submit:hover { background: var(--primary-600); }
body.ui-v2 .content-col input.button:hover { border-color: var(--border-strong); background: var(--surface-2); }
body.ui-v2 .content-col input.button:disabled,
body.ui-v2 .content-col input.submit:disabled { opacity: .5; cursor: not-allowed; }
body.ui-v2 .content-col input.button.hidden,
body.ui-v2 .content-col input.submit.hidden { display: none; }

/* list tables */
body.ui-v2 .content-col > .item-table,
body.ui-v2 .content-col > form > .item-table,
body.ui-v2 .content-col > div > .item-table.report {
	width: 100%;
	margin: 0 0 16px;
	border: 1px solid var(--border);
	border-radius: var(--radius);
	border-collapse: separate;
	border-spacing: 0;
	background: var(--surface);
	box-shadow: var(--shadow-sm);
	overflow: hidden;
	font: 13px var(--font);
}
body.ui-v2 .content-col > .item-table tr,
body.ui-v2 .content-col > form > .item-table tr { border: none; }
body.ui-v2 .content-col > .item-table thead td,
body.ui-v2 .content-col > form > .item-table thead td {
	padding: 10px 12px;
	border: none;
	border-bottom: 1px solid var(--border);
	background: var(--surface-2);
	font: 600 11.5px var(--font);
	letter-spacing: .05em;
	text-transform: uppercase;
	color: var(--text-3);
	white-space: nowrap;
}
body.ui-v2 .content-col > .item-table thead td a,
body.ui-v2 .content-col > form > .item-table thead td a { color: var(--text-3); text-decoration: none; }
body.ui-v2 .content-col > .item-table thead td select,
body.ui-v2 .content-col > .item-table thead td input[type=text] {
	box-sizing: border-box;
	height: 30px;
	padding: 0 8px;
	border: 1px solid var(--border-strong);
	border-radius: 7px;
	background: var(--surface);
	font: 12.5px var(--font);
	text-transform: none;
	letter-spacing: 0;
}
body.ui-v2 .content-col > .item-table tbody td,
body.ui-v2 .content-col > form > .item-table tbody td {
	padding: 9px 12px;
	border: none;
	border-top: 1px solid var(--border);
	font: 13px var(--font);
	color: var(--text);
	vertical-align: middle;
}
body.ui-v2 .content-col > .item-table tbody tr:first-child td { border-top: none; }
body.ui-v2 .content-col > .item-table tbody tr:hover td { background: #F6FAFA; }
body.ui-v2 .content-col > .item-table tbody tr.current td { background: var(--primary-soft); }
body.ui-v2 .content-col > .item-table tbody td a { color: var(--text); font-weight: 500; text-decoration: none; }
body.ui-v2 .content-col > .item-table tbody td a:hover { color: var(--primary-700); text-decoration: underline; }
body.ui-v2 .content-col > .item-table tfoot td { padding: 9px 12px; border-top: 1px solid var(--border); background: var(--surface-2); font-size: 12.5px; color: var(--text-3); }
body.ui-v2 .content-col > .item-table tfoot:empty,
body.ui-v2 .content-col > .item-table tfoot tr td:only-child:empty { padding: 0; border: none; }
body.ui-v2 .content-col > .item-table td.error { color: var(--text-3); font-style: italic; padding: 20px 12px; }
/* status dot (store transfers etc.): legacy main_desktop.css td.status colors, kept exact on purpose */
body.ui-v2 .content-col > .item-table tbody td.status { width: 28px; padding-right: 0; font-size: 20px; line-height: 1; text-align: center; cursor: default; }
body.ui-v2 .content-col > .item-table tbody td.status.open     { color: #F00; }
body.ui-v2 .content-col > .item-table tbody td.status.closed   { color: #CCC; }
body.ui-v2 .content-col > .item-table tbody td.status.canceled { color: #EF1FBA; }

/* filter bars */
body.ui-v2 .content-col > .form-filter {
	display: flex;
	align-items: flex-end;
	flex-wrap: wrap;
	gap: 12px 16px;
	float: none;
	width: auto;
	box-sizing: border-box;
	margin: 0 0 16px;
	padding: 16px 20px;
	border: 1px solid var(--border);
	border-radius: var(--radius);
	background: var(--surface);
	box-shadow: var(--shadow-sm);
	overflow: visible;
	font-family: var(--font);
}
body.ui-v2 .content-col > .form-filter .form-item { display: block; float: none; width: auto; margin: 0; padding: 0; height: auto; }
body.ui-v2 .content-col > .form-filter label {
	display: block;
	float: none;
	width: auto;
	height: auto;
	margin: 0 0 5px;
	padding: 0;
	font: 500 12.5px var(--font);
	color: var(--text-2);
}
body.ui-v2 .content-col > .form-filter label.check {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	height: 36px;
	margin: 0 4px 0 0;
	padding: 0 10px;
	border: 1px solid var(--border);
	border-radius: 8px;
	background: var(--surface-2);
	color: var(--text-2);
	cursor: pointer;
}
body.ui-v2 .content-col > .form-filter label.check:has(input:checked) { border-color: var(--primary); background: var(--primary-soft); color: var(--primary-700); }
body.ui-v2 .content-col > .form-filter input[type=text],
body.ui-v2 .content-col > .form-filter input[type=date],
body.ui-v2 .content-col > .form-filter select {
	box-sizing: border-box;
	height: 36px;
	margin: 0;
	padding: 0 10px;
	border: 1px solid var(--border-strong);
	border-radius: 8px;
	background: var(--surface);
	color: var(--text);
	font: 13px var(--font);
	outline: none;
}
body.ui-v2 .content-col > .form-filter input:focus,
body.ui-v2 .content-col > .form-filter select:focus { border-color: var(--primary); box-shadow: 0 0 0 3px var(--primary-ring); }
body.ui-v2 .content-col > .form-filter input.checkbox,
body.ui-v2 .content-col > .form-filter input[type=checkbox],
body.ui-v2 .content-col > .form-filter input[type=radio] { width: 15px; height: 15px; margin: 0; accent-color: var(--primary); }
body.ui-v2 .content-col > .form-filter .filter-button { display: flex; align-items: flex-end; gap: 6px; float: none; margin-left: auto; order: 99; }
body.ui-v2 .content-col > .form-filter .filter-button label { display: none; }
body.ui-v2 .content-col > .form-filter .search,
body.ui-v2 .content-col > .form-filter .barcode,
body.ui-v2 .content-col > .form-filter .print {
	width: 40px;
	height: 36px;
	margin: 0;
	border: 1px solid var(--primary);
	border-radius: 8px;
	background-color: var(--primary);
	background-size: 18px;
	opacity: 1;
	cursor: pointer;
}
body.ui-v2 .content-col > .form-filter .print { width: auto; padding: 0 12px 0 34px; background-position: 10px center; color: #fff; font: 500 13px var(--font); }
body.ui-v2 .content-col > .form-filter .filter-data { position: relative; float: none; width: auto; }
body.ui-v2 .content-col > .form-filter .filter-data .filter-list {
	position: absolute;
	display: none;
	left: 0;
	top: calc(100% + 4px);
	min-width: 100%;
	max-height: 280px;
	overflow-y: auto;
	padding: 4px;
	border: 1px solid var(--border);
	border-radius: 10px;
	background: var(--surface);
	box-shadow: var(--shadow);
	font: 13px var(--font);
	z-index: 40;
}
body.ui-v2 .content-col > .form-filter .filter-data .filter-item { padding: 7px 10px; border: none; border-radius: 6px; cursor: pointer; }
body.ui-v2 .content-col > .form-filter .filter-data .filter-item:hover { background: var(--surface-2); }
body.ui-v2 .content-col > .form-filter .filter-input.filled { background-color: var(--primary-soft); border-color: var(--primary); color: var(--primary-700); font-weight: 500; }

@media (max-width: 900px) {
	body.ui-v2 .content-col > .form-entry .form-item > label { flex-basis: 100%; width: auto; }
	body.ui-v2 .content-col > .form-entry .left-box,
	body.ui-v2 .content-col > .form-entry .right-box { float: none; width: auto; padding: 0; }
	body.ui-v2 .content-col > .form-entry input[type=text],
	body.ui-v2 .content-col > .form-entry select,
	body.ui-v2 .content-col > .form-entry textarea { min-width: 0; width: 100%; }
	body.ui-v2 .content-col > .form-filter .filter-button { margin-left: 0; width: 100%; }
}

/* ------------------------------------------------------------------ alignment pass */
/* wide tables: always show a thin scrollbar and tighten cells on laptop widths */
body.ui-v2 .table-scroll { scrollbar-width: thin; }
body.ui-v2 .table-scroll::-webkit-scrollbar { height: 8px; }
body.ui-v2 .table-scroll::-webkit-scrollbar-thumb { background: var(--border-strong); border-radius: 4px; }
@media (max-width: 1280px) {
	body.ui-v2 .data-table thead td, body.ui-v2 .data-table thead th { padding: 8px 8px; font-size: 11px; }
	body.ui-v2 .data-table tbody td { padding: 7px 8px; font-size: 12.5px; }
	body.ui-v2 .data-table .chip { height: 20px; padding: 0 7px; font-size: 11px; }
	body.ui-v2 .analiza-page table.ax-table thead td { padding: 8px 6px; font-size: 11px; }
	body.ui-v2 .analiza-page table.ax-table tbody td { padding: 5px 6px; font-size: 12.5px; }
	body.ui-v2 .analiza-page table.ax-table input.aniValue { width: 96px; }
	body.ui-v2 .visit-view .exam-list .data-table td.ellipsis { max-width: 120px; }
}
/* floating month picker: keep it out of the section headers by default */
body.ui-v2 .pickup-calendar { top: auto; bottom: 24px; right: 24px; }
/* once dragged (or restored from localStorage) it gets an inline top: drop the bottom anchor or it stretches to the screen bottom */
body.ui-v2 .pickup-calendar[style*="top"] { bottom: auto; height: auto; }
/* microbiology: organism table fills the column when the layout stacks */
body.ui-v2 .biolog-page .bx-organism-main .form-item { display: block; }
body.ui-v2 .biolog-page .bx-organism-main .data-table { width: 100%; }
/* collapsible fieldsets inside result pages: neutralise the legacy fieldset.collapsed rules */
body.ui-v2 .analiza-page .ax-extra-card fieldset.collapsible,
body.ui-v2 .analiza-page .ax-extra-card fieldset.collapsible.collapsed {
	position: static;
	height: auto;
	margin: 16px 0 0;
	padding: 0;
	border: 1px solid var(--border);
	border-width: 1px;
	border-radius: 10px;
	background: var(--surface) !important;
}
body.ui-v2 .analiza-page .ax-extra-card fieldset.collapsible.collapsed legend { display: block; }
body.ui-v2 .analiza-page .ax-extra-card fieldset.collapsible.collapsed legend a { display: flex; }
body.ui-v2 .analiza-page .ax-extra-card fieldset.collapsible.collapsed legend a .chev { display: inline-block; }
body.ui-v2 .analiza-page .ax-extra-card fieldset.collapsible legend a,
body.ui-v2 .analiza-page .ax-extra-card fieldset.collapsible.collapsed legend a { width: auto; height: auto; margin: 0; background: none; background-image: none; text-indent: 0; }
body.ui-v2 .analiza-page .ax-extra-card fieldset.collapsible legend a:hover { background: var(--surface-2); }
/* collapsed calendar columns: ellipsis instead of clipping both ends */
body.ui-v2 .calendar-card .schedule.collapsed .header { display: block; line-height: 44px; padding: 0 8px; text-align: center; text-overflow: ellipsis; }
body.ui-v2 .analiza-page .ax-extra-card fieldset.collapsible.collapsed legend a .chev * { display: inline; }

/* ------------------------------------------------------------------ phone widths */
body.ui-v2 .app-main, body.ui-v2 .app-content, body.ui-v2 .content-col { min-width: 0; max-width: 100%; }
body.ui-v2 .page { min-width: 0; max-width: min(1400px, 100%); }
@media (max-width: 900px) {
	body.ui-v2 .page-actions .btn,
	body.ui-v2 .page-actions input.btn,
	body.ui-v2 .card-actions .btn,
	body.ui-v2 .tab-actions .btn,
	body.ui-v2 .filter-actions .btn { min-width: 0; }
	body.ui-v2 .page-actions input.btn { flex: 1 1 auto; }
}
@media (max-width: 600px) {
	body.ui-v2 .page-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; width: 100%; }
	body.ui-v2 .page-actions .btn,
	body.ui-v2 .page-actions input.btn { width: auto; margin: 0; overflow: hidden; text-overflow: ellipsis; justify-content: center; }
	body.ui-v2 .page-actions .btn:only-child { grid-column: 1 / -1; }
	body.ui-v2 .calendar-page .date-nav { grid-column: 1 / -1; display: flex; }
	body.ui-v2 .calendar-page .date-nav .btn { flex: 1 1 auto; }
	body.ui-v2 .calendar-page .date-nav .btn.icon-only { flex: 0 0 44px; }
	body.ui-v2 .page-meta { gap: 5px; }
	body.ui-v2 .tab-row { flex-direction: column; align-items: stretch; }
	body.ui-v2 .tab-row .tab-actions { flex-wrap: wrap; }
	body.ui-v2 .tab-row .tab-actions .btn { flex: 1 1 auto; }
	body.ui-v2 .card-head { flex-wrap: wrap; }
	body.ui-v2 .card-head .card-actions { flex-wrap: wrap; }
	body.ui-v2 .table-toolbar { flex-wrap: wrap; }
	body.ui-v2 .exam-picker, body.ui-v2 .service-picker { flex-wrap: wrap; }
	body.ui-v2 .exam-picker .filter-data { flex: 1 1 100%; }
	body.ui-v2 .invoice-actions .btn, body.ui-v2 .invoice-actions input.btn { flex: 1 1 45%; }
	body.ui-v2 .ax-actions input.btn, body.ui-v2 .bx-actions input.btn, body.ui-v2 .bx-actions .btn { flex: 1 1 45%; }
	body.ui-v2 .detail-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px 14px; }
	body.ui-v2 .content-col > .form-entry .form-item label.check,
	body.ui-v2 .content-col > .form-entry .form-item label.checkbox { flex: 1 1 auto; }
}
@media (max-width: 699px) {
	body.ui-v2 .pickup-calendar { position: relative; bottom: auto; right: auto; top: auto; width: 100%; margin: 0 0 16px; box-sizing: border-box; }
}
@media (max-width: 600px) {
	body.ui-v2 .patient-view fieldset.visit legend a .visit-sub { display: none; }
	body.ui-v2 .patient-view fieldset.visit legend a { padding-right: 150px; }
	body.ui-v2 .biolog-page .bx-organism-side select,
	body.ui-v2 .biolog-page .bx-form-entry select { width: 100% !important; max-width: 100%; box-sizing: border-box; }
}
@media (max-width: 1100px) {
	body.ui-v2 .pkt-layout, body.ui-v2 .barcode-layout, body.ui-v2 .request-layout, body.ui-v2 .invoice-layout,
	body.ui-v2 .config-layout, body.ui-v2 .bx-organism-layout, body.ui-v2 .bx-items-layout.with-idn { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 600px) {
	body.ui-v2 .patient-view fieldset.visit legend a > span.visit-sub,
	body.ui-v2 .patient-view fieldset.visit.collapsed legend a > span.visit-sub { display: none; }
}
body.ui-v2 .card, body.ui-v2 .bx-form-entry, body.ui-v2 .ui-form { min-width: 0; }
body.ui-v2 .biolog-page .bx-organism-main .table-scroll { overflow: visible; }
body.ui-v2 .biolog-page form.bx-form-entry { display: block; float: none; width: auto; min-width: 0; max-width: 100%; }
body.ui-v2 .biolog-page .bx-organism-card, body.ui-v2 .biolog-page .bx-organism-main { min-width: 0; max-width: 100%; }
body.ui-v2 .biolog-page .bx-organism-main .data-table thead td { white-space: normal; }

/* origin request page: three columns (patient 40% / tests 40% / barcodes 20%) */
body.ui-v2 .request-layout { grid-template-columns: minmax(0, 7fr) minmax(0, 10fr) minmax(190px, 3fr); }
/* smaller / older monitors: two columns, barcodes move under the patient form; one column on narrow screens */
@media (max-width: 1440px) {
	body.ui-v2 .request-layout { grid-template-columns: minmax(300px, 2fr) minmax(0, 3fr); grid-template-rows: auto 1fr; }
	body.ui-v2 .request-layout > .request-main { grid-column: 1; grid-row: 1; }
	body.ui-v2 .request-layout > .request-bar  { grid-column: 1; grid-row: 2; }
	body.ui-v2 .request-layout > .request-side { grid-column: 2; grid-row: 1 / span 2; }
}
@media (max-width: 860px) {
	body.ui-v2 .request-layout { grid-template-columns: minmax(0, 1fr); grid-template-rows: none; }
	body.ui-v2 .request-layout > .request-main,
	body.ui-v2 .request-layout > .request-bar,
	body.ui-v2 .request-layout > .request-side { grid-column: 1; grid-row: auto; }
	body.ui-v2 .request-layout > .request-bar { order: 3; }
}
/* age boxes: legacy .one-four (55px) made the inputs shrink under their "vjec"/"muaj" suffix */
body.ui-v2 .request-main .input-affix { flex: 1 1 0; }
body.ui-v2 .request-main .input-affix input { width: 100% !important; min-width: 0; padding-right: 40px !important; }
body.ui-v2 .request-main .input-affix span { right: 9px; }
body.ui-v2 .request-main input[type=date] { width: 100%; min-width: 0; }
body.ui-v2 .request-main .form-actions { flex-wrap: wrap; }
body.ui-v2 .request-main .form-actions .btn { flex: 0 0 auto; white-space: nowrap; width: auto; }
body.ui-v2 .request-main .form-actions .form-actions-note { flex: 1 1 160px; margin-left: 0; }
body.ui-v2 .request-main #tDesc { min-height: 0; height: 58px; }
body.ui-v2 .request-main #sexChoice { flex-wrap: wrap; gap: 6px; }
body.ui-v2 .request-bar .barcode-list .primar-item { font-size: 12px; padding-left: 30px; background-position: 8px center; }
body.ui-v2 .request-bar { display: flex; flex-direction: column; gap: 20px; min-width: 0; }
body.ui-v2 .request-bar .card { margin: 0; }
body.ui-v2 .request-bar .barcode-list { display: flex; flex-direction: column; gap: 6px; }
body.ui-v2 .request-bar .barcode-list { padding: 12px 14px; }
body.ui-v2 .request-bar .barcode-list .primar-item { box-sizing: border-box; width: 100%; max-width: 100%; height: auto; min-height: 34px; padding-top: 6px; padding-bottom: 6px; white-space: normal; flex-wrap: wrap; line-height: 1.3; overflow-wrap: anywhere; }

/* filter forms always span the full page width (legacy .form-filter is display:table = shrink-to-fit) */
body.ui-v2 .page form.form-filter, body.ui-v2 .page .form-filter, body.ui-v2 .page form.ui-filter-form { display: block; float: none; width: 100%; max-width: none; box-sizing: border-box; }
body.ui-v2 .page .form-filter > .ui-filter { display: block; width: auto; }

/* compact "Te tjera" card on the analysis result page */
/* "te tjera" (no header): one compact row of fields, Datat + Uploads side by side at 50% each */
body.ui-v2 .analiza-page .ax-extra-card > .card-body { padding: 10px 16px 12px; }
body.ui-v2 .analiza-page .ax-extra-card .form-grid { gap: 8px 12px; }
body.ui-v2 .analiza-page .ax-extra-card .field > label { margin-bottom: 3px; font-size: 11.5px; }
body.ui-v2 .analiza-page .ax-extra-card .ax-extra-main select { height: 34px; }
body.ui-v2 .analiza-page .ax-extra-card .ax-extra-main textarea { display: block; width: 100%; box-sizing: border-box; min-height: 34px; height: 34px; padding: 6px 10px; line-height: 20px; overflow: hidden; resize: none; transition: height .15s ease; }
body.ui-v2 .analiza-page .ax-extra-card .ax-extra-main textarea:focus { height: 110px; overflow: auto; resize: vertical; }
body.ui-v2 .analiza-page .ax-extra-card .ax-extra-main textarea.filled { border-color: var(--primary); }
body.ui-v2 .analiza-page .ax-extra-card .field input[type=datetime-local] { width: 100%; height: 34px; }
body.ui-v2 .analiza-page .ax-extra-card .card-foot { padding-top: 8px; padding-bottom: 8px; }
body.ui-v2 .analiza-page .ax-extra-card .ax-extra-main { grid-template-columns: 220px minmax(0, 1fr) minmax(0, 1fr); }
body.ui-v2 .analiza-page .ax-extra-card .ax-extra-main .field:nth-child(2):last-child { grid-column: 2 / -1; }
body.ui-v2 .analiza-page .ax-extra-card .ax-extra-sections { display: flex; align-items: flex-start; gap: 12px; margin-top: 10px; }
body.ui-v2 .analiza-page .ax-extra-card .ax-extra-sections:empty { display: none; }
body.ui-v2 .analiza-page .ax-extra-card .ax-extra-sections > fieldset.collapsible,
body.ui-v2 .analiza-page .ax-extra-card .ax-extra-sections > fieldset.collapsible.collapsed { flex: 1 1 0; min-width: 0; margin: 0; }
body.ui-v2 .analiza-page .ax-extra-card fieldset.collapsible legend a { padding: 8px 12px; }
body.ui-v2 .analiza-page .ax-extra-card fieldset.collapsible .collapsible-body { padding: 10px 12px 12px; }
body.ui-v2 .analiza-page .ax-extra-card .ax-dates-grid { padding-top: 0; gap: 8px 12px; }
body.ui-v2 .analiza-page .ax-extra-card .upload-thumbs { display: flex; flex-wrap: wrap; gap: 8px; }
body.ui-v2 .analiza-page .ax-extra-card .upload-thumbs:empty { display: none; }
body.ui-v2 .analiza-page .ax-extra-card .upload-thumbs a { display: block; }
body.ui-v2 .analiza-page .ax-extra-card .upload-thumbs .preview { float: none; width: 56px; height: 56px; margin: 0; border-radius: 8px; background-size: 40px; }
body.ui-v2 .analiza-page .ax-extra-card .ax-uploads .clear { display: none; }
body.ui-v2 .analiza-page .ax-extra-card .upload-form { display: flex; align-items: center; gap: 8px; margin-top: 10px; }
body.ui-v2 .analiza-page .ax-extra-card .upload-thumbs:empty + .clear + .upload-form { margin-top: 0; }
body.ui-v2 .analiza-page .ax-extra-card .upload-form input[type=file] { flex: 1 1 auto; min-width: 0; font: 12.5px var(--font); color: var(--text-2); }
body.ui-v2 .analiza-page .ax-extra-card .upload-form input.button { width: auto; height: 32px; margin: 0; padding: 0 12px; }
@media (max-width: 900px) {
	body.ui-v2 .analiza-page .ax-extra-card .ax-extra-main { grid-template-columns: 1fr; }
	body.ui-v2 .analiza-page .ax-extra-card .ax-extra-main .field:nth-child(2):last-child { grid-column: auto; }
	body.ui-v2 .analiza-page .ax-extra-card .ax-extra-sections { flex-direction: column; align-items: stretch; }
}

/* ------------------------------------------------------------------ login */
body.ui-v2.login-page {
	min-height: 100vh;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 24px 16px;
	box-sizing: border-box;
}
body.ui-v2 .login-shell {
	display: flex;
	align-items: stretch;
	gap: 24px;
	width: 100%;
	max-width: 1180px;
}
body.ui-v2 .login-media {
	flex: 1 1 auto;
	min-width: 0;
	aspect-ratio: 16 / 9;
	border-radius: var(--radius);
	overflow: hidden;
	background: #0B1A24;
	box-shadow: var(--shadow-sm);
}
body.ui-v2 .login-media iframe { display: block; width: 100%; height: 100%; border: 0; }
body.ui-v2 .login-card {
	flex: 0 0 360px;
	display: flex;
	flex-direction: column;
	justify-content: center;
	padding: 36px 32px;
	box-sizing: border-box;
	background: var(--surface);
	border: 1px solid var(--border);
	border-radius: var(--radius);
	box-shadow: var(--shadow-sm);
}
body.ui-v2 .login-brand { display: flex; align-items: center; gap: 10px; margin-bottom: 28px; }
body.ui-v2 .login-brand .brand-mark {
	width: 36px;
	height: 36px;
	border-radius: 50%;
	overflow: hidden;
	background: #fff;
	box-shadow: 0 1px 4px rgba(0, 0, 0, .12);
}
body.ui-v2 .login-brand .brand-mark img { display: block; width: 36px; height: 36px; object-fit: cover; }
body.ui-v2 .login-brand .brand-name { font-size: 18px; font-weight: 700; color: var(--text); letter-spacing: -.01em; }
body.ui-v2 .login-brand .brand-name span { color: var(--accent); }
body.ui-v2 .login-card h1 { margin: 0; font-size: 22px; font-weight: 700; color: var(--text); letter-spacing: -.01em; }
body.ui-v2 .login-card .login-sub { margin: 4px 0 22px; color: var(--text-2); font-size: 13px; }
body.ui-v2 .login-card form { display: flex; flex-direction: column; margin: 0; }
body.ui-v2 .login-card label { margin: 0 0 6px; font-size: 12.5px; font-weight: 600; color: var(--text-2); }
body.ui-v2 .login-card input[type="text"],
body.ui-v2 .login-card input[type="password"] {
	height: 40px;
	margin: 0 0 16px;
	padding: 0 12px;
	border: 1px solid var(--border-strong);
	border-radius: var(--radius-sm);
	background: #fff;
	color: var(--text);
	font: 14px var(--font);
	box-sizing: border-box;
}
body.ui-v2 .login-card input[type="text"]:focus,
body.ui-v2 .login-card input[type="password"]:focus { outline: none; border-color: var(--primary); box-shadow: 0 0 0 3px var(--primary-ring); }
body.ui-v2 .login-card .btn.btn-primary { justify-content: center; height: 40px; margin-top: 6px; font-size: 14px; }
body.ui-v2 .login-card .alert { margin-bottom: 18px; }
@media (max-width: 860px) {
	body.ui-v2 .login-media { display: none; }
	body.ui-v2 .login-shell { justify-content: center; }
	body.ui-v2 .login-card { flex: 0 1 400px; padding: 28px 22px; }
}

/* ------------------------------------------------------------------ row colour legend (legacy status lists) */
body.ui-v2 .row-legend { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 8px; margin: 0 0 12px; font-size: 12px; }
body.ui-v2 .row-legend span { padding: 3px 10px; border-radius: 999px; color: var(--text); line-height: 1.5; }
body.ui-v2 .row-legend span.txt { padding: 3px 4px; font-weight: 600; }

/* ------------------------------------------------------------------ todo list: flagged-result marker after a test name */
body.ui-v2 .item-table .verify-flag {
	display: inline-block;
	width: 15px;
	height: 15px;
	margin: 0 2px 0 4px;
	vertical-align: -3px;
	background-repeat: no-repeat;
	background-position: center;
	background-size: 15px;
	cursor: help;
}
body.ui-v2 .item-table .verify-flag.blue   { background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%232563EB' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'><circle cx='12' cy='12' r='9.5'/><line x1='12' y1='16' x2='12' y2='11.5'/><line x1='12' y1='8' x2='12.01' y2='8'/></svg>"); }
body.ui-v2 .item-table .verify-flag.yellow { background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23D97706' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'><circle cx='12' cy='12' r='9.5'/><line x1='12' y1='16' x2='12' y2='11.5'/><line x1='12' y1='8' x2='12.01' y2='8'/></svg>"); }
body.ui-v2 .item-table .verify-flag.red    { background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23D92D20' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'><circle cx='12' cy='12' r='9.5'/><line x1='12' y1='16' x2='12' y2='11.5'/><line x1='12' y1='8' x2='12.01' y2='8'/></svg>"); }
body.ui-v2 .item-table td.todo-flag .error-item { margin: 0 auto; cursor: help; }

/* ------------------------------------------------------------------ chat window (WhatsApp) on tablets / phones */
body.ui-v2 #chatBack { display: none; }

/* main_desktop.css (where the chat is styled) only applies from 700px up, so phones get the full set here */
@media (max-width: 699px) {
	body.ui-v2 #chatInfo { position: fixed; display: block; visibility: visible; text-align: center; }
	body.ui-v2 #chatInfo.blinking { color: var(--danger); }
	body.ui-v2 #chatWindow { position: fixed; display: flex; visibility: hidden; background: #fafafa; }
	body.ui-v2 #chatContacts { background: #2c3e50; overflow-y: auto; }
	body.ui-v2 #chatContacts .contact-item {
		position: relative;
		background: #34495e;
		color: #fff;
		border-radius: 8px;
		font-weight: 600;
		cursor: pointer;
	}
	body.ui-v2 #chatContacts .contact-item.selected,
	body.ui-v2 #chatContacts .contact-item:active { background: #1abc9c; }
	body.ui-v2 #chatContacts .contact-item .unread {
		position: absolute;
		display: flex; align-items: center; justify-content: center;
		min-width: 22px; height: 22px; padding: 0 6px; box-sizing: border-box;
		border-radius: 11px;
		background: #DD373A; color: #fff;
		font: 600 11px var(--font);
	}
	body.ui-v2 #chatContainer { display: flex; flex-direction: column; }
	body.ui-v2 #chatClose { position: absolute; background-image: url(../images/close_v1.png); background-position: center; background-repeat: no-repeat; cursor: pointer; }
	body.ui-v2 #chatHeader { color: #fff; }
	body.ui-v2 #chatMessages { padding: 10px; overflow-y: auto; -webkit-overflow-scrolling: touch; background-image: url(../images/whatsapp_background_5.png); }
	body.ui-v2 #chatMessages .message { display: flex; flex-direction: column; margin-bottom: 6px; }
	body.ui-v2 #chatMessages .message.received { align-items: flex-start; }
	body.ui-v2 #chatMessages .message.sent { align-items: flex-end; }
	body.ui-v2 #chatMessages .message .text { padding: 7px 11px; border-radius: 10px; }
	body.ui-v2 #chatMessages .message.received .text { background: #fff; color: #222; box-shadow: 0 1px 1px rgba(0,0,0,.08); }
	body.ui-v2 #chatMessages .message.sent .text { background: var(--primary); color: #fff; }
	body.ui-v2 #chatMessages .message .image img { width: 100%; border-radius: 8px; border: 2px solid #fff; }
	body.ui-v2 #chatMessages .message .link { width: 110px; height: 110px; }
	body.ui-v2 #chatMessages .message .link img { width: 100%; }
	body.ui-v2 #chatMessages .message .time { margin-top: 2px; padding: 0 4px; font-size: 11px; color: #777; }
	body.ui-v2 #chatInput { display: flex; border-top: 1px solid var(--border); }
	body.ui-v2 #chatInput .attach { background: url(../images/attach_icon_v1.png) center / 22px no-repeat; cursor: pointer; opacity: .7; }
	body.ui-v2 #chatInput #textInput { flex: 1; border: 1px solid var(--border-strong); outline: none; }
	body.ui-v2 #chatInput button { border: none; color: #fff; cursor: pointer; }
	body.ui-v2 #chatWelcome { text-align: center; }
}


@media (max-width: 940px) {
	/* full screen instead of the fixed 902x600 box */
	body.ui-v2 #chatWindow {
		top: 0; right: 0; bottom: 0; left: 0;
		width: auto; height: auto;
		height: 100dvh;
		border: none;
		border-radius: 0;
		z-index: 1000;
	}
	body.ui-v2.chat-open { overflow: hidden; }
	body.ui-v2 #chatContacts { width: 240px; flex: 0 0 240px; border-radius: 0; box-sizing: border-box; padding: 56px 10px 10px; }
	body.ui-v2 #chatContainer { min-width: 0; }
	body.ui-v2 #chatClose {
		top: 10px; right: 10px;
		width: 36px; height: 36px;
		border-radius: 50%;
		background-color: rgba(255, 255, 255, .9);
		background-size: 16px;
		box-shadow: var(--shadow-sm);
		opacity: 1;
		z-index: 3;
	}
	body.ui-v2 #chatHeader {
		display: flex; align-items: center; gap: 8px;
		min-height: 56px; box-sizing: border-box;
		padding: 8px 56px 8px 14px;
		background: var(--primary);
		font: 600 15px var(--font);
		text-align: left;
		white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
	}
	body.ui-v2 #chatHeader.hidden { display: none; }
	body.ui-v2 #chatMessages .message .text { max-width: 85%; font-size: 15px; line-height: 1.4; word-wrap: break-word; overflow-wrap: anywhere; }
	body.ui-v2 #chatMessages .message .image { width: 70%; }
	body.ui-v2 #chatInput {
		align-items: center; gap: 8px;
		padding: 8px 10px calc(8px + env(safe-area-inset-bottom));
		background: var(--surface);
	}
	body.ui-v2 #chatInput.hidden { display: none; }
	body.ui-v2 #chatInput .attach { flex: 0 0 32px; height: 40px; }
	/* 16px keeps iOS from zooming into the field */
	body.ui-v2 #chatInput #textInput { min-width: 0; height: 42px; box-sizing: border-box; font-size: 16px; border-radius: 21px; padding: 0 14px; }
	body.ui-v2 #chatInput button { height: 42px; margin: 0; padding: 0 16px; border-radius: 21px; background: var(--primary); font: 600 14px var(--font); }
	body.ui-v2 #chatWelcome { padding: 80px 24px 24px; }
	body.ui-v2 #chatInfo { right: 12px; bottom: calc(12px + env(safe-area-inset-bottom)); }
}

@media (max-width: 700px) {
	/* one panel at a time: the contact list, or the open conversation */
	body.ui-v2 #chatContacts { width: 100%; flex: 1 1 auto; padding: 60px 12px 12px; }
	body.ui-v2 #chatContacts::before {
		content: "Chat";
		position: absolute; top: 0; left: 0; right: 0;
		height: 56px; line-height: 56px; padding: 0 16px;
		color: #fff; font: 700 18px/56px var(--font);
	}
	body.ui-v2 #chatContacts .contact-item { padding: 14px 44px 14px 14px; margin-bottom: 8px; font-size: 15px; }
	body.ui-v2 #chatContacts .contact-item .unread { top: 50%; right: 10px; transform: translateY(-50%); }
	body.ui-v2 #chatContainer { flex: 0 0 0; overflow: visible; }
	body.ui-v2 #chatContainer > *:not(#chatClose) { display: none !important; }

	body.ui-v2 #chatWindow.conv-open #chatContacts { display: none; }
	body.ui-v2 #chatWindow.conv-open #chatContainer { flex: 1 1 auto; overflow: hidden; }
	body.ui-v2 #chatWindow.conv-open #chatContainer > #chatHeader:not(.hidden),
	body.ui-v2 #chatWindow.conv-open #chatContainer > #chatMessages:not(.hidden) { display: block !important; }
	body.ui-v2 #chatWindow.conv-open #chatContainer > #chatHeader:not(.hidden) { display: flex !important; padding-left: 52px; }
	body.ui-v2 #chatWindow.conv-open #chatContainer > #chatInput:not(.hidden) { display: flex !important; }
	body.ui-v2 #chatWindow.conv-open #chatContainer > #chatBack {
		display: flex !important; align-items: center; justify-content: center;
		position: absolute; top: 10px; left: 8px;
		width: 36px; height: 36px;
		border-radius: 50%;
		color: #fff; font-size: 22px; line-height: 1;
		cursor: pointer; z-index: 3;
	}
	body.ui-v2 #chatWindow.conv-open #chatMessages { flex: 1 1 auto; }
}

/* ------------------------------------------------------------------ calendar: phone agenda instead of the pixel grid */
body.ui-v2 .cal-agenda { display: none; }

@media (max-width: 699px) {
	body.ui-v2 .calendar-card { display: none; }
	body.ui-v2 .cal-agenda { display: block; }
	body.ui-v2 .cal-agenda .agenda-sec { margin: 0 0 12px; padding: 0; overflow: hidden; }
	body.ui-v2 .cal-agenda .agenda-head {
		display: flex; align-items: center; justify-content: space-between;
		padding: 11px 14px;
		background: var(--surface-2);
		border-bottom: 1px solid var(--border);
		font: 600 14px var(--font);
		color: var(--text);
	}
	body.ui-v2 .cal-agenda .agenda-count {
		min-width: 22px; padding: 1px 8px; box-sizing: border-box;
		border-radius: 999px;
		background: var(--primary-soft); color: var(--primary-700);
		font-size: 12px; text-align: center;
	}
	body.ui-v2 .cal-agenda .agenda-empty { padding: 14px; color: var(--text-3); font-size: 13px; font-style: italic; }
	body.ui-v2 .cal-agenda .agenda-row { display: flex; align-items: stretch; border-bottom: 1px solid var(--border); }
	body.ui-v2 .cal-agenda .agenda-row:last-child { border-bottom: none; }
	body.ui-v2 .cal-agenda .agenda-row.empty { display: none; }
	body.ui-v2 .cal-agenda.show-all .agenda-row.empty { display: flex; }
	body.ui-v2 .cal-agenda .agenda-time {
		flex: 0 0 64px;
		width: 64px;
		padding: 10px 6px 10px 12px;
		box-sizing: border-box;
		font: 600 13px var(--font);
		font-variant-numeric: tabular-nums;
		color: var(--text-2);
		border-right: 1px solid var(--border);
		background: var(--surface-2);
	}
	body.ui-v2 .cal-agenda .agenda-events { flex: 1 1 auto; min-width: 0; padding: 6px 8px; display: flex; flex-direction: column; gap: 6px; }
	body.ui-v2 .cal-agenda .agenda-event {
		display: block;
		padding: 8px 10px;
		border-radius: 8px;
		border-left: 4px solid var(--evt-color, var(--primary));
		background: color-mix(in srgb, var(--evt-color, var(--primary)) 18%, #fff);
		color: #1f2937;
		font-size: 13.5px;
		line-height: 1.4;
		text-decoration: none;
	}
	body.ui-v2 .cal-agenda .agenda-event:active { filter: brightness(.95); }
	body.ui-v2 .cal-agenda .agenda-event .evt-time { font-weight: 700; margin-right: 6px; font-variant-numeric: tabular-nums; }
	body.ui-v2 .cal-agenda .agenda-event .evt-title { font-weight: 600; }
	body.ui-v2 .cal-agenda .agenda-event .evt-patient { margin-left: 4px; }
	body.ui-v2 .cal-agenda .agenda-event .evt-meta { display: inline-block; margin-left: 6px; opacity: .75; font-size: 12px; }
	body.ui-v2 .cal-agenda .agenda-event .status { margin-right: 6px; font-size: 11px; font-weight: 700; text-transform: uppercase; }
	body.ui-v2 .cal-agenda .agenda-event .status.cl,
	body.ui-v2 .cal-agenda .agenda-event .status.no { color: var(--danger); }
	body.ui-v2 .cal-agenda .agenda-event .status.dn { color: var(--success); }
	body.ui-v2 .cal-agenda .agenda-add { display: block; padding: 4px 2px; color: var(--text-3); font-size: 13px; text-decoration: none; }
	body.ui-v2 .cal-agenda .agenda-toggle { width: 100%; justify-content: center; height: 40px; margin: 0 0 16px; }
}

/* ------------------------------------------------------------------ calendar: month picker (vanillacalendar) in the v2 look */
/* calendar.css hides the day strip below 700px (the picker replaces it) - hide its empty card too */
@media (max-width: 699px) { body.ui-v2 .calendar-page .date-strip { display: none; } }

body.ui-v2 .pickup-calendar { overflow: hidden; }
body.ui-v2 .pickup-calendar .cal { padding: 10px; border: none; border-radius: 0; box-shadow: none; background: var(--surface); }
body.ui-v2 .pickup-calendar .cal__header { padding: 0 0 8px; background: transparent; }
body.ui-v2 .pickup-calendar .cal__header button {
	display: inline-flex; align-items: center; justify-content: center;
	flex: 0 0 32px; width: 32px; min-width: 32px; height: 32px;
	padding: 0;
	border: none;
	border-radius: 8px;
	background: transparent;
	box-shadow: none;
	transition: background-color .15s;
}
body.ui-v2 .pickup-calendar .cal__header button:hover { background: var(--primary-soft); }
body.ui-v2 .pickup-calendar .cal__header svg { width: 20px; height: 20px; fill: var(--primary); }
body.ui-v2 .pickup-calendar .cal__header__label { font: 600 14px var(--font); color: var(--text); }
body.ui-v2 .pickup-calendar .cal__week span { padding: 6px 0; font: 600 10.5px var(--font); letter-spacing: .04em; color: var(--text-3); }
body.ui-v2 .pickup-calendar .cal__body { background: transparent; }
body.ui-v2 .pickup-calendar .cal__date { padding: 2px; border: none; background: transparent; }
body.ui-v2 .pickup-calendar .cal__date span {
	display: flex; align-items: center; justify-content: center;
	box-sizing: border-box;
	width: 100%; max-width: 36px; height: 32px;
	padding: 0;
	border: 1px solid transparent;
	border-radius: 8px;
	background: transparent;
	font: 500 13px var(--font);
	color: var(--text);
	font-variant-numeric: tabular-nums;
	transition: background-color .15s, color .15s;
}
body.ui-v2 .pickup-calendar .cal__date--active:hover span { background: var(--primary-soft); color: var(--primary-700); }
body.ui-v2 .pickup-calendar .cal__date--today span { border-color: var(--primary); background: transparent; color: var(--primary-700); font-weight: 700; }
body.ui-v2 .pickup-calendar .cal__date--selected span,
body.ui-v2 .pickup-calendar .cal__date--selected:hover span { border-color: var(--primary); background: var(--primary); color: #fff; font-weight: 600; }
@media (max-width: 699px) {
	body.ui-v2 .pickup-calendar .cal__header { cursor: default; }
	body.ui-v2 .pickup-calendar .cal__date span { max-width: 44px; height: 38px; font-size: 14px; }
}

/* origin accept list (Analiza te derguara nga klinikat): compact rows; the refuse icon keeps its space so hover doesn't resize rows */
body.ui-v2 .content-col .accept-list tbody td { padding: 4px 10px; }
body.ui-v2 .content-col .accept-list tbody td[style*="height"] { height: auto !important; }
body.ui-v2 .content-col .accept-list .accept-all,
body.ui-v2 .content-col .accept-list .refresh { width: 20px; height: 20px; margin: 0 auto; }
body.ui-v2 .content-col .accept-list .refuse-item { display: block; visibility: hidden; width: 20px; height: 20px; margin: 0 auto; }
body.ui-v2 .content-col .accept-list tr:hover .refuse-item { visibility: visible; }
/* legacy request status colors (main_desktop.css .accept-list / td.status), kept exact on purpose */
body.ui-v2 .content-col .accept-list tbody td.accepted    { color: green; }
body.ui-v2 .content-col .accept-list tbody td.refused     { color: red; }
body.ui-v2 .content-col .accept-list tbody td.finished    { color: #0F0; }
body.ui-v2 .content-col .accept-list tbody td.canceled    { color: #EF1FBA; }
body.ui-v2 .content-col .accept-list tbody td.status      { font-size: 20px; line-height: 1; cursor: default; }

/* store situation report (Gjendja ne magazine) */
body.ui-v2 .situation-card .toolbar-filters { display: flex; flex-wrap: wrap; gap: 8px; }
body.ui-v2 .data-table.situation tbody td { padding: 5px 10px; }
body.ui-v2 .data-table.situation td.mono { font-family: var(--mono); font-size: 12px; color: var(--text-2); }
body.ui-v2 .data-table.situation td[align="right"] { font-variant-numeric: tabular-nums; }
body.ui-v2 .data-table.situation td.tdQuantity { font-weight: 600; }
body.ui-v2 .data-table.situation td.tdQuantity.noQuantity { font-weight: 400; color: var(--text-3); }
/* low stock keeps the legacy yellow users know */
body.ui-v2 .data-table.situation tr.low-stock td { background-color: #F9F7B1; }
body.ui-v2 .data-table.situation tbody tr.low-stock:hover td { background-color: #F3F09A; }
body.ui-v2 .data-table.situation td .small-btn { margin: 0 auto; }
body.ui-v2 .data-table.situation td input.textSituation { width: 70px; height: 28px; padding: 0 6px; text-align: right; }
body.ui-v2 .data-table.situation tfoot td.total-label { text-align: right; color: var(--text-3); font-weight: 600; text-transform: uppercase; font-size: 11.5px; letter-spacing: .04em; }
body.ui-v2 .data-table.situation tfoot td.total { font-weight: 700; color: var(--text); font-size: 13.5px; font-variant-numeric: tabular-nums; }

/* users page: details card + cabinets / stores assignment, list below */
body.ui-v2 .user-layout { display: grid; grid-template-columns: minmax(0, 3fr) minmax(0, 2fr); gap: 20px; align-items: stretch; margin-bottom: 20px; }
body.ui-v2 .user-layout .card { margin: 0; }
body.ui-v2 .user-assign { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; align-items: stretch; }
/* assignment cards fill the height of the details card; the list takes the remaining space */
body.ui-v2 .assign-card { display: flex; flex-direction: column; }
body.ui-v2 .assign-card > .card-body { display: flex; flex-direction: column; flex: 1 1 auto; min-height: 0; }
body.ui-v2 .assign-card .assign-list { flex: 1 1 0; height: auto; min-height: 200px; } /* basis 0: the size=12 listbox must not push the row taller than the form */
body.ui-v2 .user-page .input-row .check-inline { flex: 0 0 auto; }
body.ui-v2 .assign-card .card-body { padding: 14px 16px 16px; }
body.ui-v2 .assign-card .input-row select { flex: 1 1 auto; min-width: 0; }
body.ui-v2 .assign-card .input-row .btn { flex: 0 0 auto; white-space: nowrap; }
body.ui-v2 .assign-card .btn[disabled] { opacity: .45; cursor: not-allowed; }
body.ui-v2 .assign-list { display: block; box-sizing: border-box; width: 100%; height: 300px; margin-top: 10px; padding: 4px; border: 1px solid var(--border); border-radius: 10px; background: var(--surface); font: 13px var(--font); color: var(--text); outline: none; }
body.ui-v2 .assign-list:focus { border-color: var(--primary); box-shadow: 0 0 0 3px var(--primary-ring); }
body.ui-v2 .assign-list option { padding: 5px 8px; border-radius: 6px; }
body.ui-v2 .assign-list option:checked { background: var(--primary-soft); color: var(--primary-700); }
body.ui-v2 .assign-note { margin: 8px 0 0; font-size: 12px; color: var(--text-3); }
body.ui-v2 .user-list-card .toolbar-filters { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
body.ui-v2 .user-list-card .toolbar-filters select,
body.ui-v2 .user-list-card .toolbar-filters input { box-sizing: border-box; height: 34px; border: 1px solid var(--border-strong); border-radius: 8px; background: var(--surface); font: 13px var(--font); color: var(--text); }
body.ui-v2 .user-list-card .toolbar-filters select { width: 200px; padding: 0 28px 0 10px; }
body.ui-v2 .user-list-card .search-affix { position: relative; display: flex; align-items: center; }
body.ui-v2 .user-list-card .search-affix .ico { position: absolute; left: 10px; width: 16px; height: 16px; color: var(--text-3); pointer-events: none; }
body.ui-v2 .user-list-card .search-affix input { width: 280px; padding: 0 11px 0 32px !important; text-align: left; }
body.ui-v2 .user-list-card .toolbar-filters input:focus,
body.ui-v2 .user-list-card .toolbar-filters select:focus { border-color: var(--primary); box-shadow: 0 0 0 3px var(--primary-ring); outline: none; }
body.ui-v2 #userTable tbody td { padding: 6px 12px; }
body.ui-v2 #userTable td.flag .ico { width: 16px; height: 16px; color: var(--success); vertical-align: middle; }
body.ui-v2 #userTable td.mono { font-family: var(--mono); font-size: 12px; }
body.ui-v2 #userTable tr.inactive td, body.ui-v2 #userTable tr.inactive td a { color: var(--text-3); }
@media (max-width: 1300px) { body.ui-v2 .user-assign { grid-template-columns: minmax(0, 1fr); } body.ui-v2 .assign-list { height: 200px; } }
@media (max-width: 960px)  { body.ui-v2 .user-layout { grid-template-columns: minmax(0, 1fr); } body.ui-v2 .user-assign { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 640px)  { body.ui-v2 .user-assign { grid-template-columns: minmax(0, 1fr); } body.ui-v2 .user-list-card .search-affix input, body.ui-v2 .user-list-card .toolbar-filters select { width: 100%; } }

/* visit view exam list on phones: only Nr. / exam / add date / status, smaller text */
@media (max-width: 699px) {
	body.ui-v2 .card.table-card.exam-list .col-extra { display: none; }
	body.ui-v2 .card.table-card.exam-list .data-table thead td { padding: 8px 6px; font-size: 10.5px; }
	body.ui-v2 .card.table-card.exam-list .data-table tbody td { padding: 6px; font-size: 12px; }
	body.ui-v2 .card.table-card.exam-list .data-table tbody td strong { font-weight: 600; }
	body.ui-v2 .card.table-card.exam-list .data-table .chip { padding: 1px 7px; font-size: 11px; }
}

/* visit view on phones: lab results keep name / result / normal values / evaluation, less padding everywhere in the result cards */
@media (max-width: 699px) {
	body.ui-v2 .visit-view .embed { padding: 8px 6px 10px; }
	body.ui-v2 .visit-view .embed .ax-view tr > td:nth-child(3),
	body.ui-v2 .visit-view .embed .ax-view tr > td:nth-child(4) { display: none; }
	body.ui-v2 .visit-view .embed .item-table thead td { padding: 6px; font-size: 9.5px; letter-spacing: .03em; white-space: normal; }
	body.ui-v2 .visit-view .embed .item-table tbody td { padding: 5px 6px; font-size: 12px; }
	body.ui-v2 .visit-view .embed .item-table tfoot td { padding: 6px; font-size: 12px; }
	body.ui-v2 .visit-view .embed .ax-view td.ax-desc { font-size: 11px; }
	body.ui-v2 .visit-view .embed .ax-view td.ax-flag:not(:empty) { font-size: 10px; line-height: 1.25; }
	body.ui-v2 .visit-view .detail-grid dt { font-size: 10px; letter-spacing: .03em; margin-bottom: 2px; }
	body.ui-v2 .visit-view .embed .ax-view td.bold { padding-top: 10px; }
}

/* visit view invoice on phones: stack Pagesat above Totalet, smaller labels */
@media (max-width: 699px) {
	body.ui-v2 .visit-view .invoice .embed > table,
	body.ui-v2 .visit-view .invoice .embed > table > tbody,
	body.ui-v2 .visit-view .invoice .embed > table > tbody > tr,
	body.ui-v2 .visit-view .invoice .embed > table > tbody > tr > td { display: block; width: auto; }
	body.ui-v2 .visit-view .invoice .embed > table > tbody > tr:nth-child(3) { display: none; }
	body.ui-v2 .visit-view .invoice .embed > table > tbody > tr > td { padding: 0; text-align: left; }
	body.ui-v2 .visit-view .invoice .embed > table > tbody > tr:first-child > td { padding-bottom: 8px; font-size: 10px; line-height: 1.45; }
	body.ui-v2 .visit-view .invoice .embed > table > tbody > tr:first-child > td i { font-size: 9px; text-transform: uppercase; letter-spacing: .03em; }
	body.ui-v2 .visit-view .invoice .embed .item-table.view { margin-bottom: 12px; }
	body.ui-v2 .visit-view .invoice .embed fieldset.payments,
	body.ui-v2 .visit-view .invoice .embed fieldset.invoice-totals,
	body.ui-v2 .visit-view .invoice .embed fieldset.invoice-notes { float: none; width: auto; box-sizing: border-box; }
	body.ui-v2 .visit-view .invoice .embed fieldset.invoice-totals { margin: 10px 0 0; }
	body.ui-v2 .visit-view .invoice .embed fieldset.invoice-notes { margin-top: 10px; }
	body.ui-v2 .visit-view .invoice .embed fieldset.subview legend { padding: 7px 10px; font-size: 9.5px; letter-spacing: .03em; }
	body.ui-v2 .visit-view .invoice .embed fieldset.payments .item-table thead td { font-size: 10px; }
	body.ui-v2 .visit-view .invoice .embed #invTotals td { padding: 4px 10px; font-size: 12px; }
	body.ui-v2 .visit-view .invoice .embed #invTotals td.label { font-size: 11px; }
}

/* phones: app-like density, minimal side padding everywhere */
@media (max-width: 699px) {
	body.ui-v2 .app-content { padding: 10px 6px 80px; } /* bottom room for the fixed unread-messages chip */
	body.ui-v2 .page-header { margin-bottom: 12px; padding: 0 4px; }
	body.ui-v2 .card { margin-bottom: 10px; border-radius: 10px; }
	body.ui-v2 .card-head, body.ui-v2 .card-body { padding-left: 10px; padding-right: 10px; }
	body.ui-v2 .card-head { padding-top: 10px; padding-bottom: 10px; }
	body.ui-v2 .card-body { padding-top: 12px; padding-bottom: 12px; }
	body.ui-v2 .card-foot { padding: 8px 10px; }
	body.ui-v2 .table-toolbar { padding: 8px 10px; }
	body.ui-v2 .data-table thead td, body.ui-v2 .data-table thead th { padding: 7px 6px; }
	body.ui-v2 .data-table tbody td { padding: 6px; }
	body.ui-v2 .data-table tfoot td { padding: 6px; }
	body.ui-v2 .data-table thead td:first-child, body.ui-v2 .data-table tbody td:first-child, body.ui-v2 .data-table tfoot td:first-child { padding-left: 10px; }
	body.ui-v2 .data-table thead td:last-child, body.ui-v2 .data-table tbody td:last-child, body.ui-v2 .data-table tfoot td:last-child { padding-right: 10px; }
	/* patient visit accordion: cards inside cards, so trim both levels */
	body.ui-v2 .patient-view fieldset.visit legend a,
	body.ui-v2 .patient-view fieldset.visit.collapsed legend a { padding: 11px 10px; }
	body.ui-v2 .patient-view fieldset.visit > .quick-links { padding: 0 10px 8px; }
	body.ui-v2 .patient-view fieldset.visit > .visit-content { padding: 4px 6px 8px; }
	body.ui-v2 .visit-view.embedded { padding-top: 6px; }
	body.ui-v2 .visit-view.embedded .card-head, body.ui-v2 .visit-view.embedded .card-body { padding-left: 8px; padding-right: 8px; }
}

/* ------------------------------------------------------------------ order management (AnalizaOrders.class.php) */
body.ui-v2 .analiza-list .orders-card { margin-top: 4px; }
body.ui-v2 .analiza-list .orders-head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	flex-wrap: wrap;
	padding: 8px 14px;
	border-bottom: 1px solid var(--border);
}
body.ui-v2 .analiza-list .orders-count { font-size: 12.5px; font-weight: 600; color: var(--text-2); }
body.ui-v2 .analiza-list .orders-legend { display: flex; flex-wrap: wrap; gap: 4px 14px; font-size: 11.5px; color: var(--text-2); }
body.ui-v2 .analiza-list .orders-legend span { display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; }
body.ui-v2 .analiza-list .orders-legend i { display: inline-block; width: 14px; height: 5px; border-radius: 3px; }
body.ui-v2 .analiza-list .orders-loading-overlay { border-radius: var(--radius); }

/* main rows */
body.ui-v2 .analiza-list .order-table thead td { padding: 9px 12px; }
body.ui-v2 .analiza-list .order-table thead td a::after { opacity: .35; }
body.ui-v2 .analiza-list .order-table > tbody > tr { border-top: 1px solid var(--border); }
body.ui-v2 .analiza-list .order-table > tbody > tr:first-child { border-top: none; }
body.ui-v2 .analiza-list .order-table > tbody > tr:not(.tr-order-detail):hover { background: #F6FAFA !important; }
body.ui-v2 .analiza-list .order-table > tbody > tr > td { padding: 5px 12px; vertical-align: middle; }
body.ui-v2 .analiza-list .order-table .ptn-data { font-size: 13px; font-weight: 600; color: var(--text); white-space: nowrap; }
body.ui-v2 .analiza-list .order-table td.w80 { color: var(--text-2); font-variant-numeric: tabular-nums; white-space: nowrap; }
body.ui-v2 .analiza-list .order-table a.release-all {
	display: inline-flex;
	align-items: center;
	height: 26px;
	padding: 0 10px;
	border: 1px solid var(--primary);
	border-radius: 7px;
	background: var(--surface);
	background-image: none;
	color: var(--primary-700);
	font: 600 12px var(--font);
	white-space: nowrap;
	text-decoration: none;
	cursor: pointer;
}
body.ui-v2 .analiza-list .order-table a.release-all:hover { background: var(--primary); color: #fff; }

/* analysis-group chips: legacy look kept on purpose (full-colour status segments, white label), just without the grey border */
body.ui-v2 .analiza-list .order-table .axg-btn {
	position: relative;
	display: inline-block;
	margin: 2px 4px 2px 0;
	padding: 4px 10px;
	border: none;
	border-radius: 6px;
	background: #fff;
	color: #fff;
	font: 600 12.5px/16px var(--font);
	white-space: nowrap;
	cursor: pointer;
	overflow: hidden;
}
body.ui-v2 .analiza-list .order-table .axg-btn:not(:has(.axg-btn-bar)) { cursor: default; background: #c8c8c8; }
body.ui-v2 .analiza-list .order-table .axg-btn:hover { box-shadow: inset 0 0 0 100px rgba(0, 0, 0, .08); }
body.ui-v2 .analiza-list .order-table .axg-btn.active { box-shadow: 0 0 0 2px var(--surface), 0 0 0 4px var(--primary); overflow: visible; }
body.ui-v2 .analiza-list .order-table .axg-btn.active::after { border-width: 6px; border-color: var(--primary) transparent transparent transparent; top: calc(100% + 2px); }
body.ui-v2 .analiza-list .order-table .axg-btn-bar { top: 0; left: 0; right: 0; bottom: 0; height: auto; border-radius: 6px; overflow: hidden; background: transparent; }
body.ui-v2 .analiza-list .order-table .axg-btn-seg { opacity: .6; }
body.ui-v2 .analiza-list .order-table .axg-btn-label { position: relative; z-index: 1; }
body.ui-v2 .analiza-list .orders-legend i { opacity: .6; }

/* expanded detail row */
body.ui-v2 .analiza-list .order-table > tbody > tr.tr-order-detail { background: var(--surface-2); border-top: none; }
body.ui-v2 .analiza-list .order-table > tbody > tr.tr-order-detail.hidden { display: none; }
body.ui-v2 .analiza-list .order-table > tbody > tr.tr-order-detail > td { padding: 4px 12px 12px; vertical-align: top; }
body.ui-v2 .analiza-list .order-table > tbody > tr.tr-order-detail > td:first-child { padding-top: 10px; }
body.ui-v2 .analiza-list .order-table .extra-data { font-size: 12px; color: var(--text-2); max-width: none; line-height: 1.4; }
body.ui-v2 .analiza-list .order-table .grey-back { background-color: transparent !important; }
body.ui-v2 .analiza-list .order-table .divFill { padding: 8px 12px 6px; border: 1px solid var(--border); border-radius: 10px; background: var(--surface); box-shadow: var(--shadow-xs); }
body.ui-v2 .analiza-list .order-table .divFill:empty { display: none; }
body.ui-v2 .analiza-list .order-table .divFill .order-detail-toolbar { display: flex; justify-content: flex-end; gap: 6px; height: auto; margin: 0 0 8px; }
body.ui-v2 .analiza-list .order-table .divFill .order-detail-toolbar a {
	display: inline-flex;
	align-items: center;
	height: 28px;
	margin: 0;
	padding: 0 12px;
	border: 1px solid var(--border-strong);
	border-radius: 7px;
	background: var(--surface);
	background-image: none;
	color: var(--text);
	font: 600 12px var(--font);
	text-decoration: none;
}
body.ui-v2 .analiza-list .order-table .divFill .order-detail-toolbar a.open { border-color: var(--primary); color: var(--primary-700); background: var(--primary-soft); }
body.ui-v2 .analiza-list .order-table .divFill .order-detail-toolbar a.open:hover { background: #C6E8E8; border-color: var(--primary-600); color: var(--primary-700); }
body.ui-v2 .analiza-list .order-table .divFill .order-detail-toolbar a.release { border-color: var(--primary); background: var(--primary); color: #fff; }
body.ui-v2 .analiza-list .order-table .divFill .order-detail-toolbar a.release:hover { background: var(--primary-600); border-color: var(--primary-600); color: #fff; }
body.ui-v2 .analiza-list .order-table .divFill .order-detail-toolbar a.release.disabled { border-color: var(--border); background: var(--surface-2); color: var(--text-3); }
body.ui-v2 .analiza-list .order-table .divFill .ax-form { width: 100%; margin: 0; border-collapse: collapse; font: 12.5px var(--font); }
body.ui-v2 .analiza-list .order-table .divFill .ax-form tr { border: none; }
body.ui-v2 .analiza-list .order-table .divFill .ax-form td {
	padding: 3px 8px;
	height: auto;
	border: none;
	border-top: 1px solid var(--border);
	color: var(--text);
	font-size: 12.5px;
	vertical-align: middle;
}
body.ui-v2 .analiza-list .order-table .divFill .ax-form tbody tr:first-child td,
body.ui-v2 .analiza-list .order-table .divFill .ax-form tr.no-border td { border-top: none; }
body.ui-v2 .analiza-list .order-table .divFill .ax-form tbody tr:hover td { background: #F6FAFA !important; }
body.ui-v2 .analiza-list .order-table .divFill .ax-form td.ax-name { font-weight: 500; }
body.ui-v2 .analiza-list .order-table .divFill .ax-form td.bold { padding-top: 8px; font-weight: 600; color: var(--primary-700); }
body.ui-v2 .analiza-list .order-table .divFill .ax-form .valid-value { font-weight: 600; }
body.ui-v2 .analiza-list .order-table .divFill .ax-form .valid-value:hover { font-size: inherit; text-decoration: underline; }
body.ui-v2 .analiza-list .order-table .divFill .ax-form tfoot td { padding: 6px 8px 2px; font-size: 12px; color: var(--text-2); }
body.ui-v2 .analiza-list .order-table .divFill .ax-form tfoot td span { color: var(--text-3); }

/* ------------------------------------------------------------------ microbiology results page: compact vertical rhythm (less scrolling on 768px screens) */
body.ui-v2 .biolog-page .page-header { margin-bottom: 8px; }
body.ui-v2 .biolog-page .page-title { font-size: 20px; }
body.ui-v2 .biolog-page .page-meta { margin-top: 4px; }
body.ui-v2 .biolog-page .tab-row { margin-bottom: 8px; }
body.ui-v2 .biolog-page .card { margin-bottom: 10px; }
body.ui-v2 .biolog-page .bx-organism-card > .card-head { display: none; }
body.ui-v2 .biolog-page .bx-organism-card > .card-body { padding: 12px 16px; }
body.ui-v2 .biolog-page .bx-organism-layout { gap: 16px; }
body.ui-v2 .biolog-page .bx-organism-side .form-grid { gap: 8px 12px; }
body.ui-v2 .biolog-page .bx-table-card .card-head { padding: 6px 14px; min-height: 0; }
body.ui-v2 .biolog-page .bx-table-card .card-head h2 { font-size: 13px; }
body.ui-v2 .biolog-page .data-table thead td { padding: 6px 10px; }
/* sensitivity options stay on one line: the row used to wrap into three lines (~100px per antibiotic) */
body.ui-v2 .biolog-page #bxItemsTable tbody td { padding: 2px 5px; }
body.ui-v2 .biolog-page #bxItemsTable tbody td:has(label.check) { white-space: nowrap; }
body.ui-v2 .biolog-page #bxItemsTable tbody td:nth-child(1),
body.ui-v2 .biolog-page #bxItemsTable tbody td:nth-child(2) { width: 1%; white-space: nowrap; }
body.ui-v2 .biolog-page #bxItemsTable tbody td:nth-child(4) { width: 1%; }
body.ui-v2 .biolog-page .data-table td label.check { height: 26px; padding: 0 6px; margin: 1px 0; font-size: 12px; }
body.ui-v2 .biolog-page .data-table td label.check.w50 { min-width: 42px; }
body.ui-v2 .biolog-page .bx-extra-card > .card-body { padding: 8px 16px; }
body.ui-v2 .biolog-page .bx-actions { padding: 8px 16px; }
body.ui-v2 .biolog-page #bxItemsTable tbody td:has(label.check) { width: 1%; }
body.ui-v2 .biolog-page #bxItemsTable tbody td:has(label.check) label.check + label.check { margin-left: 2px; }
body.ui-v2 .biolog-page .data-table td label.check.w50 { min-width: 38px; }
body.ui-v2 .biolog-page .bx-items-layout.with-idn { grid-template-columns: minmax(0, 1fr) minmax(300px, 30%); }
body.ui-v2 .biolog-page #bxItemsTable tbody td { padding: 1px 5px; }
body.ui-v2 .biolog-page .data-table td label.check { height: 24px; }
body.ui-v2 .biolog-page .bx-items-layout.with-idn { grid-template-columns: minmax(0, 1fr) minmax(300px, 33%); }
/* organism table: tighter rows and smaller add-row inputs */
body.ui-v2 .biolog-page #tblOrganismList tbody td { padding: 4px 10px; }
body.ui-v2 .biolog-page #tblOrganismList tfoot td { padding: 5px 10px; }
body.ui-v2 .biolog-page #tblOrganismList tfoot input[type=text],
body.ui-v2 .biolog-page #tblOrganismList tfoot select { height: 28px; padding: 0 8px; border-radius: 7px; font-size: 12.5px; }
body.ui-v2 .biolog-page #tblOrganismList tfoot a.small-btn.save { height: 26px; width: 26px; }
body.ui-v2 .biolog-page #bxItemsTable tfoot td { padding: 5px 8px; }
body.ui-v2 .biolog-page #bxItemsTable tfoot input[type=text],
body.ui-v2 .biolog-page #bxItemsTable tfoot select { height: 28px; padding: 0 8px; border-radius: 7px; font-size: 12.5px; }
/* notes / doctor row under the results: smaller controls */
body.ui-v2 .biolog-page .bx-extra-grid select { height: 28px; padding: 0 26px 0 8px; font-size: 12.5px; border-radius: 7px; }
body.ui-v2 .biolog-page .bx-extra-grid textarea { min-height: 28px; height: 28px; padding: 4px 8px; line-height: 18px; font-size: 12.5px; border-radius: 7px; }
body.ui-v2 .biolog-page .bx-extra-grid textarea:focus { height: 100px; }
body.ui-v2 .biolog-page .bx-extra-grid .field > label { margin-bottom: 2px; }
body.ui-v2 .biolog-page .bx-actions .btn { height: 30px; padding: 0 12px; font-size: 12.5px; border-radius: 7px; }
/* identification table: same row density as the antibiotics table */
body.ui-v2 .biolog-page #idItemsTable tbody td { padding: 1px 8px; }
body.ui-v2 .biolog-page #idItemsTable tbody td:first-child { padding-left: 10px; }
/* sensitivity / P-N options: unchecked are flat light-grey pills, only the checked one keeps the teal outline */
body.ui-v2 .biolog-page .data-table td label.check { border-color: transparent; background: #F4F6F9; color: var(--text-2); }
body.ui-v2 .biolog-page .data-table td label.check:hover { background: #EAEEF3; color: var(--text); }
body.ui-v2 .biolog-page .data-table td label.check:has(input:checked) { border-color: rgba(15, 139, 141, .4); background: var(--primary-soft); color: var(--primary-700); }
body.ui-v2 .biolog-page .bx-items-card { margin-bottom: 6px; }
body.ui-v2 .biolog-page .bx-extra-card { margin-top: 0; }
body.ui-v2 .biolog-page .bx-extra-card > .card-body { padding: 6px 16px 8px; }
body.ui-v2 .biolog-page .bx-actions { padding: 6px 16px; }
body.ui-v2 .biolog-page .bx-table-card > .card-head { display: none; }
body.ui-v2 .biolog-page #bxItemsTable thead td:first-child,
body.ui-v2 .biolog-page #bxItemsTable tbody td:first-child,
body.ui-v2 .biolog-page #bxItemsTable tfoot td:first-child { text-align: center; }
/* antibiotic name column takes only the width it needs; the options column absorbs the rest (left-aligned) */
body.ui-v2 .biolog-page #bxItemsTable tbody td:nth-child(3) { width: 1%; white-space: nowrap; padding-right: 24px; }
body.ui-v2 .biolog-page #bxItemsTable tbody td:has(label.check) { width: auto; }
body.ui-v2 .biolog-page #bxItemsTable tfoot td:nth-child(3) input[type=text] { min-width: 200px; }
/* antibiotic autocomplete list must float over the card bottom and the notes card below */
body.ui-v2 .biolog-page .bx-items-card,
body.ui-v2 .biolog-page .bx-table-card,
body.ui-v2 .biolog-page .bx-table-card .table-scroll { overflow: visible; }
body.ui-v2 .biolog-page .bx-table-card { position: relative; z-index: 2; }
body.ui-v2 .biolog-page .data-table tfoot .filter-data .filter-list { z-index: 50; }
body.ui-v2 .request-list td.req-time { white-space: nowrap; font-variant-numeric: tabular-nums; }

/* ------------------------------------------------------------------ analysis configuration (AxSettings::showAxNameForm) */
body.ui-v2 .axname-page .form-entry { float: none; width: auto; margin: 0; padding: 0; border: none; background: none; }
body.ui-v2 .axname-layout { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: 16px; align-items: start; }
body.ui-v2 .axname-page .card { margin: 0; }
body.ui-v2 .axname-page .card-foot { display: flex; gap: 8px; }
body.ui-v2 .axname-page .choice-group { display: flex; flex-wrap: wrap; gap: 6px; }
body.ui-v2 .axname-page .choice-group label.check { width: auto; height: 36px; padding: 0 12px 0 10px; }
body.ui-v2 .axname-page .axname-devices .data-table tbody td { padding: 6px 12px; }
body.ui-v2 .axname-page .axname-devices .data-table td a.edit-item,
body.ui-v2 .axname-page .axname-devices .data-table td a.del-item { float: none; display: inline-block; }
body.ui-v2 .axname-page .axn-editor { border-top: 1px solid var(--border); background: var(--surface-2); padding: 14px 16px 12px; }
/* the device sub-form arrives by AJAX as legacy .form-item blocks: shown as fields (label above input) */
body.ui-v2 .axname-page #axnAjaxForm .form-item { float: none; width: auto; margin: 0; padding: 0; min-width: 0; }
body.ui-v2 .axname-page #axnAjaxForm .form-item > label { display: block; float: none; width: auto; margin: 0 0 5px; font-size: 12px; font-weight: 500; color: var(--text-2); }
body.ui-v2 .axname-page #axnAjaxForm .form-item:last-child { grid-column: 1 / -1; display: flex; flex-wrap: wrap; gap: 6px; }
body.ui-v2 .axname-page #axnAjaxForm .form-item:last-child > label:not(.check) { display: none; }
body.ui-v2 .axname-page #axnAjaxForm .form-item > input[type=text],
body.ui-v2 .axname-page #axnAjaxForm .form-item > select {
	box-sizing: border-box; width: 100%; height: 34px; margin: 0; padding: 0 10px; float: none;
	border: 1px solid var(--border-strong); border-radius: 8px; background: var(--surface); font: 13px var(--font); color: var(--text);
}
body.ui-v2 .axname-page #axnAjaxForm .form-item > input:focus,
body.ui-v2 .axname-page #axnAjaxForm .form-item > select:focus { outline: none; border-color: var(--primary); box-shadow: 0 0 0 3px var(--primary-ring); }
body.ui-v2 .axname-page #axnAjaxForm label.check {
	display: inline-flex; align-items: center; gap: 6px; float: none; width: auto !important; height: 32px; margin: 0; padding: 0 10px;
	border: 1px solid var(--border-strong); border-radius: 8px; background: var(--surface); font-size: 12.5px; font-weight: 400; color: var(--text); cursor: pointer;
}
body.ui-v2 .axname-page #axnAjaxForm label.check input { width: 14px; height: 14px; margin: 0; float: none; accent-color: var(--primary); }
body.ui-v2 .axname-page #axnAjaxForm label.check:has(input:checked) { border-color: var(--primary); background: var(--primary-soft); color: var(--primary-700); }
body.ui-v2 .axname-page .axn-editor .form-actions { display: flex; align-items: center; gap: 8px; margin: 12px 0 0; }
body.ui-v2 .axname-page .axn-editor .form-actions-note { font-size: 12px; color: var(--text-3); }
@media (max-width: 1100px) { body.ui-v2 .axname-layout { grid-template-columns: 1fr; } }
body.ui-v2 .axname-page .axname-devices .data-table thead td { padding: 8px 8px; white-space: normal; }
body.ui-v2 .axname-page .axname-devices .data-table tbody td { padding: 5px 8px; }
body.ui-v2 .axname-page .axname-devices .data-table tbody td:nth-child(n+9) { width: 32px; padding: 0 2px; text-align: center; }

/* topbar pill shown while a staff user is inside a clinic session (origin/loginas) */
body.ui-v2 .top-links .pill.impersonating { background: var(--warning-soft); border-color: rgba(181, 71, 8, .35); color: var(--warning); font-weight: 600; }
body.ui-v2 .top-links .pill.impersonating:hover { background: #FBEFD9; }
