/* Ensure dropdown hover/active colors use brand red instead of Bootstrap blue */
:root {
	--bs-dropdown-link-hover-bg: rgba(220,53,69,0.12);
	--bs-dropdown-link-hover-color: #a52834;
	--bs-dropdown-link-active-bg: rgba(220,53,69,0.12);
	--bs-dropdown-link-active-color: #a52834;

	/* MDB (Material Design for Bootstrap) uses its own variables in dropdowns */
	--mdb-dropdown-link-hover-bg: rgba(220,53,69,0.12);
	--mdb-dropdown-link-active-bg: rgba(220,53,69,0.12);
	--mdb-highlight-bg-color: rgba(220,53,69,0.12);
}
.grecaptcha-badge {display: none !important;}
.shadow-soft{box-shadow:0 10px 30px rgba(16,24,40,.06),0 2px 6px rgba(16,24,40,.06)}
.hero-bg{background: #d44148; /*radial-gradient(1200px 400px at 80% -100px, rgba(230,0,0,.08), transparent 60%),linear-gradient(#fff,#fff);border-bottom:1px solid #e6e7eb*/}

/* App UI depth tokens (light defaults). Prefer using variables so dark mode is consistent. */
:root {
	--app-surface-0: #f6f7f9;
	--app-surface-1: #ffffff;
	--app-surface-2: #fbfbfc;
	--app-border-subtle: rgba(16,24,40,.12);
	--app-border-strong: rgba(16,24,40,.18);
	--app-shadow-xs: 0 1px 2px rgba(16,24,40,.06);
	--app-shadow-sm: 0 10px 26px rgba(16,24,40,.08), 0 2px 8px rgba(16,24,40,.06);
	--app-shadow-md: 0 18px 42px rgba(16,24,40,.14), 0 4px 14px rgba(16,24,40,.10);
	--app-panel-shadow: 0 0 0 1px rgba(16,24,40,.06);
	--app-glow: 0 0 0 1px rgba(220,53,69,.12), 0 10px 26px rgba(220,53,69,.10);
	--app-grad-surface: linear-gradient(180deg, rgba(255,255,255,.92), rgba(255,255,255,1));
	--app-grad-header: linear-gradient(180deg, rgba(16,24,40,.05), rgba(16,24,40,0));
	--app-table-head-bg: #dedede;
	--app-table-head-text: #111827;
	--app-table-striped-bg: rgba(16,24,40,.02);
	--app-table-hover-bg: rgba(220,53,69,.08);
	--app-table-hover-bg-strong: rgba(220,53,69,.13);
}

/* Page background (light): subtle red tint + depth */
html:not([data-bs-theme='dark']) body,
html:not([data-bs-theme='dark']) body.bg-white {
	background-color: var(--app-surface-0) !important;
	background-image:
		radial-gradient(900px 420px at 12% -10%, rgba(220,53,69,.10), transparent 55%),
		radial-gradient(900px 420px at 95% 0%, rgba(16,24,40,.05), transparent 55%),
		linear-gradient(180deg, rgba(255,255,255,.55), rgba(255,255,255,0));
	background-attachment: fixed;
}
.bg-vznik {background-color: #CF142B; color: #fff; min-width: 4rem;}
.bg-prijato {background-color: #227AB0; color: #fff; min-width: 4rem;}
.bg-vyreseno {background-color: #92AF04; color: #fff; min-width: 4rem;}
.bg-uzavreno {background-color: #717171; color: #fff; min-width: 4rem;}
.bg-zahajeno {background-color: #EC7505; color: #fff; min-width: 4rem;}
/* Card depth & polish */
.card {
	border-radius: .9rem;
	border: 1px solid var(--app-border-subtle);
	box-shadow: var(--app-shadow-sm);
	background-color: var(--app-surface-1);
	background-image: var(--app-grad-surface);
	background-clip: padding-box;
	overflow: visible;
	transition: box-shadow .18s ease, transform .18s ease, border-color .18s ease;
}

/* Ensure inner list-groups/tables don't visually "square off" rounded card corners */
.card > .list-group.list-group-flush {
	border-bottom-left-radius: inherit;
	border-bottom-right-radius: inherit;
	overflow: hidden;
}
.card > .list-group.list-group-flush > .list-group-item:last-child {
	border-bottom: 0;
	border-bottom-left-radius: inherit;
	border-bottom-right-radius: inherit;
}
.card .table {
	margin-bottom: 0;
}
.card .table tbody tr:last-child > * {
	border-bottom: 0;
}
.card > .card-header {
	background: var(--app-grad-header);
	border-bottom: 1px solid var(--app-border-subtle);
}
.card:hover {
	box-shadow: var(--app-shadow-md);
	border-color: var(--app-border-strong);
	transform: translateY(-1px);
}
.info-list dt,
.info-list dd {
  min-height: 32px;
  display: flex;
  align-items: center;
  margin-bottom: 0; 
}
@media (prefers-reduced-motion: reduce) {
	.card { transition: none; }
	.card:hover { transform: none; }
}

/* Table depth + distinct hover color (separate from striped) */
.table-responsive {
	border-radius: .9rem;
	border: 1px solid var(--app-border-subtle);
	background: var(--app-surface-1);
	box-shadow: var(--app-panel-shadow);
}
.table-wrap,
#req-tablewrap,
#users-tablewrap,
#dev-tablewrap {
	border-radius: .9rem;
	border: 1px solid var(--app-border-subtle);
	background: var(--app-surface-1);
	box-shadow: var(--app-panel-shadow);
	overflow-x: auto;
}
.table {
	--bs-table-striped-bg: var(--app-table-striped-bg);
	--bs-table-hover-bg: var(--app-table-hover-bg);
	background: var(--app-surface-1);
	border: 1px solid var(--app-border-subtle);
	border-radius: .9rem;
	box-shadow: var(--app-panel-shadow);
	border-collapse: separate;
	border-spacing: 0;
}
/* When a table is inside a wrapper, the wrapper provides border/radius/shadow */
.table-responsive > .table,
.table-wrap > .table,
#req-tablewrap > .table,
#users-tablewrap > .table,
#dev-tablewrap > .table {
	border: 0;
	border-radius: 0;
	box-shadow: none;
	background: transparent;
}
/* Make hover clearly visible even when striped is enabled */
.table.table-hover > tbody > tr:hover > * {
	background-color: var(--app-table-hover-bg-strong) !important;
}
.table.table-hover > tbody > tr > * {
	transition: background-color .12s ease;
}
.table > :not(caption) > * > * {
	border-bottom-color: rgba(16,24,40,.10);
}

/* Make all headers consistent (typography + background) */
.table thead th {
	font-weight: 600;
	letter-spacing: .01em;
}
.table thead.table-light th {
	background-color: var(--app-table-head-bg);
	color: var(--app-table-head-text);
}
.table thead a {
	color: inherit;
}
.table thead a:hover {
	color: #a52834;
}

/* Table header: slightly more premium look */
.table thead.table-light th {
	background-image: linear-gradient(180deg, rgba(255,255,255,.65), rgba(255,255,255,0));
}

/* Buttons: add gentle depth to primary destructive action */
.btn-danger {
	background-image: linear-gradient(180deg, rgba(255,255,255,.16), rgba(255,255,255,0));
	box-shadow: 0 8px 16px rgba(220,53,69,.14);
}
.btn-danger:hover {
	box-shadow: 0 12px 22px rgba(220,53,69,.18);
}
.btn-outline-danger:hover {
	box-shadow: 0 10px 18px rgba(220,53,69,.12);
}
/* Avoid forcing global horizontal hiding so responsive tables can scroll */
html, body { max-width: 100%; }
/* Improve scrollbars on touch devices and make native scrollbars for table-wraps thicker */
.table-responsive::-webkit-scrollbar, #req-tablewrap::-webkit-scrollbar, #users-tablewrap::-webkit-scrollbar, #dev-tablewrap::-webkit-scrollbar { height: 14px; }
.table-responsive::-webkit-scrollbar-thumb, #req-tablewrap::-webkit-scrollbar-thumb, #users-tablewrap::-webkit-scrollbar-thumb, #dev-tablewrap::-webkit-scrollbar-thumb { background: rgba(0,0,0,.18); border-radius: 8px; }
.table-responsive::-webkit-scrollbar-track, #req-tablewrap::-webkit-scrollbar-track, #users-tablewrap::-webkit-scrollbar-track, #dev-tablewrap::-webkit-scrollbar-track { background: transparent; }

/* Firefox: prefer visible/native thicker scrollbars for these wrappers */
@supports (-moz-appearance: none) {
	.table-responsive, .table-wrap, #req-tablewrap, #users-tablewrap, #dev-tablewrap {
		scrollbar-width: auto; /* make it thicker than 'thin' */
		scrollbar-color: rgba(0,0,0,.18) transparent;
	}
}
/* Table improvements and compaction */
.table td, .table th { vertical-align: middle; padding:.4rem .5rem; }
.table { font-size:.875rem; }
/* Allow wrapping by default; use truncation/wrapping utilities per-cell where needed */
.table th, .table td { white-space: normal; }
.cell-nowrap { white-space: nowrap; }
.cell-wrap { white-space: normal; }
.table-sm td, .table-sm th { padding:.3rem .4rem; }
/*.form-control, .form-select, .btn { padding:.375rem .5rem; }*/
.btn { --bs-btn-padding-y:.375rem; --bs-btn-padding-x:.5rem; }
.card-body { padding: .9rem; }
.text-truncate-2 { display: -webkit-box; -webkit-line-clamp: 2; line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }

/* Show a red asterisk for required fields inside input-group */
.input-group,
.form-label {
  position: relative;
}
.input-group:has(input[required], select[required], textarea[required])::after {
  content: '*';
  position: absolute;
  top: 0;
  right: 0.35rem;
  color: var(--brand-red, #dc3545);
  font-weight: 700;
  pointer-events: none;
}
.form-label:has(~ input[required],
                ~ select[required],
                ~ textarea[required])::after {
  content: ' *';
  color: var(--brand-red, #dc3545);
  font-weight: 700;
}

/* Bubble-style validation (opt-in via .wsd-bubble-validation on the <form>)
   Render invalid-feedback as a small bubble BELOW the field, and reserve space under the field
   so stacked inputs never overlap. */

.wsd-bubble-validation .input-group.has-validation {
	position: relative;
}

/* Generic wrapper: direct form control followed by invalid-feedback */
.wsd-bubble-validation *:has(> .form-control + .invalid-feedback),
.wsd-bubble-validation *:has(> .form-select + .invalid-feedback),
.wsd-bubble-validation *:has(> textarea.form-control + .invalid-feedback),
.wsd-bubble-validation *:has(> input[type='file'].form-control + .invalid-feedback) {
	position: relative;
}

/* Bubble look */
.wsd-bubble-validation .invalid-feedback {
	pointer-events: none;
	display: none; /* Bootstrap toggles to display:block when invalid */
	background: rgba(220,53,69,.98);
	color: #fff;
	border-radius: .55rem;
	padding: .32rem .55rem;
	font-size: .75rem;
	line-height: 1.2;
	box-shadow: 0 12px 28px rgba(220,53,69,.18);
}

/* Position under input-group */
.wsd-bubble-validation .input-group.has-validation .invalid-feedback {
	position: absolute;
	left: 0;
	right: 0;
	top: calc(100% + .25rem);
	margin: 0;
	max-width: 100%;
	z-index: 6;
}

/* Position under plain controls */
.wsd-bubble-validation .form-control + .invalid-feedback,
.wsd-bubble-validation .form-select + .invalid-feedback,
.wsd-bubble-validation textarea.form-control + .invalid-feedback,
.wsd-bubble-validation input[type='file'].form-control + .invalid-feedback {
	position: absolute;
	left: 0;
	right: 0;
	top: calc(100% + .25rem);
	margin: 0;
	max-width: 100%;
	z-index: 6;
}

/* Arrow */
.wsd-bubble-validation .invalid-feedback::before {
	content: '';
	position: absolute;
	top: -7px;
	left: 1rem;
	border: 7px solid transparent;
	border-bottom-color: rgba(220,53,69,.98);
}

/* Reserve vertical space under invalid controls (prevents overlap with next field) */
.wsd-bubble-validation.was-validated .input-group.has-validation:has(.form-control:invalid),
.wsd-bubble-validation.was-validated .input-group.has-validation:has(.form-select:invalid),
.wsd-bubble-validation .input-group.has-validation:has(.form-control.is-invalid),
.wsd-bubble-validation .input-group.has-validation:has(.form-select.is-invalid) {
	margin-bottom: 1.65rem;
}

.wsd-bubble-validation.was-validated *:has(> .form-control:invalid + .invalid-feedback),
.wsd-bubble-validation.was-validated *:has(> .form-select:invalid + .invalid-feedback),
.wsd-bubble-validation.was-validated *:has(> textarea.form-control:invalid + .invalid-feedback),
.wsd-bubble-validation.was-validated *:has(> input[type='file'].form-control:invalid + .invalid-feedback),
.wsd-bubble-validation *:has(> .form-control.is-invalid + .invalid-feedback),
.wsd-bubble-validation *:has(> .form-select.is-invalid + .invalid-feedback),
.wsd-bubble-validation *:has(> textarea.form-control.is-invalid + .invalid-feedback),
.wsd-bubble-validation *:has(> input[type='file'].form-control.is-invalid + .invalid-feedback) {
	margin-bottom: 1.65rem;
}

@media (prefers-reduced-motion: no-preference) {
	.wsd-bubble-validation .invalid-feedback {
		animation: wsd-bubble-in .12s ease-out;
	}
	@keyframes wsd-bubble-in {
		from { opacity: 0; transform: translateY(-2px); }
		to { opacity: 1; transform: translateY(0); }
	}
}

/* Placeholder-style validation (opt-in via .wsd-placeholder-validation on the <form>)
   - inputs/textareas: message goes into placeholder
   - selects/files/etc: keep default Bootstrap invalid-feedback below (plain text)
*/
.wsd-placeholder-validation.was-validated input.wsd-placeholder-active:not([type='hidden']):not([type='file']):not([type='checkbox']):not([type='radio']) ~ .invalid-feedback,
.wsd-placeholder-validation.was-validated textarea.wsd-placeholder-active ~ .invalid-feedback,
.wsd-placeholder-validation input.wsd-placeholder-active.is-invalid:not([type='hidden']):not([type='file']):not([type='checkbox']):not([type='radio']) ~ .invalid-feedback,
.wsd-placeholder-validation textarea.wsd-placeholder-active.is-invalid ~ .invalid-feedback {
	display: none;
}

.wsd-placeholder-validation .wsd-placeholder-invalid::placeholder {
	color: #dc3545;
	opacity: 1;
}
/* Brand color adjustments: use Ricoh red */
:root { --brand-red: #dc3545; }
.btn-danger, .btn-outline-danger { --bs-btn-hover-bg:#bb2d3b; --bs-btn-active-bg:#a52834; }
/* Make all links use brand red where appropriate to avoid default blue links */
a, .nav-link, a.link-danger { color: var(--brand-red); }
a:hover, .nav-link:hover, .dropdown-item:hover, li:hover, .dropdown-item.active, .dropdown-item:active { color: #a52834; }
.form-control:focus, .form-select:focus, .btn:focus, .btn:active, .dropdown-item.active, .dropdown-item:active, .form-check-input:focus, .dropdown-item:focus, .bootstrap-select .dropdown-toggle:focus {border-color: rgba(220,53,69,.6) !important;box-shadow: 0 0 0 .2rem rgba(220,53,69,.25) !important;}

/* Some Bootstrap/MDB dropdown variants still force blue active background; override to brand red tint. */
.dropdown-toggle:active,
.dropdown-menu .dropdown-item:active,
.dropdown-menu .dropdown-item.active {
	background-color: rgba(220,53,69,0.15) !important;
	color: #a52834 !important;
}
.sort-arrow { font-size:.8em; opacity:.8; margin-left:.25rem; }
.pagination .page-link { color: var(--brand-red); }
.pagination .page-link:hover { color: #a52834; }
.pagination .active .page-link, .page-item.active .page-link { background-color: var(--brand-red); border-color: var(--brand-red); color: #fff; }
.nav-tabs .nav-link.active, .nav-tabs .nav-link:focus { color: var(--brand-red); }
a.link-danger { color: var(--brand-red); }
/* Red accents for checkboxes */
.form-check-input:checked { background-color: var(--brand-red); border-color: var(--brand-red); }
.form-check-input:focus { border-color: rgba(220,53,69,.5); box-shadow: 0 0 0 .25rem rgba(220,53,69,.25); }
/* Make the whole page use full width with compact paddings */
.container, .container-sm, .container-md, .container-lg, .container-xl, .container-xxl, .container-fluid {max-width: 100% !important; padding-left: 12px; padding-right: 12px;}
@media (min-width: 1200px) { 
.container, .container-fluid { padding-left: 16px; padding-right: 16px; } 
}
/* Navbar brand logo via CSS background */
.brand-logo-dark { display: none; }
.navbar.bg-reg { background:#d44148;}
nav.bg-reg .navbar-toggler { border-color: #fff; }
nav.bg-reg .navbar-toggler-icon { background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba(255,255,255,1)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); }
/* Utility widths override Bootstrap width:100% for specific controls */
.w-select-200 { width:200px !important; max-width:200px !important; }
.w-select-140 { width:140px !important; max-width:140px !important; }
.w-select-120 { width:120px !important; max-width:120px !important; }
.w-input-360 { width:360px !important; max-width:360px !important; }
/* Resizable columns and hideable columns (moved from inline <style> in device/index) */
th.resizable { position: relative; }
/* Visible grab handle for column resize */
th.resizable .col-resizer {position:absolute; top:0; right:-4px; width:12px; height:100%;cursor:col-resize; user-select:none;background-image: repeating-linear-gradient(to bottom,rgba(220,53,69,.35),rgba(220,53,69,.35) 4px,transparent 4px,transparent 8px);background-clip: content-box;padding-left:2px; padding-right:2px;opacity:.4;}
th.resizable .col-resizer:hover { background-color: rgba(220,53,69,.15); opacity:.9; }
[data-colkey][data-hidden="1"] { display:none; }
table.table-resizable { table-layout: fixed; }
/* Keep resizable tables sized to their column widths, so hiding columns doesn't stretch the first visible one. */
#dev-tablewrap > table.table-resizable,
#req-tablewrap > table.table-resizable,
#users-tablewrap > table.table-resizable {
	width: 100%;
	min-width: max-content;
}

@supports (-moz-appearance: none) {
	#dev-tablewrap > table.table-resizable,
	#req-tablewrap > table.table-resizable,
	#users-tablewrap > table.table-resizable {
		width: max-content;
		min-width: 100%;
	}
}
.truncate { display:block; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; }

/* Advanced filter row under <th> (table mode) */
thead tr.wsd-header-filters th {
	padding: .25rem .35rem;
	vertical-align: top;
	background: rgba(0,0,0,.02);
}
thead tr.wsd-header-filters .form-control,
thead tr.wsd-header-filters .form-select {
	min-height: 28px;
}

/* Sticky table header (for dev/req/users table wraps) */
:root {
	--wsd-sticky-top: 0px;
}

/* Keep header cells visible while scrolling page; top offset is set by JS based on sticky <header>. */
.wsd-sticky-thead thead th,
.wsd-sticky-thead thead td {
	position: sticky;
	top: var(--wsd-sticky-top);
	z-index: 5;
	background: var(--bs-body-bg);
	background-clip: padding-box;
}

/* Ensure the filter row stays above tbody as well (JS will set per-row top values). */
.wsd-sticky-thead thead tr.wsd-header-filters th {
	z-index: 4;
}

/* OR token badges (Enter → badge, × removal) */
.wsd-token-badges { display: none; max-width: 100%; }
.wsd-token-badges .wsd-token-badge { max-width: 100%; }
.wsd-token-badges .wsd-token-remove { line-height: 1; text-decoration: none; }

/* OR token box (badges rendered inside an input-like control) */
.wsd-tokenbox {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: .25rem;
	min-height: calc(1.5em + .5rem + 2px); /* matches .form-control-sm */
	padding: .25rem .5rem; /* matches .form-control-sm */
}
.wsd-tokenbox:focus-within {
	border-color: rgba(220,53,69,.6) !important;
	box-shadow: 0 0 0 .2rem rgba(220,53,69,.25) !important;
}
.wsd-tokenbox-badges {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: .25rem;
}
.wsd-tokenbox .wsd-token-badge {
	display: inline-flex;
	align-items: center;
	max-width: 100%;
	white-space: nowrap;
	font-size: .75rem;
	line-height: 1.2;
	padding: .15rem .35rem;
	margin: 0;
}
.wsd-tokenbox .wsd-token-remove {
	display: inline-flex;
	align-items: center;
	line-height: 1;
	text-decoration: none;
}
.wsd-tokenbox .wsd-token-remove i {
	font-size: .9em;
}
.wsd-tokenbox-entry {
	border: 0;
	outline: none;
	background: transparent;
	flex: 1 1 90px;
	min-width: 80px;
	padding: 0;
	margin: 0;
	font: inherit;
	line-height: inherit;
}
.wsd-tokenbox-entry::placeholder {
	opacity: .7;
}

/* Excel-like checkbox filter (click input → dropdown with search + Apply/Reset) */
.wsd-excel-filter-display[readonly] {
	cursor: pointer !important;
}
.wsd-excel-filter-panel {
	background: var(--bs-body-bg);
	color: var(--bs-body-color);
	border: 1px solid rgba(0,0,0,.15);
	border-radius: .5rem;
	box-shadow: 0 .5rem 1.25rem rgba(0,0,0,.15);
	padding: .5rem;
	overflow: hidden;
	/* layout */
	display: flex;
	flex-direction: column;
	gap: .5rem;
}
.wsd-excel-filter-header {
	flex: 0 0 auto;
}
.wsd-excel-filter-list {
	flex: 1 1 auto;
	overflow: auto;
	border: 1px solid rgba(0,0,0,.08);
	border-radius: .35rem;
	padding: .25rem .35rem;
}
.wsd-excel-filter-group {
	font-size: .72rem;
	font-weight: 700;
	letter-spacing: .04em;
	color: var(--bs-secondary-color);
	padding: .25rem 0;
	margin-top: .25rem;
	border-top: 1px solid rgba(0,0,0,.06);
}
.wsd-excel-filter-opt {
	margin: 0;
	padding-top: .15rem;
	padding-bottom: .15rem;
}
.wsd-excel-filter-opt .form-check-label {
	user-select: none;
}
.wsd-excel-filter-footer {
	flex: 0 0 auto;
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: .5rem;
	position: sticky;
	bottom: 0;
	background: var(--bs-body-bg);
	padding-top: .25rem;
}
.wsd-excel-filter-meta {
	font-size: .8rem;
	color: var(--bs-secondary-color);
}
.wsd-excel-filter-actions {
	display: inline-flex;
	gap: .5rem;
}

html[data-bs-theme='dark'] .wsd-excel-filter-panel {
	border-color: rgba(255,255,255,.18);
	box-shadow: 0 .6rem 1.4rem rgba(0,0,0,.55);
}
html[data-bs-theme='dark'] .wsd-excel-filter-list {
	border-color: rgba(255,255,255,.12);
}
html[data-bs-theme='dark'] .wsd-excel-filter-group {
	border-top-color: rgba(255,255,255,.10);
}

/* Disabled form controls: show not-allowed cursor */
input:disabled, select:disabled, textarea:disabled, button:disabled,
.form-control:disabled, .form-select:disabled,
input[readonly], select[readonly], textarea[readonly],
.form-control[readonly], .form-select[readonly] {
	cursor: not-allowed;
}

/* Dark theme: use neutral grey accents for tokenbox instead of red */
html[data-bs-theme='dark'] .wsd-tokenbox:focus-within {
	border-color: rgba(255,255,255,.22) !important;
	box-shadow: 0 0 0 .2rem rgba(255,255,255,.10) !important;
}
html[data-bs-theme='dark'] .wsd-tokenbox .wsd-token-remove {
	color: var(--brand-red) !important;
}
html[data-bs-theme='dark'] .wsd-tokenbox .wsd-token-remove:hover {
	color: #ff5c6b !important;
}
/* Overflow helpers toggled by JS to prevent phantom scrollbars */
.no-scroll { overflow-x: hidden !important; }
.scroll-x { overflow-x: auto !important; -webkit-overflow-scrolling: touch; }
/* Global-only mode: hide native horizontal scrollbars on table wraps */
html.hscroll-global body .table-wrap,
html.hscroll-global body #req-tablewrap,
html.hscroll-global body #dev-tablewrap,
html.hscroll-global body #users-tablewrap {
	overflow-x: hidden !important;
}
/* Status badges for request detail */
.status-badge { font-size: .8rem; padding: .35em .5em; border-radius: .4rem; }
/* Long text expander for event text (show more/less toggle) */
.clamp-lines { position: relative; display: -webkit-box; -webkit-line-clamp: 1; line-clamp: 1; -webkit-box-orient: vertical; overflow: hidden; }
.clamp-2 { -webkit-line-clamp: 2; line-clamp: 2; }
.clamp-3 { -webkit-line-clamp: 3; line-clamp: 3; }
.clamp-lines::after { content: ''; position: absolute; left: 0; right: 0; bottom: 0; height: 0; background: transparent; pointer-events: none; }
.clamp-lines.expanded { display: block; -webkit-line-clamp: initial; line-clamp: initial; -webkit-box-orient: initial; max-height: none; }
.clamp-lines.expanded::after { display: none; }
.event-text-toggle { display:inline-block; margin-top:.25rem; font-size:.85rem; }
/* Arrow toggle at the end of event text cell */
.event-text-cell { position: relative; }
.event-text { padding-right: 44px; white-space: pre-wrap; overflow-wrap: anywhere; word-break: break-word; }
.wsd-longtext { white-space: pre-wrap; overflow-wrap: anywhere; word-break: break-word; }
/* Full-height red toggle area on the right */
.event-text-toggle.arrow-toggle {position: absolute;right: 0;top: 0;bottom: 0;width: 40px;background: var(--brand-red);color: #fff;border: 0;padding: 0;margin:0;line-height: 1;cursor: pointer;display: flex;align-items: center;justify-content: center;}
.event-text-toggle.arrow-toggle:hover { filter: brightness(0.95); }
.event-text-toggle.arrow-toggle:active { filter: brightness(0.9); }
.event-text-toggle.arrow-toggle .arrow { font-size: 18px; display: inline-block; }
/* Rotate only the arrow wrapper so FA beat animation on the icon is preserved */
.event-text-toggle.arrow-toggle .arrow-rotator { display:inline-block; transition: transform .22s ease; transform: rotate(0deg); }
.event-text-toggle.arrow-toggle[aria-expanded="true"] .arrow-rotator { transform: rotate(180deg); }
/* Optional text label inside toggle; hidden on larger screens by default */
.event-text-toggle-label { display: none; margin-left: .4rem; font-weight: 500; }
/* Larger, easier touch targets for show/hide column checklists */
.checklist-touch .form-check { display:flex; align-items:center; gap:.5rem; padding: .6rem .8rem; border: 1px solid #eee; border-radius: .5rem; margin-bottom: .4rem; background:#fff; transition: background-color .15s, border-color .15s; }
.checklist-touch .form-check-input { width: 1.2rem; height: 1.2rem; margin-top: .1rem; }
.checklist-touch .form-check-label { padding-left: .25rem; user-select:none; }
.checklist-touch .form-check:hover { background: rgba(220,53,69,.05); }
.checklist-touch .form-check-input:checked { border-color: var(--brand-red); background-color: var(--brand-red); }
.checklist-touch .form-check-input:checked ~ .form-check-label { font-weight: 500; }
@media (max-width: 576px) {
	.checklist-touch .form-check-label { font-size: 1rem; }
}
/* bootstrap-select theming (red focus, czech actions, match highlight) */
.bootstrap-select .dropdown-item.active, .bootstrap-select .dropdown-item:active,
.bootstrap-select .dropdown-item:focus { background-color: rgba(220,53,69,.15); color: #212529; }
.bootstrap-select .bs-searchbox .form-control:focus { border-color: rgba(220,53,69,.6); box-shadow: 0 0 0 .2rem rgba(220,53,69,.25); }
.bootstrap-select .dropdown-toggle { border-color: #ced4da; }
.bootstrap-select .dropdown-toggle:focus { border-color: rgba(220,53,69,.6); box-shadow: 0 0 0 .2rem rgba(220,53,69,.25); }
.bootstrap-select .match-mark { background: var(--brand-red); color: #fff; padding: 0 .15rem; border-radius: .2rem; }
/* Generic match highlight (used also in Dokumentace search) */
.match-mark { background: var(--brand-red); color: #fff; padding: 0 .15rem; border-radius: .2rem; }
/* Scroolbar styling */
::-webkit-scrollbar {width: 12px;}
::-webkit-scrollbar-track {background: #ffffff;}
::-webkit-scrollbar-thumb {background-color: #bb2d3b;border-radius: 6px;border: 3px solid #ffffff;}
::-webkit-scrollbar-thumb:hover {background-color: #ff3b2e;}
* {scrollbar-width: thin;scrollbar-color: #bb2d3b #ffffff;}
/* Fixed global horizontal scrollbar (hidden unless wide table detected) */
#global-hscroll-bar {position: fixed;left: 0;right: 0;bottom: env(safe-area-inset-bottom);z-index: 1025;display: none;background: #fff;border-top: 1px solid #dee2e6;box-shadow: 0 -1px 2px rgba(0,0,0,0.06); height: 12px;}
#global-hscroll-inner {width: 100%;height: 100%;overflow-x: auto;overflow-y: hidden;-webkit-overflow-scrolling: touch;touch-action: pan-x;overscroll-behavior-x: contain;}
#global-hscroll-spacer { display:none; }
@media (max-width: 768px) {
	#global-hscroll-bar { height: 34px; }
}
@media (hover: none) and (pointer: coarse) {
	#global-hscroll-bar {bottom: 0;padding-bottom: env(safe-area-inset-bottom);}
}
/* Hide native table scrollbar visuals on mobile when in global-only mode (keep swipe functional) */
@media (hover: none) and (pointer: coarse) {
	html.hscroll-global body .table-wrap,
	html.hscroll-global body #req-tablewrap,
	html.hscroll-global body #dev-tablewrap,
	html.hscroll-global body #users-tablewrap {
		overflow-x: auto !important; /* enable swipe scrolling */
		-webkit-overflow-scrolling: touch;
		scrollbar-width: none; /* Firefox: hide bar visuals */
	}
	html.hscroll-global body .table-wrap::-webkit-scrollbar,
	html.hscroll-global body #req-tablewrap::-webkit-scrollbar,
	html.hscroll-global body #dev-tablewrap::-webkit-scrollbar,
	html.hscroll-global body #users-tablewrap::-webkit-scrollbar {
		height: 0 !important; /* WebKit: hide bar visuals */
	}
}
/* Always show custom global scrollbar track/thumb so desktop users can see it */
#global-hscroll-bar .ghs-track { position:absolute; left:8px; right:8px; top:50%; height:8px; transform:translateY(-50%); background: var(--bs-secondary-bg,#f1f3f5); border-radius: 8px; pointer-events: none; opacity: .95; display: block; }
#global-hscroll-bar .ghs-thumb { position:absolute; top:50%; height:8px; transform:translateY(-50%); background: #bb2d3b; border-radius: 8px; min-width: 28px; pointer-events: none; opacity: .98; box-shadow: 0 0 0 1px rgba(0,0,0,.06); display: block; }
@media (any-pointer: coarse) {
	html.hscroll-global body .table-wrap,
	html.hscroll-global body #req-tablewrap,
	html.hscroll-global body #dev-tablewrap,
	html.hscroll-global body #users-tablewrap { -webkit-overflow-scrolling: touch; }
}
#global-hscroll-inner::-webkit-scrollbar { height:14px; }
#global-hscroll-inner::-webkit-scrollbar-track { background:var(--bs-secondary-bg,#f8f9fa); }
#global-hscroll-inner::-webkit-scrollbar-thumb { background:var(--bs-gray-400,#adb5bd); border-radius:8px; }
#global-hscroll-inner::-webkit-scrollbar-thumb:hover { background:var(--bs-gray-500,#6c757d); }
.brand-logo-dark { display: none; }
html[data-bs-theme='dark'] .brand-logo-light { display: none !important; }
html[data-bs-theme='dark'] .brand-logo-dark { display: inline-block !important; }

/* Dark mode tokens (Bootstrap v5 theme switching: html[data-bs-theme='dark']) */
html[data-bs-theme='dark'] {
	--app-surface-0: #0f1113;
	--app-surface-1: #15181d;
	--app-surface-2: #1b1f25;
	--app-border-subtle: rgba(255,255,255,.10);
	--app-border-strong: rgba(255,255,255,.16);
	--app-shadow-xs: 0 1px 2px rgba(0,0,0,.55);
	--app-shadow-sm: 0 12px 26px rgba(0,0,0,.45), 0 2px 10px rgba(0,0,0,.35);
	--app-shadow-md: 0 22px 44px rgba(0,0,0,.55), 0 6px 18px rgba(0,0,0,.40);
	--app-panel-shadow: 0 0 0 1px rgba(255,255,255,.08);
	--app-glow: 0 0 0 1px rgba(220,53,69,.20), 0 16px 32px rgba(220,53,69,.10);
	--app-grad-surface: linear-gradient(180deg, rgba(255,255,255,.06), rgba(255,255,255,.02));
	--app-grad-header: linear-gradient(180deg, rgba(255,255,255,.06), rgba(255,255,255,0));
	--app-table-head-bg: #1f242b;
	--app-table-head-text: rgba(255,255,255,.92);
	--app-table-striped-bg: rgba(255,255,255,.03);
	--app-table-hover-bg: rgba(220,53,69,.16);
	--app-table-hover-bg-strong: rgba(220,53,69,.22);
}

/* Page background (dark): subtle red glow + vignette */
html[data-bs-theme='dark'] body,
html[data-bs-theme='dark'] body.bg-white {
	background-color: var(--app-surface-0) !important;
	background-image:
		radial-gradient(900px 420px at 12% -10%, rgba(220,53,69,.18), transparent 58%),
		radial-gradient(900px 420px at 95% 0%, rgba(255,255,255,.05), transparent 58%),
		linear-gradient(180deg, rgba(0,0,0,.25), rgba(0,0,0,0));
	background-attachment: fixed;
}
/* Dark mode scrollbar styling */
[data-bs-theme="dark"] ::-webkit-scrollbar {width: 12px;}
[data-bs-theme="dark"] ::-webkit-scrollbar-track {background: #1e1e1e;}
[data-bs-theme="dark"] ::-webkit-scrollbar-thumb {background-color: #ff6f61;border-radius: 6px;border: 3px solid #1e1e1e;}
[data-bs-theme="dark"] ::-webkit-scrollbar-thumb:hover {background-color: #ff3b2e;}
[data-bs-theme="dark"] * {scrollbar-width: thin;scrollbar-color: #ff6f61 #1e1e1e;}
/* Dark mode overrides using Bootstrap v5 theme switching */
[data-bs-theme='dark'] .brand-logo-light { display: none !important; }
[data-bs-theme='dark'] .brand-logo-dark { display: inline-block !important; }
[data-bs-theme="dark"] .btn-outline-secondary { color:#ffffff;border-color: #888888; }
[data-bs-theme="dark"] body.bg-white { background-color: #121416 !important; color: var(--bs-body-color); }
[data-bs-theme="dark"] header.bg-white { background-color: rgba(33,37,41,.85) !important; }
[data-bs-theme="dark"] .bg-white { background-color: #1e2125 !important; }
[data-bs-theme="dark"] .bg-light { background-color: #2b3035 !important; }
[data-bs-theme="dark"] .border-bottom { border-bottom-color: rgba(255,255,255,.15) !important; }
[data-bs-theme="dark"] .navbar-light .navbar-nav .nav-link { color: var(--bs-body-color); }
[data-bs-theme="dark"] .dropdown-menu { --bs-dropdown-bg: #2b3035; --bs-dropdown-link-color: var(--bs-body-color); --bs-dropdown-link-hover-bg: rgba(220,53,69,0.18); }
[data-bs-theme="dark"] .modal-content { background-color: #212529; }
[data-bs-theme="dark"] .card { background-color: var(--app-surface-1); border-color: var(--app-border-subtle); box-shadow: var(--app-shadow-sm); }
[data-bs-theme="dark"] .card > .card-header { background: linear-gradient(180deg, rgba(255,255,255,.04), rgba(255,255,255,0)); border-bottom-color: var(--app-border-subtle); }
[data-bs-theme="dark"] .card:hover { box-shadow: var(--app-shadow-md); border-color: var(--app-border-strong); }
[data-bs-theme="dark"] .form-control, [data-bs-theme="dark"] .form-select { background-color: #1c1f23; color: var(--bs-body-color); border-color: rgba(255,255,255,.15); }
[data-bs-theme="dark"] .form-control:disabled, [data-bs-theme="dark"] .form-select:disabled { background-color: #1a1d20; }
[data-bs-theme="dark"] .form-control::placeholder { color: rgba(255,255,255,.5); }
[data-bs-theme="dark"] .table { --bs-table-bg: transparent; --bs-table-striped-bg: rgba(255,255,255,.03); --bs-table-hover-bg: rgba(255,255,255,.05); color: var(--bs-body-color); }
[data-bs-theme="dark"] .table-responsive { border-color: var(--app-border-subtle); background: var(--app-surface-1); box-shadow: var(--app-panel-shadow); }
[data-bs-theme="dark"] .table-wrap,
[data-bs-theme="dark"] #req-tablewrap,
[data-bs-theme="dark"] #users-tablewrap,
[data-bs-theme="dark"] #dev-tablewrap { border-color: var(--app-border-subtle); background: var(--app-surface-1); box-shadow: var(--app-panel-shadow); }
[data-bs-theme="dark"] .table { --bs-table-striped-bg: var(--app-table-striped-bg); --bs-table-hover-bg: var(--app-table-hover-bg); }
[data-bs-theme="dark"] .table.table-hover > tbody > tr:hover > * { background-color: var(--app-table-hover-bg-strong) !important; }
[data-bs-theme="dark"] .table > :not(caption) > * > * { border-bottom-color: rgba(255,255,255,.10); }

[data-bs-theme="dark"] .table thead.table-light th {
	background-image: linear-gradient(180deg, rgba(255,255,255,.08), rgba(255,255,255,0));
}

[data-bs-theme="dark"] .btn-danger {
	background-image: linear-gradient(180deg, rgba(255,255,255,.10), rgba(255,255,255,0));
	box-shadow: 0 10px 18px rgba(0,0,0,.45);
}
[data-bs-theme="dark"] .btn-danger:hover {
	box-shadow: 0 14px 24px rgba(0,0,0,.55), 0 0 0 1px rgba(220,53,69,.18);
}
[data-bs-theme="dark"] .table .text-secondary { color: rgba(255,255,255,.55) !important; }
[data-bs-theme="dark"] .table thead a { color: /*var(--brand-red);*/ #ffffff; }
[data-bs-theme="dark"] .hero-bg { background: #d44148;/*radial-gradient(1200px 400px at 80% -100px, rgba(220,53,69,.12), transparent 60%), linear-gradient(#1e2125,#1e2125); border-bottom-color: rgba(255,255,255,.12); */}
[data-bs-theme="dark"] .bootstrap-select .dropdown-toggle { background-color: #1c1f23; color: var(--bs-body-color); border-color: rgba(255,255,255,.15); }
[data-bs-theme="dark"] .bootstrap-select .dropdown-item.active, [data-bs-theme="dark"] .bootstrap-select .dropdown-item:active, [data-bs-theme="dark"] .bootstrap-select .dropdown-item:focus { background-color: rgba(220,53,69,.2); color: #fff; }
[data-bs-theme="dark"] .match-mark { background: var(--brand-red); color: #fff; }
[data-bs-theme="dark"] .selectpicker + .dropdown-menu .bs-searchbox .form-control { background-color: #1c1f23; color: var(--bs-body-color); }
/*
[data-bs-theme="dark"] .navbar .dropdown-toggle:active,
[data-bs-theme="dark"] .navbar .dropdown-toggle.show,
[data-bs-theme="dark"] .navbar .dropdown-item:active,
[data-bs-theme="dark"] .navbar .dropdown-item.active {background-color: rgba(220,53,69,0.22) !important;color: #fff !important;}
[data-bs-theme="dark"] .dropdown-toggle:active, [data-bs-theme="dark"] .dropdown-item:active, [data-bs-theme="dark"] .dropdown-toggle.show, [data-bs-theme="dark"] .dropdown-item.active {background-color: rgba(220,53,69,0.25) !important;color: #fff !important;}*/
[data-bs-theme="dark"] .nav-link:active, [data-bs-theme="dark"] .nav-link.active, [data-bs-theme="dark"] .nav-link:focus, [data-bs-theme="dark"] .nav-link:focus-visible {background-color: rgba(220,53,69,0.22) !important;color: #fff !important;}
/* File manager */
@media all and (max-width: 965px) {
	.filemanager {margin: 30px auto 0;padding: 1px;}
}
/*Breadcrumps */
.filemanager {width: 95%;max-width:1340px;position: relative;}
.filemanager .breadcrumbs {color: #000;margin-left:10px;font-size: 13px;display:inline-block;}
.filemanager .breadcrumbs a:link span.folderName, .breadcrumbs a:visited span.folderName { color: #000; text-decoration: none; }
.filemanager .breadcrumbs a:hover { text-decoration: underline; }
.filemanager .breadcrumbs .arrow { color: #6a6a72; font-size: 12px; font-weight: 700; line-height: 20px; }
.filemanager .breadcrumbs span.folderName { color: #d44148; }
/* Search box */
.filemanager .search { position: absolute; padding-right: 30px; right: 0; font-size: 17px; color: #fff; display: block; width: 40px; height: 40px; }
.filemanager .search:before { content: ''; position: absolute; margin-top: 12px; width: 10px; height: 11px; border-radius: 50%; border: 2px solid #d44148; right: 8px; }
.filemanager .search:after { content: ''; width: 3px; height: 10px; background-color: #d44148; border-radius: 2px; position: absolute; top: 23px; right: 6px; -webkit-transform: rotate(-45deg); transform: rotate(-45deg); }
.filemanager .search input[type=search] { border-radius: 5px; color: #fff; background-color: #d44148; width: 250px; height: 44px; margin-left: -215px; padding-left: 20px; text-decoration-color: #fff; font-size: 16px; font-weight: 400; line-height: 20px; outline: none; border: none; padding-right: 10px; appearance: none; -webkit-appearance: none; }
::-webkit-input-placeholder { color: #fff; }
:-moz-placeholder { color: #fff; opacity: 1; }
::-moz-placeholder { color: #fff; opacity: 1; }
:-ms-input-placeholder { color: #fff; }
/*------------------------- Content area -------------------------*/
.filemanager .data { margin-top: 40px; z-index: -3; }
.filemanager .data li { border-radius: 10px; background-color: #d44148; width: 270px; height: 160px; list-style-type: none; margin: 10px; display: inline-block; position: relative; overflow: hidden; padding: 0.3em; z-index: 1; cursor: pointer; box-sizing: border-box; transition: 0.3s background-color; }
.filemanager .data li.files { width: 100%; height: 72px; margin: 0 10px; }
.filemanager .data li:hover { background-color: #42424E; }
.filemanager .data li a { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
.filemanager .data li .name { color: #ffffff; font-size: 15px; font-weight: 700; line-height: 20px; width: 100%; display: inline-block; position: absolute; overflow: hidden; text-overflow: ellipsis; text-align: center; top: 50px; }
.filemanager .data li.files .name { text-align: left; top: 28px; }
.filemanager .data li .details { color: #ccc; font-size: 13px; font-weight: 400; width: 100%; height: 10px; white-space: nowrap; text-align: right; position: absolute; bottom: 20px; right: 20px; display: inline-block; }
.filemanager .nothingfound { background-color: #373743; border-radius: 10px; width: 100%; height: 40px; margin: 0 auto; display: none; font-family: Arial; -webkit-animation: showSlowlyElement 700ms; animation: showSlowlyElement 700ms; }
.filemanager .nothingfound .nofiles { margin: 30px auto; top: 3em; border-radius: 50%; position: relative; background-color: #d72f6e; width: 11em; height: 11em; line-height: 11.4em; display: none; }
.filemanager .nothingfound .nofiles:after { display: none; content: '×'; position: absolute; color: #ffffff; font-size: 14em; margin-right: 0.092em; right: 0; }
/* Override dropdown active/pressed state to use brand red instead of default blue */
/*.dropdown-toggle:active, .dropdown-item:active, .dropdown-toggle.show, .dropdown-item.active {background-color: rgba(220,53,69,0.15) !important;color: #a52834 !important;}*/
.nav-link:active, .nav-link.active, .nav-link:focus, .nav-link:focus-visible {background-color: rgba(220,53,69,0.15) !important;color: #a52834 !important;outline: none !important;box-shadow: none !important;-webkit-tap-highlight-color: rgba(220,53,69,0.25);}
.filemanager .nothingfound span { color: #ffffff; font-size: 16px; font-weight: 700; line-height: 40px; height: 13px; position: relative; display: block; text-align: center; }
/* Prevent default blue tap highlight on mobile */
a, .dropdown-item, .dropdown-toggle { -webkit-tap-highlight-color: transparent; }
/* Extra safety: ensure dropdown active/pressed state matches brand on focused/active */
/*
.navbar .dropdown-toggle:active,
.navbar .dropdown-toggle.show,
.navbar .dropdown-item:active,
.navbar .dropdown-item.active {background-color: rgba(220,53,69,0.15) !important;color: #a52834 !important;}
*/
/* Mobile layout: place the show more/less toggle below the text so it's not clipped by horizontal scrolling */
@media (max-width: 576px) {
	.event-text { padding-right: 0; }
	.event-text-toggle.arrow-toggle { position: static; width: auto; background: transparent; color: var(--brand-red); height: auto; padding: .35rem .5rem; border-radius: .35rem; border: 1px solid rgba(220,53,69,.25); margin-top: .35rem; }
	.event-text-toggle.arrow-toggle:hover { filter: none; background: rgba(220,53,69,.06); }
	.event-text-toggle.arrow-toggle:active { filter: none; }
	.event-text-toggle .arrow { font-size: 16px; }
	.event-text-toggle-label { display: inline; }
}


/* Collapsible sidebar layout (shared across profile/device/request) */
@media (min-width: 992px) {
	/* Generic reusable layout */
	.layout-container .layout-sidebar-col {
		width: 25% !important;
		transition: width .28s ease, opacity .2s ease, padding .28s ease;
		overflow: hidden;
		opacity: 1;
	}
	.layout-container .layout-main-col {
		width: 75% !important;
		transition: width .28s ease;
	}
	.layout-container.layout-collapsed .layout-sidebar-col {
		width: 0 !important;
		opacity: 0;
		padding-left: 0 !important;
		padding-right: 0 !important;
		pointer-events: none;
	}
	.layout-container.layout-collapsed .layout-main-col {
		width: 100% !important;
	}
}

/* Backward-compat: profile-specific IDs/classes (work_all) */
@media (min-width: 992px) {
	#profileLayout .profile-sidebar-col { width: 25% !important; transition: width .28s ease, opacity .2s ease, padding .28s ease; overflow: hidden; opacity: 1; }
	#profileLayout .profile-main-col { width: 75% !important; transition: width .28s ease; }
	#profileLayout.profile-layout-collapsed .profile-sidebar-col { width: 0 !important; opacity: 0; padding-left: 0 !important; padding-right: 0 !important; pointer-events: none; }
	#profileLayout.profile-layout-collapsed .profile-main-col { width: 100% !important; }
}

