.ffh-portal-shell,
.ffh-portal-shell * {
	box-sizing: border-box;
}

/* CSV equipment exchange and Telegram booking integration. */
.ffh-equipment-csv-panel {
	display: grid;
	grid-template-columns: minmax(0, 0.9fr) minmax(340px, 1.1fr);
	gap: 28px;
	margin-bottom: 22px;
	padding: 24px;
}

.ffh-equipment-csv-copy,
.ffh-telegram-copy {
	display: flex;
	align-items: flex-start;
	gap: 16px;
}

.ffh-equipment-csv-copy h2,
.ffh-telegram-copy h3 {
	margin: 3px 0 8px;
}

.ffh-equipment-csv-copy p:last-child,
.ffh-telegram-copy p {
	margin: 0;
	color: var(--ffh-muted);
	line-height: 1.65;
}

.ffh-equipment-csv-icon,
.ffh-telegram-icon {
	display: grid;
	flex: 0 0 auto;
	width: 48px;
	height: 48px;
	border-radius: 14px;
	background: var(--ffh-red-soft);
	color: var(--ffh-red);
	font-size: 22px;
	font-weight: 900;
	place-items: center;
}

.ffh-equipment-csv-form {
	display: grid;
	gap: 14px;
}

.ffh-equipment-csv-form input[type="file"] {
	padding: 10px;
	border: 1px dashed #b6bfcc;
	border-radius: 10px;
	background: #f8f9fb;
}

.ffh-telegram-settings {
	margin: 22px 0;
}

.ffh-telegram-layout {
	display: grid;
	grid-template-columns: minmax(250px, 0.75fr) minmax(420px, 1.25fr);
	gap: 28px;
	padding: 24px;
}

.ffh-telegram-copy a {
	color: var(--ffh-red);
	font-weight: 800;
}

.ffh-telegram-form {
	padding: 0;
}

.ffh-telegram-events {
	margin: 0;
	padding: 14px;
	border: 1px solid var(--ffh-line);
	border-radius: 12px;
}

.ffh-telegram-events legend {
	padding: 0 6px;
	font-size: 12px;
	font-weight: 850;
}

.ffh-telegram-events > div {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 10px;
}

.ffh-telegram-events label {
	display: flex;
	align-items: flex-start;
	gap: 8px;
	font-size: 12px;
	font-weight: 700;
}

.ffh-telegram-actions {
	display: grid;
	gap: 14px;
}

.ffh-telegram-actions .ffh-field {
	display: grid;
	gap: 7px;
}

.ffh-telegram-webhook-status {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
	margin: 0;
	color: var(--ffh-muted);
	font-size: 12px;
}

.ffh-telegram-webhook-status small {
	flex-basis: 100%;
	overflow-wrap: anywhere;
}

.ffh-telegram-webhook-status .ffh-status-ok {
	color: var(--ffh-green);
	font-weight: 850;
}

.ffh-checkbox-field--danger {
	border-color: #f0c4cb;
	background: var(--ffh-red-soft);
}

.ffh-checkbox-field > span {
	display: grid;
	gap: 3px;
}

.ffh-checkbox-field > span > strong,
.ffh-checkbox-field > span > small {
	display: block;
}

.ffh-checkbox-field > span > small {
	color: var(--ffh-muted);
	font-weight: 500;
	line-height: 1.45;
}

.ffh-telegram-test {
	display: flex;
	align-items: center;
	gap: 12px;
	grid-column: 2;
}

.ffh-telegram-test small {
	color: var(--ffh-muted);
}

@media (max-width: 900px) {
	.ffh-equipment-csv-panel,
	.ffh-telegram-layout {
		grid-template-columns: 1fr;
	}

	.ffh-telegram-test {
		grid-column: auto;
	}
}

@media (max-width: 680px) {
	.ffh-equipment-defect-dialog {
		width: calc(100vw - 18px);
		max-height: calc(100vh - 18px);
	}

	.ffh-equipment-defect-dialog form {
		gap: 14px;
		padding: 16px;
	}

	.ffh-equipment-defect-pickers {
		grid-template-columns: 1fr;
	}

	.ffh-equipment-defect-misclick {
		align-items: stretch;
		flex-direction: column;
	}

	.ffh-equipment-defect-misclick .ffh-button {
		width: 100%;
	}

	.ffh-equipment-defect-dialog footer {
		align-items: stretch;
		flex-direction: column-reverse;
	}

	.ffh-equipment-defect-dialog footer .ffh-button {
		width: 100%;
	}

	.ffh-equipment-csv-panel,
	.ffh-telegram-layout {
		gap: 18px;
		padding: 16px;
	}

	.ffh-equipment-csv-copy,
	.ffh-telegram-copy {
		gap: 11px;
	}

	.ffh-equipment-csv-icon,
	.ffh-telegram-icon {
		width: 40px;
		height: 40px;
		border-radius: 11px;
		font-size: 18px;
	}

	.ffh-telegram-events > div {
		grid-template-columns: 1fr;
	}

	.ffh-telegram-test {
		align-items: stretch;
		flex-direction: column;
	}
}

.ffh-portal-shell {
	--ffh-red: #bd1230;
	--ffh-red-dark: #8f0c24;
	--ffh-red-soft: #fff0f2;
	--ffh-ink: #172033;
	--ffh-muted: #667085;
	--ffh-line: #e4e7ec;
	--ffh-canvas: #f3f5f8;
	--ffh-panel: #fff;
	--ffh-green: #16845b;
	--ffh-green-soft: #e9f8f2;
	--ffh-amber: #b05f00;
	--ffh-amber-soft: #fff5df;
	--ffh-orange: #c25700;
	--ffh-orange-soft: #fff0e1;
	--ffh-yellow: #8a6800;
	--ffh-yellow-soft: #fff8cf;
	--ffh-blue: #275d9c;
	--ffh-blue-soft: #eaf2fb;
	position: relative;
	left: 50%;
	width: min(1440px, calc(100vw - 28px));
	margin: 22px 0 34px;
	transform: translateX(-50%);
	overflow: hidden;
	border: 1px solid #dfe3e9;
	border-radius: 24px;
	background: var(--ffh-canvas);
	box-shadow: 0 24px 70px rgba(16, 24, 40, 0.12);
	color: var(--ffh-ink);
	font-family: Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
	font-size: 15px;
	line-height: 1.55;
}

.ffh-portal-shell a {
	color: inherit;
	text-decoration: none;
}

.ffh-portal-shell a:hover {
	text-decoration: none;
}

.ffh-portal-shell .screen-reader-text {
	position: absolute !important;
	width: 1px;
	height: 1px;
	padding: 0;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

.ffh-portal-shell .screen-reader-text:focus {
	top: 8px;
	left: 8px;
	z-index: 100000;
	width: auto;
	height: auto;
	padding: 12px 16px;
	overflow: visible;
	clip: auto;
	border-radius: 8px;
	background: #fff;
	color: #172033;
	white-space: normal;
}

.ffh-portal-shell button,
.ffh-portal-shell input,
.ffh-portal-shell select,
.ffh-portal-shell textarea {
	font: inherit;
}

.ffh-portal-shell button:focus-visible,
.ffh-portal-shell a:focus-visible,
.ffh-portal-shell input:focus-visible,
.ffh-portal-shell select:focus-visible,
.ffh-portal-shell textarea:focus-visible {
	outline: 3px solid rgba(39, 93, 156, 0.32);
	outline-offset: 2px;
}

.ffh-portal-shell h1,
.ffh-portal-shell h2,
.ffh-portal-shell h3,
.ffh-portal-shell p {
	margin-top: 0;
}

.ffh-portal-shell h1,
.ffh-portal-shell h2,
.ffh-portal-shell h3,
.ffh-portal-shell strong {
	letter-spacing: -0.02em;
}

.ffh-topbar {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr) auto;
	align-items: center;
	min-height: 84px;
	padding: 0 32px;
	border-bottom: 1px solid var(--ffh-line);
	background: rgba(255, 255, 255, 0.97);
}

.ffh-brand {
	display: inline-flex;
	align-items: center;
	gap: 12px;
	min-width: 235px;
}

.ffh-brand-mark {
	display: inline-grid;
	width: 46px;
	height: 52px;
	flex: 0 0 auto;
	place-items: center;
}

.ffh-brand-mark img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: contain;
}

.ffh-brand > span:last-child {
	display: grid;
	line-height: 1.25;
}

.ffh-brand strong {
	color: var(--ffh-ink);
	font-size: 17px;
}

.ffh-brand small {
	margin-top: 3px;
	color: var(--ffh-muted);
	font-size: 12px;
	font-weight: 650;
	letter-spacing: 0.05em;
	text-transform: uppercase;
}

.ffh-nav {
	display: flex;
	align-items: stretch;
	align-self: stretch;
	justify-content: center;
	gap: 5px;
}

.ffh-nav > a,
.ffh-nav-dropdown > summary {
	position: relative;
	display: inline-flex;
	align-items: center;
	gap: 7px;
	padding: 0 16px;
	color: #5a6475;
	font-size: 14px;
	font-weight: 700;
	white-space: nowrap;
}

.ffh-nav-dropdown > summary {
	list-style: none;
	cursor: pointer;
	user-select: none;
}

.ffh-nav-dropdown > summary::-webkit-details-marker {
	display: none;
}

.ffh-nav > a::after,
.ffh-nav-dropdown > summary::after {
	position: absolute;
	right: 16px;
	bottom: -1px;
	left: 16px;
	height: 3px;
	border-radius: 3px 3px 0 0;
	background: transparent;
	content: "";
}

.ffh-nav > a:hover,
.ffh-nav > a.is-active,
.ffh-nav-dropdown > summary:hover,
.ffh-nav-dropdown.is-active > summary,
.ffh-nav-dropdown[open] > summary {
	color: var(--ffh-red);
}

.ffh-nav > a.is-active::after,
.ffh-nav-dropdown.is-active > summary::after {
	background: var(--ffh-red);
}

.ffh-nav > a > span,
.ffh-nav-dropdown-symbol {
	font-size: 18px;
	font-weight: 800;
}

.ffh-nav-dropdown {
	position: relative;
	display: flex;
	align-self: stretch;
}

.ffh-nav-dropdown[open] {
	z-index: 5;
}

.ffh-nav-chevron {
	display: inline-block;
	margin-left: 1px;
	font-size: 15px;
	font-weight: 900;
	transition: transform 0.18s ease;
}

.ffh-nav-dropdown[open] .ffh-nav-chevron {
	transform: rotate(180deg);
}

.ffh-nav-dropdown-menu {
	position: absolute;
	top: calc(100% - 8px);
	left: 50%;
	display: grid;
	width: max-content;
	min-width: 285px;
	padding: 8px;
	transform: translateX(-50%);
	border: 1px solid var(--ffh-line);
	border-radius: 14px;
	background: rgba(255, 255, 255, 0.99);
	box-shadow: 0 18px 45px rgba(16, 24, 40, 0.16);
}

.ffh-nav-dropdown-menu--right {
	right: 0;
	left: auto;
	transform: none;
}

.ffh-nav-dropdown-menu a {
	display: grid;
	grid-template-columns: 38px minmax(0, 1fr);
	align-items: center;
	gap: 11px;
	min-height: 58px;
	padding: 8px 11px;
	border-radius: 10px;
	color: #4c5667;
	white-space: normal;
}

.ffh-nav-dropdown-menu a:hover,
.ffh-nav-dropdown-menu a.is-active {
	background: var(--ffh-red-soft);
	color: var(--ffh-red);
}

.ffh-nav-dropdown-menu a > span:last-child {
	display: grid;
	line-height: 1.25;
}

.ffh-nav-dropdown-menu strong {
	font-size: 13px;
}

.ffh-nav-dropdown-menu small {
	margin-top: 3px;
	color: var(--ffh-muted);
	font-size: 11px;
	font-weight: 600;
}

.ffh-nav-dropdown-icon {
	display: grid;
	width: 36px;
	height: 36px;
	border-radius: 10px;
	background: #f0f2f5;
	color: var(--ffh-ink);
	font-size: 17px;
	font-weight: 850;
	place-items: center;
}

.ffh-nav-dropdown-icon--alert {
	background: var(--ffh-red-soft);
	color: var(--ffh-red);
}

.ffh-nav-dropdown-menu a.is-active .ffh-nav-dropdown-icon,
.ffh-nav-dropdown-menu a:hover .ffh-nav-dropdown-icon {
	background: #fff;
	color: var(--ffh-red);
}

.ffh-nav-dropdown > summary:focus-visible {
	border-radius: 8px;
	outline: 3px solid rgba(189, 18, 48, 0.2);
	outline-offset: -3px;
}

.ffh-mobile-logout {
	display: none;
}

.ffh-user {
	display: flex;
	align-items: center;
	justify-self: end;
	gap: 12px;
	min-width: 250px;
}

.ffh-user > span:nth-child(2) {
	display: grid;
	min-width: 0;
	gap: 3px;
	line-height: 1.15;
}

.ffh-user strong {
	display: block;
	max-width: 185px;
	overflow: hidden;
	font-size: 13px;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.ffh-user small {
	display: block;
	max-width: 185px;
	color: var(--ffh-muted);
	font-size: 11px;
	line-height: 1.2;
	white-space: nowrap;
}

.ffh-avatar {
	display: grid;
	width: 38px;
	height: 38px;
	border: 3px solid #fff;
	border-radius: 50%;
	background: var(--ffh-ink);
	box-shadow: 0 0 0 1px var(--ffh-line);
	color: #fff;
	font-size: 14px;
	font-weight: 800;
	place-items: center;
}

.ffh-mobile-toggle {
	display: none;
	width: 42px;
	height: 42px;
	padding: 10px;
	border: 1px solid var(--ffh-line);
	border-radius: 10px;
	background: #fff;
}

.ffh-mobile-toggle > span:not(.screen-reader-text) {
	display: block;
	width: 100%;
	height: 2px;
	margin: 4px 0;
	border-radius: 2px;
	background: var(--ffh-ink);
}

.ffh-main {
	min-height: 720px;
	padding: 42px 44px 54px;
}

.ffh-page-heading {
	display: flex;
	align-items: flex-end;
	justify-content: space-between;
	gap: 30px;
	margin-bottom: 30px;
}

.ffh-page-heading--hero {
	position: relative;
	min-height: 164px;
	align-items: center;
	padding: 32px 38px;
	overflow: hidden;
	border-radius: 20px;
	background:
		linear-gradient(90deg, rgba(20, 29, 47, 0.98), rgba(29, 42, 65, 0.88)),
		repeating-linear-gradient(120deg, transparent 0 28px, rgba(255, 255, 255, 0.04) 28px 30px);
	color: #fff;
}

.ffh-page-heading--hero::after {
	position: absolute;
	top: -84px;
	right: -50px;
	width: 320px;
	height: 320px;
	border: 54px solid rgba(189, 18, 48, 0.22);
	border-radius: 50%;
	content: "";
	pointer-events: none;
}

.ffh-page-heading--hero > .ffh-button {
	position: relative;
	z-index: 1;
}

.ffh-page-heading > div:first-child {
	position: relative;
	z-index: 1;
}

.ffh-page-heading h1 {
	margin-bottom: 8px;
	color: var(--ffh-ink);
	font-size: clamp(30px, 4vw, 43px);
	font-weight: 800;
	line-height: 1.08;
}

.ffh-page-heading--hero h1 {
	color: #fff;
}

.ffh-page-heading p:last-child {
	max-width: 700px;
	margin-bottom: 0;
	color: var(--ffh-muted);
	font-size: 16px;
}

.ffh-page-heading--hero p:last-child {
	color: #cbd2df;
}

.ffh-eyebrow,
.ffh-card-kicker {
	margin-bottom: 7px !important;
	color: var(--ffh-red);
	font-size: 11px;
	font-weight: 850;
	letter-spacing: 0.13em;
	text-transform: uppercase;
}

.ffh-page-heading--hero .ffh-eyebrow {
	color: #ff9cae;
}

.ffh-button {
	display: inline-flex;
	min-height: 44px;
	align-items: center;
	justify-content: center;
	gap: 7px;
	padding: 10px 17px;
	border: 1px solid transparent;
	border-radius: 10px;
	box-shadow: none;
	cursor: pointer;
	font-size: 13px;
	font-weight: 800;
	line-height: 1;
	transition: 0.18s ease;
	white-space: nowrap;
}

.ffh-button:hover {
	transform: translateY(-1px);
}

.ffh-button--primary {
	border-color: var(--ffh-red);
	background: var(--ffh-red);
	box-shadow: 0 8px 18px rgba(189, 18, 48, 0.2);
	color: #fff !important;
}

.ffh-button--primary:hover {
	border-color: var(--ffh-red-dark);
	background: var(--ffh-red-dark);
}

.ffh-button--secondary {
	border-color: #d7dce4;
	background: #fff;
	color: var(--ffh-ink) !important;
}

.ffh-button--secondary:hover {
	border-color: #b7bec9;
	background: #f9fafb;
}

.ffh-button--danger {
	border-color: #e5a8b4;
	background: #fff;
	color: var(--ffh-red) !important;
}

.ffh-button--block {
	width: 100%;
}

.ffh-heading-actions {
	position: relative;
	z-index: 1;
	display: flex;
	flex-wrap: wrap;
	gap: 9px;
}

.ffh-notice {
	display: flex;
	align-items: center;
	gap: 10px;
	margin-bottom: 24px;
	padding: 13px 16px;
	border: 1px solid;
	border-radius: 12px;
	background: #fff;
	font-weight: 700;
}

.ffh-notice > span {
	display: grid;
	width: 24px;
	height: 24px;
	border-radius: 50%;
	place-items: center;
}

.ffh-notice--success {
	border-color: #a9ddc9;
	color: #0d6a48;
}

.ffh-notice--success > span {
	background: var(--ffh-green-soft);
}

.ffh-notice--error {
	border-color: #efb2bd;
	color: var(--ffh-red-dark);
}

.ffh-notice--error > span {
	background: var(--ffh-red-soft);
}

.ffh-stat-grid {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 16px;
	margin: 0 0 24px;
}

.ffh-stat-card {
	display: flex;
	min-height: 108px;
	align-items: center;
	gap: 15px;
	padding: 21px;
	border: 1px solid var(--ffh-line);
	border-radius: 16px;
	background: #fff;
	box-shadow: 0 8px 24px rgba(16, 24, 40, 0.04);
}

.ffh-stat-card > div {
	display: grid;
	line-height: 1.2;
}

.ffh-stat-card strong {
	font-size: 30px;
	font-weight: 850;
}

.ffh-stat-card span:last-child {
	margin-top: 5px;
	color: var(--ffh-muted);
	font-size: 12px;
	font-weight: 700;
}

.ffh-stat-icon {
	display: grid;
	width: 48px;
	height: 48px;
	flex: 0 0 auto;
	border-radius: 13px;
	font-size: 21px;
	font-weight: 850;
	place-items: center;
}

.ffh-stat-icon--red {
	background: var(--ffh-red-soft);
	color: var(--ffh-red);
}

.ffh-stat-icon--green {
	background: var(--ffh-green-soft);
	color: var(--ffh-green);
}

.ffh-stat-icon--amber {
	background: var(--ffh-amber-soft);
	color: var(--ffh-amber);
}

.ffh-stat-icon--slate {
	background: #eef1f5;
	color: #536071;
}

.ffh-dashboard-grid {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 20px;
	margin-bottom: 20px;
}

.ffh-panel {
	border: 1px solid var(--ffh-line);
	border-radius: 17px;
	background: var(--ffh-panel);
	box-shadow: 0 8px 25px rgba(16, 24, 40, 0.04);
}

.ffh-panel-heading {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 18px;
	padding: 22px 24px 18px;
	border-bottom: 1px solid #edf0f4;
}

.ffh-panel-heading h2 {
	margin: 0;
	color: var(--ffh-ink);
	font-size: 19px;
	font-weight: 800;
}

.ffh-panel-heading .ffh-eyebrow {
	margin-bottom: 4px !important;
}

.ffh-panel-heading > a {
	color: var(--ffh-red);
	font-size: 12px;
	font-weight: 800;
}

.ffh-panel-heading-links {
	display: flex;
	flex-wrap: wrap;
	justify-content: flex-end;
	gap: 6px 14px;
}

.ffh-panel-heading-links a {
	color: var(--ffh-red);
	font-size: 12px;
	font-weight: 800;
	white-space: nowrap;
}

.ffh-panel-heading > span {
	color: var(--ffh-muted);
	font-size: 12px;
	font-weight: 700;
}

.ffh-deadline-list,
.ffh-activity-list {
	padding: 4px 10px 10px;
}

.ffh-deadline,
.ffh-activity {
	display: flex;
	min-height: 72px;
	align-items: center;
	gap: 13px;
	padding: 10px 12px;
	border-bottom: 1px solid #f0f2f5;
}

a.ffh-deadline,
a.ffh-activity {
	border-radius: 10px;
	transition: background 0.16s ease;
}

a.ffh-deadline:hover,
a.ffh-activity:hover {
	background: #f8f9fb;
}

.ffh-deadline:last-child,
.ffh-activity:last-child {
	border-bottom: 0;
}

.ffh-date-tile {
	display: inline-grid;
	width: 48px;
	height: 50px;
	flex: 0 0 auto;
	align-content: center;
	border: 1px solid #d9dee6;
	border-radius: 10px;
	background: #f8fafc;
	color: var(--ffh-ink);
	text-align: center;
	line-height: 1.05;
}

.ffh-date-tile strong {
	font-size: 18px;
}

.ffh-date-tile small {
	margin-top: 2px;
	color: var(--ffh-muted);
	font-size: 9px;
	font-weight: 850;
	letter-spacing: 0.08em;
	text-transform: uppercase;
}

.ffh-date-tile--soon {
	border-color: #f2d399;
	background: var(--ffh-amber-soft);
	color: var(--ffh-amber);
}

.ffh-date-tile--overdue {
	border-color: #efb2bd;
	background: var(--ffh-red-soft);
	color: var(--ffh-red);
}

.ffh-date-tile--ok {
	border-color: #a9ddc9;
	background: var(--ffh-green-soft);
	color: var(--ffh-green);
}

.ffh-deadline-copy,
.ffh-activity > span:nth-child(2) {
	display: grid;
	min-width: 0;
	flex: 1;
	line-height: 1.35;
}

.ffh-deadline-copy strong,
.ffh-activity strong {
	overflow: hidden;
	font-size: 13px;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.ffh-deadline-copy small,
.ffh-activity small {
	margin-top: 3px;
	overflow: hidden;
	color: var(--ffh-muted);
	font-size: 11px;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.ffh-pill,
.ffh-log-status,
.ffh-status-badge {
	display: inline-flex;
	align-items: center;
	padding: 5px 9px;
	border-radius: 999px;
	background: #eef1f5;
	color: #536071;
	font-size: 10px;
	font-weight: 850;
	line-height: 1.1;
	white-space: nowrap;
}

.ffh-pill--soon {
	background: var(--ffh-amber-soft);
	color: var(--ffh-amber);
}

.ffh-pill--overdue {
	background: var(--ffh-red-soft);
	color: var(--ffh-red);
}

.ffh-pill--ok {
	background: var(--ffh-green-soft);
	color: var(--ffh-green);
}

.ffh-log-status--none {
	background: #ffe2e7;
	color: #a30d29;
}

.ffh-log-status--open {
	background: var(--ffh-orange-soft);
	color: var(--ffh-orange);
}

.ffh-log-status--in_progress {
	background: var(--ffh-yellow-soft);
	color: var(--ffh-yellow);
}

.ffh-log-status--done {
	background: var(--ffh-green-soft);
	color: var(--ffh-green);
}

.ffh-activity.ffh-log-entry--none,
.ffh-timeline-card.ffh-log-entry--none {
	border-left: 4px solid var(--ffh-red);
	background: #fff7f8;
}

.ffh-activity.ffh-log-entry--open,
.ffh-timeline-card.ffh-log-entry--open {
	border-left: 4px solid var(--ffh-orange);
	background: #fffaf5;
}

.ffh-activity.ffh-log-entry--in_progress,
.ffh-timeline-card.ffh-log-entry--in_progress {
	border-left: 4px solid #d5a600;
	background: #fffdf2;
}

.ffh-activity.ffh-log-entry--done,
.ffh-timeline-card.ffh-log-entry--done {
	border-left: 4px solid var(--ffh-green);
	background: #f6fcf9;
}

.ffh-table tr.ffh-log-entry--none td {
	background: #fff5f7;
}

.ffh-table tr.ffh-log-entry--open td {
	background: #fff9f2;
}

.ffh-table tr.ffh-log-entry--in_progress td {
	background: #fffced;
}

.ffh-table tr.ffh-log-entry--done td {
	background: #f4fbf7;
}

.ffh-table tr[class*="ffh-log-entry--"] td:first-child {
	box-shadow: inset 4px 0 0 transparent;
}

.ffh-table tr.ffh-log-entry--none td:first-child {
	box-shadow: inset 4px 0 0 var(--ffh-red);
}

.ffh-table tr.ffh-log-entry--open td:first-child {
	box-shadow: inset 4px 0 0 var(--ffh-orange);
}

.ffh-table tr.ffh-log-entry--in_progress td:first-child {
	box-shadow: inset 4px 0 0 #d5a600;
}

.ffh-table tr.ffh-log-entry--done td:first-child {
	box-shadow: inset 4px 0 0 var(--ffh-green);
}

.ffh-deadline-progress {
	display: inline-flex;
	align-items: center;
	padding: 5px 9px;
	border-radius: 999px;
	background: #eef1f5;
	color: #536071;
	font-size: 10px;
	font-weight: 850;
	line-height: 1.1;
	white-space: nowrap;
}

.ffh-deadline-progress--in_progress {
	background: var(--ffh-yellow-soft);
	color: var(--ffh-yellow);
}

.ffh-deadline-progress--done {
	background: var(--ffh-green-soft);
	color: var(--ffh-green);
}

.ffh-inline-status-form {
	display: flex;
	align-items: center;
	gap: 7px;
}

.ffh-inline-status-form select {
	width: 150px;
	min-height: 36px;
	padding: 7px 28px 7px 9px;
	border: 1px solid #d6dae1;
	border-radius: 8px;
	background: #fff;
	color: var(--ffh-ink);
	font-size: 12px;
}

.ffh-button.ffh-button--compact {
	min-height: 36px;
	padding: 7px 10px;
	font-size: 11px;
}

.ffh-activity-icon {
	display: grid;
	width: 32px;
	height: 32px;
	flex: 0 0 auto;
	border-radius: 10px;
	background: var(--ffh-blue-soft);
	color: var(--ffh-blue);
	font-size: 0;
	place-items: center;
}

.ffh-activity-icon::after {
	width: 9px;
	height: 9px;
	border: 3px solid currentColor;
	border-radius: 50%;
	content: "";
}

.ffh-activity-icon--maintenance,
.ffh-activity-icon--repair {
	background: var(--ffh-amber-soft);
	color: var(--ffh-amber);
}

.ffh-activity-icon--damage {
	background: var(--ffh-red-soft);
	color: var(--ffh-red);
}

.ffh-activity-icon--inspection,
.ffh-activity-icon--mileage {
	background: var(--ffh-green-soft);
	color: var(--ffh-green);
}

.ffh-empty-state {
	display: grid;
	min-height: 220px;
	align-content: center;
	justify-items: center;
	padding: 28px;
	color: var(--ffh-muted);
	text-align: center;
}

.ffh-empty-state > span {
	display: grid;
	width: 46px;
	height: 46px;
	margin-bottom: 12px;
	border-radius: 50%;
	background: #eef1f5;
	color: #536071;
	font-size: 21px;
	font-weight: 850;
	place-items: center;
}

.ffh-empty-state h2,
.ffh-empty-state h3 {
	margin-bottom: 5px;
	color: var(--ffh-ink);
}

.ffh-empty-state p {
	max-width: 500px;
	margin-bottom: 0;
}

.ffh-empty-state--wide {
	grid-column: 1 / -1;
}

.ffh-empty-state--page {
	min-height: 380px;
}

.ffh-fleet-preview {
	padding-bottom: 20px;
}

.ffh-vehicle-grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 20px;
}

.ffh-panel .ffh-vehicle-grid {
	padding: 18px 20px 0;
}

.ffh-vehicle-grid--compact {
	grid-template-columns: repeat(4, minmax(0, 1fr));
}

.ffh-vehicle-card {
	display: block;
	min-width: 0;
	overflow: hidden;
	border: 1px solid var(--ffh-line);
	border-radius: 15px;
	background: #fff;
	box-shadow: 0 7px 22px rgba(16, 24, 40, 0.045);
	transition: transform 0.18s ease, box-shadow 0.18s ease;
}

a.ffh-vehicle-card:hover,
.ffh-vehicle-card--full:hover {
	transform: translateY(-3px);
	box-shadow: 0 16px 32px rgba(16, 24, 40, 0.1);
}

.ffh-vehicle-card-link {
	display: block;
}

.ffh-vehicle-image {
	position: relative;
	display: grid;
	height: 160px;
	overflow: hidden;
	background-color: #dfe3e8;
	background-position: center;
	background-repeat: no-repeat;
	background-size: cover;
	place-items: center;
}

.ffh-vehicle-grid--compact .ffh-vehicle-image {
	height: 118px;
}

.ffh-vehicle-image::after,
.ffh-vehicle-hero-image::after {
	position: absolute;
	inset: 50% 0 0;
	background: linear-gradient(transparent, rgba(10, 15, 25, 0.25));
	content: "";
}

.ffh-vehicle-image--placeholder {
	background:
		linear-gradient(135deg, rgba(255, 255, 255, 0.1), transparent 52%),
		linear-gradient(145deg, #232e42, #101724);
}

.ffh-vehicle-image--placeholder > span:not(.ffh-status-dot):not(.ffh-status-badge) {
	color: rgba(255, 255, 255, 0.9);
	font-size: 38px;
	font-style: italic;
	font-weight: 900;
	letter-spacing: -0.08em;
}

.ffh-status-dot {
	position: absolute;
	right: 11px;
	bottom: 11px;
	z-index: 1;
	width: 12px;
	height: 12px;
	border: 3px solid #fff;
	border-radius: 50%;
	background: #8791a1;
	box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);
}

.ffh-status-dot--active {
	background: #1aa76f;
}

.ffh-status-dot--maintenance {
	background: #f2a023;
}

.ffh-status-dot--out_of_service {
	background: var(--ffh-red);
}

.ffh-status-dot--reserve {
	background: #6c7a90;
}

.ffh-status-badge {
	position: absolute;
	top: 12px;
	right: 12px;
	z-index: 2;
	padding: 7px 10px;
	box-shadow: 0 3px 8px rgba(16, 24, 40, 0.13);
}

.ffh-status-badge--active {
	background: var(--ffh-green-soft);
	color: var(--ffh-green);
}

.ffh-status-badge--maintenance {
	background: var(--ffh-amber-soft);
	color: var(--ffh-amber);
}

.ffh-status-badge--out_of_service {
	background: var(--ffh-red-soft);
	color: var(--ffh-red);
}

.ffh-status-badge--reserve {
	background: #eef1f5;
	color: #536071;
}

.ffh-vehicle-card-copy {
	display: grid;
	padding: 14px 15px 15px;
	line-height: 1.35;
}

.ffh-vehicle-card-copy strong {
	overflow: hidden;
	font-size: 14px;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.ffh-vehicle-card-copy span {
	margin-top: 3px;
	overflow: hidden;
	color: var(--ffh-muted);
	font-size: 11px;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.ffh-vehicle-card-body {
	padding: 20px;
}

.ffh-vehicle-card-body h2 {
	margin: 0 0 5px;
	color: var(--ffh-ink);
	font-size: 23px;
	font-weight: 820;
}

.ffh-vehicle-card-body > p:not(.ffh-card-kicker) {
	min-height: 24px;
	margin-bottom: 17px;
	color: var(--ffh-muted);
	font-size: 13px;
}

.ffh-vehicle-facts {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 12px;
	padding: 14px 0;
	border-top: 1px solid #edf0f4;
	border-bottom: 1px solid #edf0f4;
}

.ffh-vehicle-facts > span {
	display: grid;
	line-height: 1.3;
}

.ffh-vehicle-facts small {
	color: var(--ffh-muted);
	font-size: 9px;
	font-weight: 800;
	letter-spacing: 0.08em;
	text-transform: uppercase;
}

.ffh-vehicle-facts strong {
	margin-top: 3px;
	font-size: 13px;
}

.ffh-card-deadline {
	display: flex;
	align-items: center;
	gap: 7px;
	margin-top: 14px;
	color: var(--ffh-muted);
	font-size: 11px;
	font-weight: 750;
}

.ffh-card-deadline--soon {
	color: var(--ffh-amber);
}

.ffh-card-deadline--overdue {
	color: var(--ffh-red);
}

.ffh-card-deadline--ok {
	color: var(--ffh-green);
}

.ffh-filterbar {
	display: flex;
	align-items: center;
	gap: 10px;
	margin-bottom: 22px;
	padding: 13px;
	border: 1px solid var(--ffh-line);
	border-radius: 14px;
	background: #fff;
}

.ffh-filterbar select,
.ffh-filterbar input {
	height: 44px;
	margin: 0;
	border: 1px solid #d7dce4;
	border-radius: 9px;
	background: #fff;
	color: var(--ffh-ink);
}

.ffh-search {
	position: relative;
	display: flex;
	min-width: 240px;
	flex: 1;
	align-items: center;
}

.ffh-search > span:not(.screen-reader-text) {
	position: absolute;
	left: 13px;
	z-index: 1;
	color: var(--ffh-muted);
	font-size: 20px;
}

.ffh-search input {
	width: 100%;
	padding: 0 15px 0 40px;
}

.ffh-filterbar select {
	min-width: 180px;
	padding: 0 35px 0 12px;
}

.ffh-filter-reset {
	padding: 8px;
	color: var(--ffh-red) !important;
	font-size: 12px;
	font-weight: 800;
}

.ffh-form-panel {
	padding: 4px 30px 26px;
}

.ffh-form-section {
	display: grid;
	grid-template-columns: minmax(210px, 0.32fr) minmax(0, 1fr);
	gap: 40px;
	padding: 32px 0;
	border-bottom: 1px solid var(--ffh-line);
}

.ffh-form-section-heading {
	display: flex;
	align-items: flex-start;
	gap: 12px;
}

.ffh-form-section-heading > span {
	display: grid;
	width: 32px;
	height: 32px;
	flex: 0 0 auto;
	border-radius: 9px;
	background: var(--ffh-red-soft);
	color: var(--ffh-red);
	font-size: 11px;
	font-weight: 850;
	place-items: center;
}

.ffh-form-section-heading h2 {
	margin: 2px 0 5px;
	font-size: 17px;
}

.ffh-form-section-heading p {
	margin: 0;
	color: var(--ffh-muted);
	font-size: 12px;
}

.ffh-form-grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 18px;
}

.ffh-form-grid--small {
	gap: 12px;
}

.ffh-field {
	display: grid;
	align-content: start;
	gap: 7px;
	min-width: 0;
	color: var(--ffh-ink);
	font-size: 12px;
	font-weight: 750;
}

.ffh-field--wide {
	grid-column: 1 / -1;
}

.ffh-field input,
.ffh-field select,
.ffh-field textarea {
	width: 100%;
	min-height: 44px;
	margin: 0;
	padding: 10px 12px;
	border: 1px solid #d7dce4;
	border-radius: 9px;
	background: #fff;
	box-shadow: none;
	color: var(--ffh-ink);
	font-size: 14px;
	font-weight: 500;
}

.ffh-field input:hover,
.ffh-field select:hover,
.ffh-field textarea:hover {
	border-color: #adb5c2;
}

.ffh-field textarea {
	resize: vertical;
}

.ffh-field input[type="file"] {
	height: auto;
	padding: 9px;
	background: #f8f9fb;
}

.ffh-field small {
	color: var(--ffh-muted);
	font-size: 10px;
	font-weight: 500;
}

.ffh-image-preview {
	display: none;
	position: relative;
	width: min(100%, 300px);
	overflow: hidden;
	border: 1px solid var(--ffh-line);
	border-radius: 12px;
	background: #f5f7fa;
}

.ffh-image-preview.is-visible {
	display: block;
}

.ffh-image-preview img {
	display: block;
	width: 100%;
	max-height: 220px;
	object-fit: cover;
}

.ffh-image-preview small {
	display: block;
	padding: 8px 10px;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.ffh-multi-image-inputs input[type="file"] {
	width: 100%;
	height: auto;
	padding: 9px;
	border: 1px solid #d6dae1;
	border-radius: 9px;
	background: #f8f9fb;
}

.ffh-multi-image-preview {
	display: grid;
	gap: 10px;
	margin-top: 5px;
}

.ffh-multi-image-batch {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(92px, 1fr));
	gap: 8px;
	padding: 9px;
	border: 1px solid var(--ffh-line);
	border-radius: 12px;
	background: #f7f8fa;
}

.ffh-multi-image-tile {
	display: block;
	min-width: 0;
	overflow: hidden;
	border-radius: 9px;
	background: #e8ebf0;
}

.ffh-multi-image-tile img {
	display: block;
	width: 100%;
	height: 82px;
	object-fit: cover;
}

.ffh-multi-image-tile small {
	display: block;
	padding: 6px 7px;
	overflow: hidden;
	font-size: 9px;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.ffh-multi-image-remove {
	grid-column: 1 / -1;
	justify-self: start;
	padding: 5px 0;
	border: 0;
	background: transparent;
	color: var(--ffh-red);
	cursor: pointer;
	font-size: 10px;
	font-weight: 800;
}

.ffh-multi-image-counter {
	color: var(--ffh-muted);
	font-size: 10px;
}

.ffh-existing-log-images {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(110px, 1fr));
	gap: 9px;
}

.ffh-existing-log-images a {
	overflow: hidden;
	border: 1px solid var(--ffh-line);
	border-radius: 10px;
	background: #eef1f5;
}

.ffh-existing-log-images img {
	display: block;
	width: 100%;
	height: 105px;
	object-fit: cover;
}

.ffh-form-actions {
	display: flex;
	justify-content: flex-end;
	gap: 10px;
	padding-top: 24px;
}

.ffh-breadcrumb {
	display: flex;
	gap: 8px;
	margin-bottom: 20px;
	color: var(--ffh-muted);
	font-size: 12px;
	font-weight: 700;
}

.ffh-breadcrumb a {
	color: var(--ffh-red);
}

.ffh-vehicle-hero {
	display: grid;
	grid-template-columns: minmax(280px, 0.45fr) minmax(0, 1fr);
	min-height: 300px;
	margin-bottom: 22px;
	overflow: hidden;
	border-radius: 19px;
	background: var(--ffh-ink);
	color: #fff;
	box-shadow: 0 13px 34px rgba(16, 24, 40, 0.15);
}

.ffh-vehicle-hero-image {
	position: relative;
	display: grid;
	min-height: 300px;
	background-color: #222b3a;
	background-position: center;
	background-repeat: no-repeat;
	background-size: cover;
	place-items: center;
}

.ffh-vehicle-hero-copy {
	position: relative;
	display: flex;
	align-items: flex-start;
	flex-direction: column;
	justify-content: center;
	padding: 38px 42px;
	background:
		radial-gradient(circle at 95% 15%, rgba(189, 18, 48, 0.3), transparent 38%),
		linear-gradient(135deg, #172033, #222e45);
}

.ffh-vehicle-hero-copy .ffh-status-badge {
	position: static;
	margin-bottom: 24px;
}

.ffh-vehicle-hero-copy h1 {
	margin: 2px 0 8px;
	color: #fff;
	font-size: clamp(34px, 5vw, 54px);
	font-weight: 860;
	line-height: 1;
}

.ffh-vehicle-hero-copy > p:not(.ffh-eyebrow) {
	margin-bottom: 25px;
	color: #cbd2df;
	font-size: 16px;
}

.ffh-detail-layout {
	display: grid;
	grid-template-columns: minmax(0, 1.58fr) minmax(310px, 0.72fr);
	align-items: start;
	gap: 22px;
}

.ffh-detail-main,
.ffh-detail-sidebar {
	display: grid;
	gap: 22px;
}

.ffh-data-grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 0;
	margin: 0;
	padding: 5px 24px 24px;
}

.ffh-data-grid > div {
	min-width: 0;
	padding: 17px 12px 17px 0;
	border-bottom: 1px solid #edf0f4;
}

.ffh-data-grid dt {
	margin-bottom: 3px;
	color: var(--ffh-muted);
	font-size: 10px;
	font-weight: 800;
	letter-spacing: 0.08em;
	text-transform: uppercase;
}

.ffh-data-grid dd {
	margin: 0;
	overflow: hidden;
	font-size: 14px;
	font-weight: 700;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.ffh-note-box {
	margin: 0 24px 24px;
	padding: 15px 17px;
	border-left: 3px solid var(--ffh-red);
	border-radius: 4px 10px 10px 4px;
	background: #f8f9fb;
}

.ffh-note-box strong {
	font-size: 12px;
}

.ffh-note-box p {
	margin: 5px 0 0;
	color: var(--ffh-muted);
	font-size: 13px;
}

.ffh-timeline {
	position: relative;
	padding: 24px;
}

.ffh-timeline::before {
	position: absolute;
	top: 30px;
	bottom: 30px;
	left: 35px;
	width: 2px;
	background: #e1e5eb;
	content: "";
}

.ffh-timeline-item {
	position: relative;
	display: grid;
	grid-template-columns: 24px minmax(0, 1fr);
	gap: 14px;
	margin-bottom: 18px;
}

.ffh-timeline-item:last-child {
	margin-bottom: 0;
}

.ffh-timeline-marker {
	position: relative;
	z-index: 1;
	width: 14px;
	height: 14px;
	margin: 17px 0 0 5px;
	border: 3px solid #fff;
	border-radius: 50%;
	background: var(--ffh-blue);
	box-shadow: 0 0 0 2px #b7d0eb;
}

.ffh-timeline-marker.ffh-activity-icon--damage {
	background: var(--ffh-red);
	box-shadow: 0 0 0 2px #efb2bd;
}

.ffh-timeline-marker.ffh-activity-icon--maintenance,
.ffh-timeline-marker.ffh-activity-icon--repair {
	background: var(--ffh-amber);
	box-shadow: 0 0 0 2px #f2d399;
}

.ffh-timeline-marker.ffh-activity-icon--inspection,
.ffh-timeline-marker.ffh-activity-icon--mileage {
	background: var(--ffh-green);
	box-shadow: 0 0 0 2px #a9ddc9;
}

.ffh-timeline-card {
	padding: 16px 17px;
	border: 1px solid var(--ffh-line);
	border-radius: 12px;
	background: #fff;
}

.ffh-timeline-card header {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: 12px;
}

.ffh-timeline-card header > div {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 8px;
}

.ffh-timeline-card h3 {
	margin: 0;
	font-size: 14px;
}

.ffh-timeline-card > p {
	margin: 13px 0 0;
	color: #4f5a6b;
	font-size: 13px;
}

.ffh-log-gallery {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 9px;
	margin-top: 14px;
}

.ffh-log-gallery.is-single {
	grid-template-columns: 1fr;
}

.ffh-log-image {
	display: block;
	position: relative;
	overflow: hidden;
	border: 1px solid var(--ffh-line);
	border-radius: 12px;
	background: #eef1f5;
}

.ffh-log-image img {
	display: block;
	width: 100%;
	height: 180px;
	object-fit: cover;
}

.ffh-log-gallery.is-single .ffh-log-image img {
	height: auto;
	max-height: 380px;
}

.ffh-log-image span {
	position: absolute;
	right: 10px;
	bottom: 10px;
	padding: 7px 10px;
	border-radius: 999px;
	background: rgba(20, 28, 41, 0.82);
	color: #fff;
	font-size: 10px;
	font-weight: 800;
}

.ffh-timeline-card footer {
	display: flex;
	flex-wrap: wrap;
	gap: 7px 14px;
	margin-top: 13px;
	padding-top: 11px;
	border-top: 1px solid #edf0f4;
	color: var(--ffh-muted);
	font-size: 10px;
	font-weight: 700;
}

.ffh-quick-form {
	padding: 20px;
}

.ffh-quick-form > .ffh-field {
	margin-bottom: 13px;
}

.ffh-quick-form .ffh-button {
	margin-top: 16px;
}

.ffh-danger-zone {
	padding: 18px;
	border: 1px dashed #e5a8b4;
	border-radius: 14px;
	background: #fff7f8;
}

.ffh-defect-lock-note {
	padding: 18px;
	border: 1px solid #f2c94c;
	border-left: 5px solid #d9a900;
	border-radius: 14px;
	background: #fffbea;
}

.ffh-defect-lock-note h3,
.ffh-defect-lock-note p {
	margin: 0;
}

.ffh-defect-lock-note p {
	margin-top: 6px;
	color: var(--ffh-muted);
}

.ffh-danger-zone h3 {
	margin-bottom: 4px;
	color: var(--ffh-red-dark);
	font-size: 14px;
}

.ffh-danger-zone p {
	margin-bottom: 13px;
	color: #7b4c55;
	font-size: 11px;
}

.ffh-user-danger {
	max-width: 900px;
	margin-top: 18px;
}

.ffh-table-wrap {
	width: 100%;
	overflow-x: auto;
}

.ffh-table {
	width: 100%;
	margin: 0;
	border: 0;
	border-collapse: collapse;
	background: transparent;
	color: var(--ffh-ink);
	font-size: 13px;
}

.ffh-table th,
.ffh-table td {
	padding: 15px 18px;
	border: 0;
	border-bottom: 1px solid #edf0f4;
	background: transparent;
	text-align: left;
	vertical-align: middle;
}

.ffh-table th {
	background: #f8f9fb;
	color: var(--ffh-muted);
	font-size: 10px;
	font-weight: 850;
	letter-spacing: 0.07em;
	text-transform: uppercase;
}

.ffh-table tbody tr:hover {
	background: #fafbfc;
}

.ffh-table tbody tr:last-child td {
	border-bottom: 0;
}

.ffh-table td a {
	color: var(--ffh-red);
	font-weight: 800;
}

.ffh-table .ffh-date-tile {
	width: 42px;
	height: 44px;
}

.ffh-table-description {
	max-width: 340px;
	color: var(--ffh-muted);
}

.ffh-table-description-content {
	display: flex;
	align-items: center;
	gap: 10px;
}

.ffh-log-thumbnail {
	display: block;
	position: relative;
	flex: 0 0 52px;
	width: 52px;
	height: 42px;
	overflow: hidden;
	border: 1px solid var(--ffh-line);
	border-radius: 8px;
	background: #eef1f5;
}

.ffh-log-thumbnail img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.ffh-log-thumbnail small {
	display: grid;
	position: absolute;
	right: 3px;
	bottom: 3px;
	min-width: 18px;
	height: 18px;
	padding: 0 4px;
	border-radius: 999px;
	background: rgba(20, 28, 41, 0.84);
	color: #fff;
	font-size: 9px;
	place-items: center;
}

.ffh-deadline-row--overdue td:nth-child(2) {
	background: var(--ffh-red-soft);
	box-shadow: inset 4px 0 0 var(--ffh-red);
}

.ffh-deadline-table .ffh-deadline-vehicle,
.ffh-deadline-table .ffh-deadline-vehicle strong {
	color: var(--ffh-ink);
}

.ffh-deadline-table .ffh-deadline-vehicle small {
	color: var(--ffh-muted);
}

.ffh-deadline-row--overdue .ffh-deadline-vehicle strong,
.ffh-deadline-row--overdue .ffh-deadline-vehicle small {
	color: var(--ffh-red);
}

.ffh-equipment-heading {
	margin-bottom: 20px;
}

.ffh-equipment-toolbar {
	display: grid;
	grid-template-columns: minmax(160px, 1fr) auto;
	align-items: center;
	gap: 18px 28px;
	margin-bottom: 18px;
	padding: 20px 22px;
}

.ffh-equipment-toolbar strong {
	font-size: 15px;
}

.ffh-equipment-toolbar p {
	margin: 2px 0 0;
	color: var(--ffh-muted);
	font-size: 12px;
}

.ffh-equipment-year-nav,
.ffh-equipment-year-nav form {
	display: flex;
	align-items: center;
	gap: 7px;
}

.ffh-equipment-year-nav select {
	min-height: 36px;
	padding: 6px 30px 6px 10px;
	border: 1px solid #d6dae1;
	border-radius: 8px;
	background: #fff;
	color: var(--ffh-ink);
	font-weight: 800;
}

.ffh-equipment-legend {
	display: flex;
	grid-column: 1 / -1;
	flex-wrap: wrap;
	gap: 10px 20px;
	padding-top: 15px;
	border-top: 1px solid var(--ffh-line);
}

.ffh-equipment-legend > span {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	color: var(--ffh-muted);
	font-size: 11px;
	font-weight: 750;
}

.ffh-equipment-categories {
	display: grid;
	gap: 18px;
}

.ffh-equipment-category {
	overflow: hidden;
}

.ffh-equipment-category-heading {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 18px;
	padding: 19px 22px;
	border-bottom: 1px solid var(--ffh-line);
}

.ffh-equipment-category-heading h2,
.ffh-equipment-new-category h2 {
	margin: 1px 0 0;
	font-size: 21px;
}

.ffh-icon-danger-button,
.ffh-table-action--danger {
	border: 0;
	background: transparent;
	color: var(--ffh-red);
	cursor: pointer;
	font: inherit;
	font-size: 11px;
	font-weight: 850;
}

.ffh-icon-danger-button {
	padding: 8px 10px;
	border: 1px solid #efc6ce;
	border-radius: 8px;
	background: var(--ffh-red-soft);
}

.ffh-equipment-table-wrap {
	width: 100%;
	overflow-x: auto;
	overscroll-behavior-inline: contain;
	scrollbar-color: #adb4bf #edf0f4;
	scrollbar-width: thin;
}

.ffh-equipment-table {
	width: 100%;
	min-width: 1110px;
	border-collapse: separate;
	border-spacing: 0;
	color: var(--ffh-ink);
	font-size: 12px;
	table-layout: fixed;
}

.ffh-equipment-table th,
.ffh-equipment-table td {
	width: 57px;
	height: 58px;
	padding: 7px;
	border-right: 1px solid #edf0f4;
	border-bottom: 1px solid #edf0f4;
	background: #fff;
	text-align: center;
	vertical-align: middle;
}

.ffh-equipment-table thead th {
	height: 42px;
	background: #f8f9fb;
	color: var(--ffh-muted);
	font-size: 10px;
	font-weight: 850;
}

.ffh-equipment-table abbr {
	text-decoration: none;
}

.ffh-equipment-table th:first-child {
	position: sticky;
	left: 0;
	z-index: 2;
	width: 250px;
	padding-right: 16px;
	padding-left: 20px;
	background: #fff;
	box-shadow: 5px 0 10px rgba(23, 32, 51, 0.05);
	text-align: left;
}

.ffh-equipment-table thead th:first-child {
	z-index: 3;
	background: #f8f9fb;
}

.ffh-equipment-table th:last-child,
.ffh-equipment-table td:last-child {
	border-right: 0;
}

.ffh-equipment-table tbody tr:last-child th,
.ffh-equipment-table tbody tr:last-child td {
	border-bottom: 0;
}

.ffh-equipment-cell-form {
	margin: 0;
}

.ffh-equipment-cell {
	position: relative;
	display: inline-flex;
	width: 40px;
	height: 40px;
	align-items: center;
	justify-content: center;
	padding: 0;
	border: 1px solid #d9dee6;
	border-radius: 9px;
	background: #f7f8fa;
	color: #8a94a3;
	font-size: 22px;
	font-style: normal;
	font-weight: 900;
	line-height: 1;
}

button.ffh-equipment-cell {
	cursor: pointer;
	touch-action: manipulation;
	transition: transform 0.12s ease, box-shadow 0.12s ease, background 0.12s ease;
}

button.ffh-equipment-cell:hover,
button.ffh-equipment-cell:focus-visible {
	box-shadow: 0 0 0 3px rgba(39, 93, 156, 0.14);
	transform: translateY(-1px);
}

button.ffh-equipment-cell:disabled {
	cursor: wait;
	opacity: 0.65;
	transform: none;
}

.ffh-equipment-cell--locked,
button.ffh-equipment-cell--locked:disabled {
	cursor: not-allowed;
	opacity: 0.82;
	box-shadow: inset 0 0 0 1px rgba(23, 32, 51, 0.08);
	transform: none;
}

.ffh-equipment-cell--ok {
	border-color: #9dd7c1;
	background: var(--ffh-green-soft);
	color: var(--ffh-green);
}

.ffh-equipment-cell--missing {
	border-color: #e9c77e;
	background: var(--ffh-amber-soft);
	color: var(--ffh-amber);
	font-size: 17px;
}

.ffh-equipment-cell--defect {
	border-color: #e69aa8;
	background: var(--ffh-red-soft);
	color: var(--ffh-red);
	font-size: 17px;
}

.ffh-equipment-cell-symbol {
	pointer-events: none;
}

.ffh-equipment-photo-count {
	position: absolute;
	top: -7px;
	right: -7px;
	display: grid;
	min-width: 18px;
	height: 18px;
	padding: 0 4px;
	border: 2px solid #fff;
	border-radius: 999px;
	background: var(--ffh-red);
	color: #fff;
	font-size: 8px;
	font-weight: 900;
	line-height: 1;
	place-items: center;
}

.ffh-equipment-defect-dialog {
	width: min(650px, calc(100vw - 28px));
	max-height: calc(100vh - 32px);
	padding: 0;
	overflow: auto;
	border: 0;
	border-radius: 18px;
	background: #fff;
	box-shadow: 0 24px 70px rgba(17, 24, 39, .3);
	color: var(--ffh-ink);
}

.ffh-equipment-defect-dialog::backdrop {
	background: rgba(17, 24, 39, .62);
	backdrop-filter: blur(2px);
}

.ffh-equipment-defect-dialog form {
	display: grid;
	gap: 16px;
	padding: 22px;
}

.ffh-equipment-defect-dialog header,
.ffh-equipment-defect-dialog footer {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
}

.ffh-equipment-defect-dialog footer {
	justify-content: flex-end;
}

.ffh-equipment-defect-dialog header h2,
.ffh-equipment-defect-dialog header p {
	margin: 0;
}

.ffh-equipment-defect-item {
	display: grid;
	gap: 2px;
	padding: 13px 15px;
	border-left: 4px solid var(--ffh-red);
	border-radius: 10px;
	background: var(--ffh-red-soft);
}

.ffh-equipment-defect-item span,
.ffh-equipment-defect-item small {
	color: var(--ffh-muted);
	font-size: 10px;
}

.ffh-equipment-defect-item strong {
	font-size: 15px;
}

.ffh-equipment-defect-help {
	margin: 0;
	color: var(--ffh-muted);
	font-size: 12px;
}

.ffh-equipment-defect-misclick {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 14px;
	padding: 12px 14px;
	border: 1px solid #d8dee8;
	border-radius: 12px;
	background: #f6f8fb;
}

.ffh-equipment-defect-misclick > div {
	display: grid;
	gap: 3px;
}

.ffh-equipment-defect-misclick strong {
	font-size: 13px;
}

.ffh-equipment-defect-misclick small {
	color: var(--ffh-muted);
	font-size: 11px;
	line-height: 1.45;
}

.ffh-equipment-defect-misclick .ffh-button {
	flex: 0 0 auto;
}

.ffh-equipment-defect-uploader {
	display: grid;
	gap: 12px;
}

.ffh-equipment-defect-pickers {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 10px;
}

.ffh-equipment-picker {
	display: grid;
	grid-template-columns: 42px 1fr;
	min-height: 72px;
	padding: 11px 13px;
	border: 1px solid var(--ffh-line);
	border-radius: 12px;
	background: #fff;
	text-align: left;
	cursor: pointer;
}

.ffh-equipment-picker:hover,
.ffh-equipment-picker:focus-visible {
	border-color: #b7c0cc;
	background: #f9fafb;
}

.ffh-equipment-picker > span {
	grid-row: 1 / 3;
	display: grid;
	width: 34px;
	height: 34px;
	border-radius: 9px;
	font-size: 17px;
	font-weight: 900;
	place-items: center;
}

.ffh-equipment-picker--gallery > span {
	background: var(--ffh-blue-soft);
	color: var(--ffh-blue);
}

.ffh-equipment-picker--camera > span {
	background: var(--ffh-red-soft);
	color: var(--ffh-red);
}

.ffh-equipment-picker strong {
	align-self: end;
	font-size: 12px;
}

.ffh-equipment-picker small {
	align-self: start;
	color: var(--ffh-muted);
	font-size: 9px;
}

.ffh-equipment-defect-preview {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(100px, 1fr));
	gap: 9px;
	padding: 10px;
	border: 1px solid var(--ffh-line);
	border-radius: 12px;
	background: #f7f8fa;
}

.ffh-equipment-defect-preview[hidden] {
	display: none;
}

.ffh-equipment-defect-photo {
	position: relative;
	min-width: 0;
	overflow: hidden;
	border-radius: 9px;
	background: #e8ebf0;
}

.ffh-equipment-defect-photo img {
	display: block;
	width: 100%;
	height: 92px;
	object-fit: cover;
}

.ffh-equipment-defect-photo small {
	display: block;
	padding: 6px 7px;
	overflow: hidden;
	font-size: 8px;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.ffh-equipment-defect-remove {
	position: absolute;
	top: 5px;
	right: 5px;
	display: grid;
	width: 25px;
	height: 25px;
	padding: 0;
	border: 2px solid #fff;
	border-radius: 50%;
	background: rgba(23, 32, 51, .82);
	color: #fff;
	font-size: 15px;
	cursor: pointer;
	place-items: center;
}

.ffh-equipment-defect-counter {
	color: var(--ffh-muted);
	font-size: 10px;
}

.ffh-equipment-defect-error {
	padding: 10px 12px;
	border: 1px solid #efb2bd;
	border-radius: 9px;
	background: var(--ffh-red-soft);
	color: var(--ffh-red);
	font-size: 11px;
	font-weight: 750;
}

.ffh-equipment-action-heading,
.ffh-equipment-row-action {
	width: 175px !important;
	border-left: 2px solid #dfe4ea;
	background: #fbfcfd !important;
}

.ffh-equipment-action-heading {
	color: var(--ffh-ink) !important;
	font-size: 10px !important;
	letter-spacing: 0.04em;
	text-transform: uppercase;
}

.ffh-equipment-row-actions {
	display: grid;
	grid-template-columns: 1fr 1fr;
	align-items: flex-start;
	gap: 8px;
}

.ffh-equipment-edit > summary {
	color: var(--ffh-blue);
	cursor: pointer;
	font-size: 11px;
	font-weight: 850;
	list-style: none;
}

.ffh-equipment-edit > summary::-webkit-details-marker {
	display: none;
}

.ffh-equipment-edit[open] {
	grid-column: 1 / -1;
}

.ffh-equipment-edit[open] > summary {
	margin-bottom: 9px;
}

.ffh-equipment-edit > form {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: 9px;
	padding: 11px;
	border: 1px solid var(--ffh-line);
	border-radius: 10px;
	background: #f8fafc;
}

.ffh-equipment-edit > form .ffh-button {
	width: 100%;
}

.ffh-equipment-empty-row {
	height: 76px !important;
	color: var(--ffh-muted);
	font-style: italic;
	text-align: left !important;
}

.ffh-equipment-add-form {
	display: flex;
	align-items: flex-end;
	gap: 10px;
	padding: 16px 20px 19px;
	border-top: 1px solid var(--ffh-line);
	background: #fbfcfd;
}

.ffh-equipment-add-form .ffh-field {
	max-width: 520px;
	flex: 1;
}

.ffh-equipment-add-form .ffh-equipment-quantity-field {
	width: 96px;
	max-width: 96px;
	flex: 0 0 96px;
}

.ffh-equipment-add-form .ffh-equipment-type-field {
	width: 180px;
	max-width: 180px;
	flex: 0 0 180px;
}

.ffh-equipment-quantity {
	display: inline-flex;
	min-width: 34px;
	justify-content: center;
	margin-right: 8px;
	padding: 3px 6px;
	border-radius: 7px;
	background: var(--ffh-blue-soft);
	color: var(--ffh-blue);
	font-size: 11px;
	font-weight: 850;
}

.ffh-equipment-add-form .ffh-button {
	min-height: 45px;
}

.ffh-equipment-new-category {
	display: grid;
	grid-template-columns: minmax(220px, 0.8fr) minmax(320px, 1.2fr);
	gap: 30px;
	margin-top: 18px;
	padding: 24px;
}

.ffh-equipment-new-category p:last-child {
	margin: 7px 0 0;
	color: var(--ffh-muted);
	font-size: 12px;
}

.ffh-equipment-new-category form {
	display: flex;
	align-items: flex-end;
	gap: 10px;
}

.ffh-equipment-new-category .ffh-field {
	flex: 1;
}

.ffh-equipment-new-category .ffh-button {
	min-height: 45px;
}

.ffh-footer {
	display: flex;
	justify-content: space-between;
	gap: 20px;
	padding: 18px 44px;
	border-top: 1px solid var(--ffh-line);
	background: #fff;
	color: var(--ffh-muted);
	font-size: 10px;
	font-weight: 700;
	letter-spacing: 0.04em;
	text-transform: uppercase;
}

.ffh-portal-shell--login {
	display: grid;
	min-height: 720px;
	background:
		radial-gradient(circle at 18% 16%, rgba(189, 18, 48, 0.3), transparent 28%),
		radial-gradient(circle at 80% 85%, rgba(39, 93, 156, 0.24), transparent 28%),
		linear-gradient(145deg, #121a29, #222e43);
	place-items: center;
}

.ffh-login-card,
.ffh-access-card {
	width: min(460px, calc(100% - 36px));
	padding: 38px;
	border: 1px solid rgba(255, 255, 255, 0.15);
	border-radius: 20px;
	background: rgba(255, 255, 255, 0.97);
	box-shadow: 0 24px 70px rgba(0, 0, 0, 0.28);
}

.ffh-login-card > .ffh-brand-mark {
	width: 54px;
	height: 62px;
	margin-bottom: 20px;
}

.ffh-login-card h2 {
	margin-bottom: 8px;
	font-size: 34px;
	font-weight: 850;
}

.ffh-login-intro {
	margin-bottom: 25px;
	color: var(--ffh-muted);
	font-size: 14px;
}

.ffh-login-card form {
	margin: 0;
}

.ffh-login-card label {
	display: block;
	margin-bottom: 7px;
	color: var(--ffh-ink);
	font-size: 12px;
	font-weight: 750;
}

.ffh-login-card input[type="text"],
.ffh-login-card input[type="password"] {
	width: 100%;
	min-height: 46px;
	margin: 0 0 16px;
	padding: 10px 12px;
	border: 1px solid #d7dce4;
	border-radius: 9px;
}

.ffh-login-card .login-remember label {
	display: flex;
	align-items: center;
	gap: 8px;
}

.ffh-login-card input[type="submit"] {
	width: 100%;
	min-height: 47px;
	margin-top: 7px;
	border: 0;
	border-radius: 9px;
	background: var(--ffh-red);
	color: #fff;
	cursor: pointer;
	font-weight: 800;
}

.ffh-access-card {
	margin: 90px auto;
	text-align: center;
}

.ffh-access-icon {
	display: grid;
	width: 50px;
	height: 50px;
	margin: 0 auto 15px;
	border-radius: 50%;
	background: var(--ffh-red-soft);
	color: var(--ffh-red);
	font-size: 23px;
	font-weight: 850;
	place-items: center;
}

.ffh-access-card h2 {
	margin-bottom: 8px;
	font-size: 24px;
}

.ffh-access-card p {
	margin-bottom: 0;
	color: var(--ffh-muted);
}

/* Laptop / small desktop: keep the full navigation, but give it its own row.
 * Many Full-HD notebooks report about 1536 CSS px at 125% Windows scaling.
 * Switch earlier so the header never gets squeezed into one line.
 * Tablet/phone navigation still switches to the hamburger menu at 1024px below. */
@media (min-width: 1025px) and (max-width: 1700px) {
	.ffh-topbar {
		grid-template-columns: minmax(0, 1fr) auto;
		padding-right: 24px;
		padding-left: 24px;
	}

	.ffh-brand {
		min-width: 0;
	}

	.ffh-nav {
		grid-column: 1 / -1;
		grid-row: 2;
		min-height: 50px;
		justify-content: safe center;
		gap: 2px;
		overflow: visible;
		border-top: 1px solid var(--ffh-line);
	}

	.ffh-nav > a,
	.ffh-nav-dropdown > summary {
		padding-right: 13px;
		padding-left: 13px;
		font-size: 13px;
	}

	.ffh-nav > a::after,
	.ffh-nav-dropdown > summary::after {
		right: 13px;
		left: 13px;
	}

	.ffh-nav > a > span,
	.ffh-nav-dropdown-symbol {
		font-size: 16px;
	}

	.ffh-user {
		min-width: auto;
	}
}

@media (max-width: 1180px) {
	.ffh-stat-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.ffh-vehicle-grid,
	.ffh-vehicle-grid--compact {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.ffh-detail-layout {
		grid-template-columns: minmax(0, 1.4fr) minmax(290px, 0.75fr);
	}
}

@media (max-width: 860px) {
	.ffh-portal-shell {
		width: min(100%, calc(100vw - 16px));
		margin-top: 8px;
		border-radius: 17px;
	}

	.ffh-topbar {
		position: relative;
		grid-template-columns: 1fr auto;
		min-height: 72px;
		padding: 0 18px;
	}

	.ffh-brand {
		min-width: 0;
	}

	.ffh-brand-mark {
		width: 38px;
		height: 44px;
	}

	.ffh-user {
		display: none;
	}

	.ffh-mobile-toggle {
		display: block;
	}

	.ffh-nav {
		position: absolute;
		top: 72px;
		right: 0;
		left: 0;
		z-index: 20;
		display: none;
		min-height: auto;
		align-items: stretch;
		flex-direction: column;
		padding: 8px 15px 14px;
		border-bottom: 1px solid var(--ffh-line);
		background: #fff;
		box-shadow: 0 14px 24px rgba(16, 24, 40, 0.12);
	}

	.ffh-nav-open .ffh-nav {
		display: flex;
	}

	.ffh-nav > a,
	.ffh-nav-dropdown > summary {
		min-height: 46px;
		padding: 0 12px;
		border-radius: 8px;
	}

	.ffh-nav > a::after,
	.ffh-nav-dropdown > summary::after {
		display: none;
	}

	.ffh-nav > a.is-active,
	.ffh-nav-dropdown.is-active > summary,
	.ffh-nav-dropdown[open] > summary {
		background: var(--ffh-red-soft);
	}

	.ffh-nav-dropdown {
		display: block;
		align-self: auto;
	}

	.ffh-nav-dropdown > summary {
		width: 100%;
	}

	.ffh-nav-chevron {
		margin-left: auto;
	}

	.ffh-nav-dropdown-menu,
	.ffh-nav-dropdown-menu--right {
		position: static;
		width: auto;
		min-width: 0;
		margin: 5px 0 8px 19px;
		padding: 5px;
		transform: none;
		border: 0;
		border-left: 2px solid #f0ccd3;
		border-radius: 0 10px 10px 0;
		background: #f8f9fb;
		box-shadow: none;
	}

	.ffh-nav-dropdown-menu a {
		min-height: 52px;
		padding: 7px 9px;
	}

	.ffh-mobile-logout {
		display: block;
		margin: 7px 0 0;
		padding: 13px 12px 2px;
		border-top: 1px solid var(--ffh-line);
	}

	.ffh-mobile-logout button {
		display: flex;
		width: 100%;
		align-items: center;
		justify-content: space-between;
		padding: 11px 12px;
		border: 1px solid #f0ccd3;
		border-radius: 8px;
		background: var(--ffh-red-soft);
		color: var(--ffh-red);
		cursor: pointer;
		font: inherit;
		font-size: 13px;
		font-weight: 800;
		text-align: left;
	}

	.ffh-mobile-logout small {
		max-width: 55%;
		overflow: hidden;
		color: #7b5360;
		font-size: 11px;
		font-weight: 650;
		text-overflow: ellipsis;
		white-space: nowrap;
	}

	.ffh-main {
		padding: 28px 20px 38px;
	}

	.ffh-page-heading,
	.ffh-page-heading--hero {
		align-items: flex-start;
		flex-direction: column;
	}

	.ffh-page-heading--hero {
		padding: 28px;
	}

	.ffh-dashboard-grid,
	.ffh-detail-layout {
		grid-template-columns: 1fr;
	}

	.ffh-form-section {
		grid-template-columns: 1fr;
		gap: 22px;
	}

	.ffh-vehicle-hero {
		grid-template-columns: 1fr;
	}

	.ffh-vehicle-hero-image {
		min-height: 260px;
	}

	.ffh-vehicle-hero-copy {
		padding: 30px;
	}

	.ffh-detail-sidebar {
		grid-row: auto;
	}

	.ffh-equipment-toolbar,
	.ffh-equipment-new-category {
		grid-template-columns: 1fr;
	}

	.ffh-equipment-year-nav {
		justify-content: flex-start;
	}
}

@media (max-width: 620px) {
	.ffh-main {
		padding: 23px 14px 32px;
	}

	.ffh-page-heading h1 {
		font-size: 31px;
	}

	.ffh-page-heading--hero {
		min-height: 0;
		padding: 24px 22px;
	}

	.ffh-heading-actions,
	.ffh-page-heading .ffh-button {
		width: 100%;
	}

	.ffh-heading-actions .ffh-button {
		flex: 1;
	}

	.ffh-heading-actions {
		flex-direction: column;
	}

	.ffh-stat-grid,
	.ffh-vehicle-grid,
	.ffh-vehicle-grid--compact,
	.ffh-form-grid,
	.ffh-data-grid {
		grid-template-columns: 1fr;
	}

	.ffh-stat-grid {
		gap: 10px;
	}

	.ffh-stat-card {
		min-height: 90px;
		padding: 16px;
	}

	.ffh-stat-card strong {
		font-size: 26px;
	}

	.ffh-filterbar {
		align-items: stretch;
		flex-direction: column;
	}

	.ffh-search,
	.ffh-filterbar select {
		width: 100%;
		min-width: 0;
	}

	.ffh-panel-heading {
		align-items: flex-start;
		padding: 18px;
	}

	.ffh-deadline,
	.ffh-activity {
		padding-right: 5px;
		padding-left: 5px;
	}

	.ffh-deadline > .ffh-pill,
	.ffh-activity > .ffh-log-status {
		display: none;
	}

	.ffh-panel .ffh-vehicle-grid {
		padding: 14px;
	}

	.ffh-form-panel {
		padding: 0 18px 20px;
	}

	.ffh-form-section {
		padding: 25px 0;
	}

	.ffh-field--wide {
		grid-column: auto;
	}

	.ffh-form-actions {
		align-items: stretch;
		flex-direction: column-reverse;
	}

	.ffh-equipment-toolbar {
		padding: 17px;
	}

	.ffh-equipment-year-nav,
	.ffh-equipment-year-nav form {
		flex-wrap: wrap;
	}

	.ffh-equipment-legend {
		display: grid;
		grid-template-columns: 1fr;
	}

	.ffh-equipment-category-heading {
		align-items: flex-start;
		flex-direction: column;
		padding: 17px;
	}

	.ffh-equipment-table {
		min-width: 970px;
	}

	.ffh-equipment-table th:first-child {
		width: 190px;
		padding-right: 10px;
		padding-left: 13px;
	}

	.ffh-equipment-cell {
		width: 42px;
		height: 42px;
	}

	.ffh-equipment-add-form,
	.ffh-equipment-new-category form {
		align-items: stretch;
		flex-direction: column;
	}

	.ffh-equipment-add-form .ffh-equipment-quantity-field {
		width: 100%;
		max-width: none;
		flex-basis: auto;
	}

	.ffh-equipment-add-form .ffh-equipment-type-field {
		width: 100%;
		max-width: none;
		flex-basis: auto;
	}

	.ffh-equipment-new-category {
		gap: 20px;
		padding: 20px 17px;
	}

	.ffh-vehicle-hero-image {
		min-height: 220px;
	}

	.ffh-vehicle-hero-copy {
		padding: 25px 22px;
	}

	.ffh-vehicle-hero-copy h1 {
		font-size: 39px;
	}

	.ffh-data-grid {
		padding: 5px 20px 20px;
	}

	.ffh-data-grid > div {
		padding-right: 0;
	}

	.ffh-timeline {
		padding: 19px 14px;
	}

	.ffh-timeline::before {
		left: 25px;
	}

	.ffh-timeline-card header {
		flex-direction: column;
	}

	.ffh-footer {
		padding: 16px 20px;
		flex-direction: column;
		gap: 4px;
	}

	.ffh-login-card {
		padding: 30px 24px;
	}
}

@media (prefers-reduced-motion: reduce) {
	.ffh-portal-shell *,
	.ffh-portal-shell *::before,
	.ffh-portal-shell *::after {
		scroll-behavior: auto !important;
		transition: none !important;
	}
}

/* Standalone application shell: intentionally independent from every WP theme. */
html:has(.ffh-standalone-body) {
	margin: 0 !important;
	padding: 0 !important;
	background: #f3f5f8;
}

.ffh-standalone-body {
	--ffh-red: #bd1230;
	--ffh-red-dark: #8f0c24;
	--ffh-red-soft: #fff0f2;
	--ffh-ink: #172033;
	--ffh-muted: #667085;
	--ffh-line: #e4e7ec;
	--ffh-canvas: #f3f5f8;
	--ffh-panel: #fff;
	--ffh-green: #16845b;
	--ffh-green-soft: #e9f8f2;
	--ffh-amber: #b05f00;
	--ffh-amber-soft: #fff5df;
	--ffh-blue: #275d9c;
	--ffh-blue-soft: #eaf2fb;
	min-width: 320px;
	min-height: 100vh;
	margin: 0 !important;
	padding: 0 !important;
	background: var(--ffh-canvas);
	color: var(--ffh-ink);
	font-family: Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}

.ffh-portal-shell--standalone {
	position: relative;
	left: auto;
	width: 100%;
	min-height: 100vh;
	margin: 0;
	transform: none;
	border: 0;
	border-radius: 0;
	box-shadow: none;
}

.ffh-portal-shell--standalone .ffh-topbar {
	position: sticky;
	top: 0;
	z-index: 50;
}

.ffh-portal-shell--standalone .ffh-main {
	width: min(1440px, 100%);
	margin: 0 auto;
}

.ffh-portal-shell--standalone .ffh-footer {
	margin-top: auto;
}

.ffh-vehicle-image > img,
.ffh-vehicle-hero-image > img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.ffh-logout-button {
	display: grid;
	width: 34px;
	height: 34px;
	padding: 0;
	border: 1px solid var(--ffh-line);
	border-radius: 9px;
	background: #fff;
	color: var(--ffh-muted);
	cursor: pointer;
	font-size: 17px;
	place-items: center;
}

.ffh-logout-button:hover {
	border-color: #e5a8b4;
	background: var(--ffh-red-soft);
	color: var(--ffh-red);
}

.ffh-user > form {
	margin: 0;
}

.ffh-field-hint {
	margin: 14px 0 0;
	color: var(--ffh-muted);
	font-size: 11px;
}

.ffh-user-form {
	max-width: 900px;
	padding: 30px;
}

.ffh-role-badge {
	display: inline-flex;
	padding: 5px 9px;
	border-radius: 999px;
	background: #eef1f5;
	color: #536071;
	font-size: 10px;
	font-weight: 850;
	white-space: nowrap;
}

.ffh-role-badge--admin {
	background: var(--ffh-red-soft);
	color: var(--ffh-red);
}

.ffh-role-badge--member {
	background: #fff1d6;
	color: #9a5a00;
}

.ffh-role-badge--removed {
	background: #f1f2f4;
	color: #6d7787;
}

.ffh-table-subline {
	display: block;
	margin-top: 3px;
	color: var(--ffh-muted);
	font-size: 10px;
}

.ffh-table-action {
	white-space: nowrap;
}

/* Trello task board. */
.ffh-trello-heading .ffh-heading-actions {
	flex-wrap: wrap;
}

.ffh-trello-board-link {
	margin: -12px 0 18px;
	font-size: 12px;
	font-weight: 750;
	text-align: right;
}

.ffh-trello-board-link a {
	color: var(--ffh-red);
}

.ffh-trello-board {
	display: grid;
	overflow-x: auto;
	align-items: start;
	grid-auto-columns: minmax(285px, 330px);
	grid-auto-flow: column;
	gap: 16px;
	padding: 2px 2px 20px;
	scrollbar-color: #c4cad4 transparent;
	scroll-snap-type: x proximity;
}

.ffh-trello-list {
	overflow: hidden;
	border: 1px solid var(--ffh-line);
	border-radius: 16px;
	background: #e9edf3;
	scroll-snap-align: start;
}

.ffh-trello-list > header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	padding: 15px 16px 12px;
}

.ffh-trello-list > header h2 {
	margin: 0;
	font-size: 14px;
	font-weight: 850;
}

.ffh-trello-list > header > span {
	display: grid;
	min-width: 25px;
	height: 25px;
	border-radius: 50%;
	background: #d6dce5;
	color: #475467;
	font-size: 10px;
	font-weight: 850;
	place-items: center;
}

.ffh-trello-cards {
	display: grid;
	gap: 10px;
	padding: 0 10px 12px;
}

.ffh-trello-card {
	padding: 14px;
	border: 1px solid #dce1e8;
	border-radius: 12px;
	background: #fff;
	box-shadow: 0 2px 5px rgba(16, 24, 40, 0.06);
}

.ffh-trello-card h3 {
	margin: 0;
	font-size: 13px;
	font-weight: 800;
	letter-spacing: -0.01em;
	line-height: 1.35;
}

.ffh-trello-card > p {
	margin: 8px 0 0;
	color: var(--ffh-muted);
	font-size: 11px;
	line-height: 1.5;
}

.ffh-trello-labels {
	display: flex;
	flex-wrap: wrap;
	gap: 5px;
	margin-bottom: 9px;
}

.ffh-trello-label {
	padding: 3px 7px;
	border-radius: 999px;
	background: #dfe3e8;
	color: #344054;
	font-size: 8px;
	font-weight: 850;
	letter-spacing: 0.03em;
}

.ffh-trello-label--yellow { background: #f9e154; color: #594a00; }
.ffh-trello-label--purple { background: #c9a8ff; color: #44217a; }
.ffh-trello-label--blue { background: #82b8ff; color: #123f73; }
.ffh-trello-label--red { background: #ff9b9b; color: #761b1b; }
.ffh-trello-label--green { background: #77d6ae; color: #104f36; }
.ffh-trello-label--orange { background: #ffc078; color: #713b00; }
.ffh-trello-label--black { background: #596577; color: #fff; }
.ffh-trello-label--sky { background: #83d9ec; color: #124f5d; }
.ffh-trello-label--pink { background: #f2a6d0; color: #70244d; }
.ffh-trello-label--lime { background: #b4df65; color: #38520c; }

.ffh-trello-due {
	display: inline-flex;
	margin-top: 10px;
	padding: 4px 7px;
	border-radius: 6px;
	background: #eef1f5;
	color: #475467;
	font-size: 9px;
	font-weight: 800;
}

.ffh-trello-due--soon {
	background: var(--ffh-amber-soft);
	color: var(--ffh-amber);
}

.ffh-trello-due--overdue {
	background: var(--ffh-red-soft);
	color: var(--ffh-red);
}

.ffh-trello-due--done {
	background: var(--ffh-green-soft);
	color: var(--ffh-green);
}

.ffh-trello-card-actions {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 10px;
	margin-top: 12px;
	padding-top: 10px;
	border-top: 1px solid #edf0f4;
	font-size: 10px;
}

.ffh-trello-move {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	gap: 7px;
	margin-top: 10px;
}

.ffh-trello-move select {
	width: 100%;
	height: 33px;
	padding: 0 27px 0 8px;
	border: 1px solid var(--ffh-line);
	border-radius: 7px;
	background: #fff;
	font-size: 9px;
}

.ffh-trello-list-empty {
	padding: 24px 10px;
	color: #7b8493;
	font-size: 10px;
	text-align: center;
}

.ffh-checkbox-field {
	display: flex;
	align-items: center;
	gap: 10px;
	color: var(--ffh-ink);
	font-size: 12px;
	font-weight: 750;
}

.ffh-checkbox-field input {
	width: 18px;
	height: 18px;
	accent-color: var(--ffh-red);
}

.ffh-trello-hero {
	position: relative;
	display: grid;
	overflow: hidden;
	align-items: center;
	grid-template-columns: auto minmax(0, 1fr) auto;
	gap: 20px;
	margin-bottom: 16px;
	padding: clamp(22px, 3vw, 34px);
	border-radius: 20px;
	background:
		radial-gradient(circle at 85% -20%, rgba(255, 255, 255, 0.24), transparent 34%),
		linear-gradient(135deg, #0c66e4, #1d4fa3);
	box-shadow: 0 16px 38px rgba(12, 102, 228, 0.2);
	color: #fff;
}

.ffh-trello-hero::after {
	position: absolute;
	right: 18%;
	bottom: -75px;
	width: 190px;
	height: 190px;
	border: 36px solid rgba(255, 255, 255, 0.07);
	border-radius: 50%;
	content: "";
}

.ffh-trello-hero > * {
	position: relative;
	z-index: 1;
}

.ffh-trello-hero-mark {
	display: grid;
	width: 58px;
	height: 58px;
	grid-template-columns: 1fr 1fr;
	gap: 6px;
	padding: 10px;
	border: 1px solid rgba(255, 255, 255, 0.28);
	border-radius: 15px;
	background: rgba(255, 255, 255, 0.17);
	box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.18);
}

.ffh-trello-hero-mark span {
	border-radius: 4px;
	background: #fff;
}

.ffh-trello-hero-mark span:last-child {
	height: 68%;
}

.ffh-trello-hero .ffh-eyebrow {
	margin-bottom: 4px;
	color: #cfe1ff;
}

.ffh-trello-hero h1 {
	margin: 0;
	color: #fff;
	font-size: clamp(25px, 3vw, 38px);
	font-weight: 880;
	letter-spacing: -0.04em;
}

.ffh-trello-hero p:last-child {
	margin-top: 5px;
	color: rgba(255, 255, 255, 0.8);
	font-size: 12px;
}

.ffh-trello-hero .ffh-button--primary {
	border-color: #fff;
	background: #fff;
	color: #0c4fa7 !important;
}

.ffh-trello-hero .ffh-button--primary:hover {
	border-color: #e6efff;
	background: #e6efff;
}

.ffh-trello-hero .ffh-button--secondary {
	border-color: rgba(255, 255, 255, 0.38);
	background: rgba(255, 255, 255, 0.12);
	color: #fff !important;
}

.ffh-trello-board-tabs {
	display: flex;
	overflow-x: auto;
	align-items: center;
	gap: 8px;
	margin-bottom: 15px;
	padding: 2px 1px 5px;
	scrollbar-width: thin;
}

.ffh-trello-board-tabs a {
	display: inline-flex;
	align-items: center;
	flex: 0 0 auto;
	gap: 7px;
	min-height: 38px;
	padding: 0 14px;
	border: 1px solid var(--ffh-line);
	border-radius: 10px;
	background: #fff;
	color: #475467;
	font-size: 11px;
	font-weight: 780;
}

.ffh-trello-board-tabs a:hover {
	border-color: #91b9ef;
	color: #0c66e4;
}

.ffh-trello-board-tabs a.is-active {
	border-color: #0c66e4;
	background: #e9f2ff;
	box-shadow: 0 4px 12px rgba(12, 102, 228, 0.1);
	color: #0c55bd;
}

.ffh-trello-board-tabs a span {
	font-size: 14px;
}

.ffh-trello-canvas {
	overflow: hidden;
	padding: 16px 8px 4px 16px;
	border-radius: 20px;
	background:
		linear-gradient(120deg, rgba(0, 0, 0, 0.02), rgba(255, 255, 255, 0.12)),
		var(--ffh-trello-board-bg, #0c66e4);
	box-shadow: 0 18px 45px rgba(16, 24, 40, 0.17);
}

.ffh-trello-canvas-topline {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	padding: 1px 10px 14px 3px;
	color: #fff;
}

.ffh-trello-canvas-topline > div {
	display: grid;
	gap: 2px;
}

.ffh-trello-canvas-topline strong {
	font-size: 13px;
	font-weight: 850;
}

.ffh-trello-canvas-topline span {
	color: rgba(255, 255, 255, 0.76);
	font-size: 9px;
}

.ffh-trello-canvas-topline a {
	padding: 7px 10px;
	border-radius: 7px;
	background: rgba(0, 0, 0, 0.16);
	color: #fff;
	font-size: 9px;
	font-weight: 800;
}

.ffh-trello-canvas .ffh-trello-board {
	padding: 0 8px 14px 0;
}

.ffh-trello-canvas .ffh-trello-list {
	border-color: rgba(255, 255, 255, 0.22);
	background: rgba(239, 242, 247, 0.96);
	box-shadow: 0 8px 22px rgba(0, 0, 0, 0.12);
	backdrop-filter: blur(8px);
}

.ffh-trello-canvas .ffh-trello-list > header {
	padding: 15px 15px 11px;
}

.ffh-trello-canvas .ffh-trello-list > header h2::before {
	display: inline-block;
	width: 7px;
	height: 7px;
	margin-right: 7px;
	border-radius: 50%;
	background: #0c66e4;
	box-shadow: 0 0 0 3px rgba(12, 102, 228, 0.12);
	content: "";
	vertical-align: 1px;
}

.ffh-trello-card {
	transition: transform 160ms ease, border-color 160ms ease, box-shadow 160ms ease;
}

.ffh-trello-card:hover {
	border-color: #b8c8dc;
	box-shadow: 0 8px 22px rgba(16, 24, 40, 0.12);
	transform: translateY(-2px);
}

.ffh-trello-card-meta {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 8px;
	margin-top: 10px;
}

.ffh-trello-card-meta .ffh-trello-due {
	margin-top: 0;
}

.ffh-trello-card-number {
	color: #98a2b3;
	font-size: 8px;
	font-weight: 750;
}

.ffh-trello-list-empty {
	display: grid;
	gap: 7px;
	place-items: center;
}

.ffh-trello-list-empty span {
	display: grid;
	width: 28px;
	height: 28px;
	border-radius: 50%;
	background: #dfe5ed;
	color: #667085;
	place-items: center;
}

.ffh-trello-settings-grid {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(340px, 0.82fr);
	gap: 18px;
}

.ffh-trello-settings-grid > .ffh-panel {
	margin: 0;
}

.ffh-trello-board-manager {
	padding: 24px;
}

.ffh-trello-connected-boards {
	display: grid;
	gap: 9px;
	margin-top: 20px;
}

.ffh-trello-connected-boards article {
	display: grid;
	align-items: center;
	grid-template-columns: auto minmax(0, 1fr) auto;
	gap: 11px;
	padding: 11px;
	border: 1px solid var(--ffh-line);
	border-radius: 11px;
	background: #fafbfc;
}

.ffh-trello-connected-icon {
	display: grid;
	width: 34px;
	height: 34px;
	border-radius: 9px;
	background: #e9f2ff;
	color: #0c66e4;
	font-size: 15px;
	place-items: center;
}

.ffh-trello-connected-boards article > div {
	display: grid;
	min-width: 0;
	gap: 2px;
}

.ffh-trello-connected-boards strong,
.ffh-trello-connected-boards small {
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.ffh-trello-connected-boards strong {
	font-size: 11px;
}

.ffh-trello-connected-boards small {
	color: var(--ffh-muted);
	font-size: 8px;
}

.ffh-trello-add-board {
	display: grid;
	align-items: end;
	grid-template-columns: minmax(0, 1fr) auto;
	gap: 10px;
	margin-top: 18px;
	padding-top: 18px;
	border-top: 1px solid var(--ffh-line);
}

@media (max-width: 980px) {
	.ffh-trello-settings-grid {
		grid-template-columns: 1fr;
	}

	.ffh-trello-hero {
		grid-template-columns: auto minmax(0, 1fr);
	}

	.ffh-trello-hero .ffh-heading-actions {
		grid-column: 1 / -1;
	}
}

@media (max-width: 620px) {
	.ffh-trello-hero {
		grid-template-columns: 1fr;
		gap: 13px;
		padding: 22px;
	}

	.ffh-trello-hero-mark {
		width: 48px;
		height: 48px;
	}

	.ffh-trello-canvas {
		margin-right: -12px;
		margin-left: -12px;
		padding-left: 12px;
		border-radius: 15px 0 0 15px;
	}

	.ffh-trello-board {
		grid-auto-columns: minmax(272px, 85vw);
	}

	.ffh-trello-add-board {
		grid-template-columns: 1fr;
	}
}

/* Digital trip log. */
.ffh-page-heading--trip {
	align-items: flex-end;
}

.ffh-trip-month-filter {
	display: flex;
	align-items: flex-end;
	gap: 9px;
}

.ffh-trip-month-filter label {
	display: grid;
	gap: 5px;
	color: var(--ffh-muted);
	font-size: 10px;
	font-weight: 800;
	letter-spacing: 0.04em;
	text-transform: uppercase;
}

.ffh-trip-month-filter input {
	min-height: 40px;
	padding: 8px 10px;
	border: 1px solid var(--ffh-line);
	border-radius: 9px;
	background: #fff;
	color: var(--ffh-ink);
	font: inherit;
}

.ffh-trip-report-settings {
	display: grid;
	grid-template-columns: minmax(280px, 1fr) minmax(330px, 0.8fr);
	align-items: center;
	gap: 18px 32px;
	margin-bottom: 22px;
	padding: 22px;
	border-color: #cdd8e8;
	background: linear-gradient(135deg, #fff, #f3f7fc);
}

.ffh-trip-report-copy {
	display: flex;
	align-items: center;
	gap: 15px;
}

.ffh-trip-report-copy h2,
.ffh-trip-report-copy p {
	margin: 0;
}

.ffh-trip-report-copy h2 {
	font-size: 20px;
}

.ffh-trip-report-copy p:last-child {
	margin-top: 4px;
	color: var(--ffh-muted);
	font-size: 12px;
}

.ffh-trip-report-icon {
	display: grid;
	width: 48px;
	height: 48px;
	flex: 0 0 48px;
	border-radius: 14px;
	background: #e5edf8;
	color: var(--ffh-blue);
	font-size: 23px;
	place-items: center;
}

.ffh-trip-report-settings > form {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	align-items: end;
	gap: 10px;
}

.ffh-trip-report-warning,
.ffh-trip-report-status {
	grid-column: 1 / -1;
	margin: 0;
	padding: 10px 12px;
	border-radius: 9px;
	font-size: 11px;
	font-weight: 700;
}

.ffh-trip-report-warning {
	background: var(--ffh-amber-soft);
	color: #7a5100;
}

.ffh-trip-report-status {
	background: var(--ffh-green-soft);
	color: #176747;
}

.ffh-trip-report-status span {
	margin-right: 5px;
	font-weight: 900;
}

.ffh-trip-report-settings > .ffh-trip-report-manual {
	display: flex;
	grid-column: 1 / -1;
	align-items: center;
	justify-content: flex-start;
	gap: 12px;
	padding-top: 15px;
	border-top: 1px solid #dfe6ef;
}

.ffh-trip-report-manual small {
	color: var(--ffh-muted);
	font-size: 10px;
}

.ffh-trip-report-settings > .ffh-trip-report-editor {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	align-items: stretch;
	gap: 16px;
}

.ffh-trip-report-enabled {
	padding: 12px 14px;
	border: 1px solid #cdd8e8;
	border-radius: 10px;
	background: #f5f8fc;
}

.ffh-trip-report-grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 12px;
}

.ffh-trip-recipient-fieldset {
	min-width: 0;
	margin: 0;
	padding: 13px;
	border: 1px solid var(--ffh-line);
	border-radius: 11px;
}

.ffh-trip-recipient-fieldset legend {
	padding: 0 6px;
	color: var(--ffh-muted);
	font-size: 10px;
	font-weight: 800;
	letter-spacing: 0.04em;
	text-transform: uppercase;
}

.ffh-trip-recipient-list {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 8px;
}

.ffh-trip-recipient-list label {
	display: flex;
	align-items: center;
	gap: 9px;
	padding: 9px 10px;
	border: 1px solid #e0e5ec;
	border-radius: 9px;
	background: #fff;
	cursor: pointer;
}

.ffh-trip-recipient-list input {
	width: 17px;
	height: 17px;
	flex: 0 0 17px;
	accent-color: var(--ffh-red);
}

.ffh-trip-recipient-list span,
.ffh-trip-recipient-list small {
	display: block;
	min-width: 0;
}

.ffh-trip-recipient-list strong {
	display: block;
	font-size: 11px;
}

.ffh-trip-recipient-list small {
	margin-top: 2px;
	overflow: hidden;
	color: var(--ffh-muted);
	font-size: 9px;
	text-overflow: ellipsis;
}

.ffh-trip-report-actions {
	display: flex;
	grid-column: 1 / -1;
	flex-wrap: wrap;
	gap: 9px;
	padding-top: 15px;
	border-top: 1px solid #dfe6ef;
}

.ffh-trip-report-actions form {
	margin: 0;
}

/* Administrator change log. */
.ffh-audit-filter {
	display: grid;
	grid-template-columns: repeat(4, minmax(140px, 1fr)) auto auto;
	align-items: end;
	gap: 12px;
	margin-bottom: 20px;
	padding: 18px;
}

.ffh-audit-filter > .ffh-table-action {
	align-self: center;
	justify-self: center;
}

.ffh-audit-panel {
	min-width: 0;
}

.ffh-audit-table td {
	vertical-align: top;
}

.ffh-audit-table th:first-child {
	width: 105px;
}

.ffh-audit-table th:nth-child(2) {
	width: 160px;
}

.ffh-audit-table th:nth-child(3),
.ffh-audit-table th:nth-child(4) {
	width: 115px;
}

.ffh-audit-action {
	display: inline-flex;
	padding: 5px 8px;
	border-radius: 999px;
	background: #edf2f8;
	color: var(--ffh-blue);
	font-size: 10px;
	font-weight: 850;
}

.ffh-audit-action--delete,
.ffh-audit-action--archive,
.ffh-audit-action--disconnect {
	background: var(--ffh-red-soft);
	color: var(--ffh-red-dark);
}

.ffh-audit-action--create,
.ffh-audit-action--check,
.ffh-audit-action--connect {
	background: var(--ffh-green-soft);
	color: #176747;
}

.ffh-audit-reset {
	margin-top: 20px;
}

.ffh-audit-reset form {
	display: grid;
	justify-items: start;
	gap: 12px;
}

.ffh-audit-reset .ffh-checkbox-field {
	margin: 0;
}

.ffh-trip-layout {
	display: grid;
	grid-template-columns: minmax(300px, 0.38fr) minmax(0, 1fr);
	align-items: start;
	gap: 22px;
}

.ffh-trip-entry-form {
	display: grid;
	gap: 16px;
	padding: 20px;
}

.ffh-input-unit {
	display: block;
	position: relative;
	font-weight: 500;
}

.ffh-input-unit input {
	padding-right: 45px;
}

.ffh-input-unit i {
	position: absolute;
	top: 50%;
	right: 13px;
	color: var(--ffh-muted);
	font-size: 11px;
	font-style: normal;
	font-weight: 800;
	transform: translateY(-50%);
}

.ffh-trip-history {
	min-width: 0;
}

.ffh-trip-table td {
	vertical-align: middle;
}

.ffh-trip-level {
	display: inline-flex;
	min-width: 52px;
	justify-content: center;
	padding: 6px 8px;
	border-radius: 999px;
	font-size: 11px;
	font-weight: 850;
}

.ffh-trip-level--low {
	background: var(--ffh-red-soft);
	color: var(--ffh-red-dark);
}

.ffh-trip-level--medium {
	background: var(--ffh-amber-soft);
	color: #7a5100;
}

.ffh-trip-level--high {
	background: var(--ffh-green-soft);
	color: #176747;
}

@media (max-width: 1080px) {
	.ffh-trip-layout,
	.ffh-trip-report-settings {
		grid-template-columns: 1fr;
	}

	.ffh-audit-filter {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (max-width: 620px) {
	.ffh-page-heading--trip {
		align-items: stretch;
	}

	.ffh-trip-month-filter,
	.ffh-trip-report-settings > form {
		grid-template-columns: 1fr;
		width: 100%;
	}

	.ffh-trip-month-filter {
		display: grid;
	}

	.ffh-trip-month-filter input,
	.ffh-trip-month-filter .ffh-button,
	.ffh-trip-report-settings .ffh-button {
		width: 100%;
	}

	.ffh-trip-report-settings,
	.ffh-trip-entry-form {
		padding: 16px;
	}

	.ffh-trip-report-copy {
		align-items: flex-start;
	}

	.ffh-trip-report-settings > .ffh-trip-report-manual {
		align-items: stretch;
		flex-direction: column;
	}

	.ffh-trip-report-grid,
	.ffh-trip-recipient-list,
	.ffh-audit-filter {
		grid-template-columns: 1fr;
	}

	.ffh-trip-report-actions,
	.ffh-trip-report-actions form,
	.ffh-trip-report-actions .ffh-button {
		width: 100%;
	}
}

/* Standalone login and first-run setup. */
.ffh-auth-body {
	background: #111827;
}

.ffh-auth-layout,
.ffh-auth-layout * {
	box-sizing: border-box;
}

.ffh-auth-layout {
	display: grid;
	grid-template-columns: minmax(360px, 0.82fr) minmax(520px, 1.18fr);
	min-height: 100vh;
}

.ffh-auth-brand {
	position: relative;
	display: flex;
	overflow: hidden;
	align-items: flex-start;
	flex-direction: column;
	justify-content: space-between;
	padding: clamp(40px, 6vw, 82px);
	background:
		radial-gradient(circle at 100% 0, rgba(189, 18, 48, 0.48), transparent 42%),
		linear-gradient(150deg, #111827, #25324a);
	color: #fff;
}

.ffh-auth-brand--simple {
	justify-content: center;
}

.ffh-auth-brand::after {
	position: absolute;
	right: -150px;
	bottom: -160px;
	width: 430px;
	height: 430px;
	border: 72px solid rgba(189, 18, 48, 0.22);
	border-radius: 50%;
	content: "";
}

.ffh-auth-brand-copy,
.ffh-auth-feature-list {
	position: relative;
	z-index: 1;
}

.ffh-auth-shield {
	display: block;
	width: 68px;
	height: 78px;
	margin-bottom: 32px;
}

.ffh-auth-shield img {
	width: 100%;
	height: 100%;
}

.ffh-auth-brand .ffh-eyebrow {
	color: #ff9caf;
}

.ffh-auth-brand h1 {
	margin: 0 0 20px;
	color: #fff;
	font-size: clamp(44px, 4vw, 70px);
	font-weight: 880;
	letter-spacing: -0.06em;
	line-height: 0.95;
}

.ffh-auth-brand-copy > p:last-child {
	max-width: 570px;
	margin: 0;
	color: #cbd2df;
	font-size: clamp(15px, 1.5vw, 19px);
}

.ffh-auth-feature-list {
	display: grid;
	width: 100%;
	gap: 12px;
	margin-top: 55px;
}

.ffh-auth-feature-list > span {
	display: grid;
	padding: 14px 0;
	border-top: 1px solid rgba(255, 255, 255, 0.14);
	line-height: 1.35;
}

.ffh-auth-feature-list strong {
	color: #fff;
	font-size: 13px;
}

.ffh-auth-feature-list small {
	margin-top: 3px;
	color: #99a5b8;
	font-size: 11px;
}

.ffh-auth-panel {
	display: grid;
	padding: 40px;
	background:
		linear-gradient(rgba(255, 255, 255, 0.96), rgba(255, 255, 255, 0.96)),
		repeating-linear-gradient(135deg, #eef1f5 0 1px, transparent 1px 20px);
	place-items: center;
}

.ffh-auth-card {
	width: min(520px, 100%);
	padding: clamp(28px, 5vw, 52px);
	border: 1px solid var(--ffh-line);
	border-radius: 22px;
	background: #fff;
	box-shadow: 0 24px 65px rgba(16, 24, 40, 0.13);
}

.ffh-auth-card h2 {
	margin: 0 0 10px;
	font-size: clamp(28px, 4vw, 38px);
	font-weight: 850;
	letter-spacing: -0.04em;
	line-height: 1.1;
}

.ffh-auth-intro {
	margin-bottom: 25px;
	color: var(--ffh-muted);
	font-size: 14px;
}

.ffh-auth-form {
	display: grid;
	gap: 16px;
}

.ffh-auth-form .ffh-button {
	margin-top: 5px;
}

.ffh-password-change-logout {
	margin-top: 12px;
}

.ffh-auth-divider {
	display: flex;
	align-items: center;
	gap: 12px;
	margin: 22px 0;
	color: #8a94a4;
	font-size: 10px;
	font-weight: 800;
	letter-spacing: 0.12em;
	text-transform: uppercase;
}

.ffh-auth-divider::before,
.ffh-auth-divider::after {
	flex: 1;
	height: 1px;
	background: var(--ffh-line);
	content: "";
}

.ffh-auth-help {
	margin: 18px 0 0;
	color: var(--ffh-muted);
	font-size: 11px;
	text-align: center;
}

.ffh-auth-card .ffh-notice {
	margin-bottom: 20px;
}

/* Central expiry and inspection equipment. */
.ffh-inspection-editor,
.ffh-inspection-category,
.ffh-inspection-new-category {
	margin-bottom: 20px;
}

.ffh-inspection-editor > form,
.ffh-inspection-item-form {
	display: grid;
	gap: 18px;
	padding: 22px 24px 24px;
}

.ffh-inspection-categories {
	display: grid;
	gap: 20px;
}

.ffh-inspection-category-heading .ffh-heading-actions,
.ffh-inspection-row-actions {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 12px;
}

.ffh-inspection-category-heading .ffh-heading-actions form,
.ffh-inspection-row-actions form {
	margin: 0;
}

.ffh-inspection-row--overdue td:first-child {
	box-shadow: inset 4px 0 var(--ffh-red);
}

.ffh-inspection-row--soon td:first-child {
	box-shadow: inset 4px 0 var(--ffh-amber);
}

.ffh-inspection-add-item {
	border-top: 1px solid var(--ffh-line);
	background: #fafbfc;
}

.ffh-inspection-add-toggle {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 10px;
	min-height: 58px;
	padding: 14px 24px;
	font-weight: 800;
	color: var(--ffh-text);
	cursor: pointer;
	list-style: none;
	transition: background .16s ease, color .16s ease;
}

.ffh-inspection-add-toggle::-webkit-details-marker {
	display: none;
}

.ffh-inspection-add-toggle:hover,
.ffh-inspection-add-toggle:focus-visible {
	background: #f1f5f9;
	color: var(--ffh-red);
	outline: none;
}

.ffh-inspection-add-toggle-icon {
	display: inline-grid;
	place-items: center;
	width: 24px;
	height: 24px;
	font-size: 18px;
	transition: transform .16s ease;
}

.ffh-inspection-add-item[open] .ffh-inspection-add-toggle {
	justify-content: space-between;
	border-bottom: 1px solid var(--ffh-line);
	background: #f8fafc;
}

.ffh-inspection-add-item[open] .ffh-inspection-add-toggle-icon {
	transform: rotate(180deg);
}

.ffh-inspection-add-form {
	background: #fff;
}

.ffh-inspection-add-actions {
	display: flex;
	align-items: center;
	gap: 10px;
	flex-wrap: wrap;
}

.ffh-inspection-new-category {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(320px, 0.8fr);
	align-items: end;
	gap: 28px;
	padding: 24px;
}

.ffh-inspection-new-category h2,
.ffh-inspection-new-category p {
	margin: 0;
}

.ffh-inspection-new-category > div > p:last-child {
	margin-top: 7px;
	color: var(--ffh-muted);
	font-size: 12px;
}

.ffh-inspection-new-category form {
	display: flex;
	align-items: end;
	gap: 12px;
}

.ffh-inspection-new-category .ffh-field {
	flex: 1;
}

@media (max-width: 860px) {
	.ffh-inspection-new-category {
		grid-template-columns: 1fr;
	}
}

@media (max-width: 620px) {
	.ffh-inspection-editor > form,
	.ffh-inspection-item-form {
		padding: 18px;
	}

	.ffh-inspection-new-category form {
		align-items: stretch;
		flex-direction: column;
	}

	.ffh-inspection-category-heading {
		align-items: flex-start;
		flex-direction: column;
	}
}

@media (max-width: 980px) {
	.ffh-auth-layout {
		grid-template-columns: 1fr;
	}

	.ffh-auth-brand {
		min-height: 370px;
		padding: 45px;
	}

	.ffh-auth-brand h1 {
		font-size: 58px;
	}

	.ffh-auth-feature-list {
		display: none;
	}

	.ffh-auth-panel {
		padding: 40px 20px;
	}
}

@media (max-width: 620px) {
	.ffh-auth-brand {
		min-height: 280px;
		padding: 30px 24px;
	}

	.ffh-auth-shield {
		width: 50px;
		height: 58px;
		margin-bottom: 22px;
	}

	.ffh-auth-brand h1 {
		font-size: 45px;
	}

	.ffh-auth-panel {
		padding: 24px 12px;
	}

	.ffh-auth-card {
		padding: 28px 22px;
		border-radius: 17px;
	}

	.ffh-portal-shell--standalone {
		width: 100%;
		margin: 0;
		border-radius: 0;
	}

	.ffh-user-form {
		padding: 20px;
	}
}

/* Native MTF booking module. */
.ffh-booking-heading {
	margin-bottom: 16px;
}

.ffh-booking-tabs {
	display: flex;
	align-items: center;
	gap: 6px;
	margin: 0 0 20px;
	padding: 6px;
	border: 1px solid var(--ffh-line);
	border-radius: 14px;
	background: #fff;
}

.ffh-booking-tabs a {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	min-height: 42px;
	padding: 9px 15px;
	border-radius: 10px;
	color: var(--ffh-muted);
	font-weight: 750;
}

.ffh-booking-tabs a.is-active {
	background: var(--ffh-ink);
	color: #fff;
}

.ffh-booking-tabs a span {
	display: inline-grid;
	min-width: 21px;
	height: 21px;
	place-items: center;
	border-radius: 999px;
	background: var(--ffh-red);
	color: #fff;
	font-size: 11px;
}

.ffh-booking-layout {
	display: grid;
	grid-template-columns: minmax(0, 1.8fr) minmax(310px, 0.72fr);
	align-items: start;
	gap: 20px;
}

.ffh-booking-calendar-heading {
	align-items: center;
}

.ffh-booking-month-nav {
	display: flex;
	align-items: center;
	gap: 7px;
}

.ffh-booking-month-nav a {
	display: inline-grid;
	min-width: 38px;
	min-height: 38px;
	padding: 7px 11px;
	place-items: center;
	border: 1px solid var(--ffh-line);
	border-radius: 9px;
	background: #fff;
	font-size: 13px;
	font-weight: 800;
}

.ffh-booking-calendar-scroll {
	overflow-x: auto;
	padding: 0 18px 20px;
}

.ffh-booking-weekdays,
.ffh-booking-calendar {
	display: grid;
	grid-template-columns: repeat(7, minmax(108px, 1fr));
	min-width: 756px;
}

.ffh-booking-weekdays span {
	padding: 9px;
	color: var(--ffh-muted);
	font-size: 11px;
	font-weight: 850;
	letter-spacing: .08em;
	text-align: center;
	text-transform: uppercase;
}

.ffh-booking-day {
	min-height: 126px;
	padding: 8px;
	border-right: 1px solid var(--ffh-line);
	border-bottom: 1px solid var(--ffh-line);
	background: #fff;
}

.ffh-booking-day:nth-child(7n + 1) {
	border-left: 1px solid var(--ffh-line);
}

.ffh-booking-day:nth-child(-n + 7) {
	border-top: 1px solid var(--ffh-line);
}

.ffh-booking-day.is-outside {
	background: #f7f8fa;
	color: #98a2b3;
}

.ffh-booking-day.is-today {
	box-shadow: inset 0 0 0 2px var(--ffh-red);
}

.ffh-booking-day > header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	margin-bottom: 7px;
}

.ffh-booking-day > header strong {
	display: grid;
	width: 27px;
	height: 27px;
	place-items: center;
	border-radius: 50%;
	font-size: 12px;
}

.ffh-booking-day.is-today > header strong {
	background: var(--ffh-red);
	color: #fff;
}

.ffh-booking-day > header small,
.ffh-booking-free {
	color: #98a2b3;
	font-size: 10px;
}

.ffh-booking-day-items {
	display: grid;
	gap: 5px;
}

.ffh-booking-chip {
	display: grid;
	width: 100%;
	gap: 2px;
	padding: 6px 7px;
	border-top: 0;
	border-right: 0;
	border-bottom: 0;
	border-left: 3px solid var(--ffh-green);
	border-radius: 6px;
	background: var(--ffh-green-soft);
	color: inherit;
	font-family: inherit;
	font-size: 10px;
	line-height: 1.3;
	text-align: left;
}

.ffh-booking-chip--editable {
	cursor: pointer;
}

.ffh-booking-chip--editable:hover,
.ffh-booking-chip--editable:focus-visible {
	box-shadow: 0 0 0 2px rgba(17, 24, 39, .14);
	transform: translateY(-1px);
}

.ffh-booking-chip time {
	color: #126244;
	font-size: 9px;
	font-weight: 900;
	letter-spacing: 0.01em;
}

.ffh-booking-chip--pending {
	border-left-color: var(--ffh-amber);
	background: var(--ffh-amber-soft);
}

.ffh-booking-chip--pending time {
	color: var(--ffh-amber);
}

.ffh-booking-chip--blocked {
	border-left-color: var(--ffh-red);
	background: var(--ffh-red-soft);
	color: var(--ffh-red-dark);
}

.ffh-booking-chip--blocked time {
	color: var(--ffh-red);
}

.ffh-booking-chip strong,
.ffh-booking-chip span,
.ffh-booking-chip time,
.ffh-booking-chip small {
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.ffh-booking-chip small {
	color: var(--ffh-muted);
	font-size: 8px;
}

.ffh-booking-mobile-agenda {
	display: none;
}

.ffh-booking-form-panel {
	position: sticky;
	top: 18px;
}

.ffh-booking-form,
.ffh-booking-settings-form {
	display: grid;
	gap: 16px;
	padding: 22px 24px 24px;
}

.ffh-booking-self {
	display: grid;
	gap: 3px;
	padding: 13px 14px;
	border: 1px solid #bfd9cb;
	border-radius: 10px;
	background: var(--ffh-green-soft);
}

.ffh-booking-self > span {
	color: var(--ffh-muted);
	font-size: 10px;
	font-weight: 800;
	letter-spacing: .05em;
	text-transform: uppercase;
}

.ffh-booking-self small,
.ffh-field-hint {
	color: var(--ffh-muted);
	font-size: 11px;
}

.ffh-field-hint {
	margin: -8px 0 0;
}

.ffh-booking-datetime-grid {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(92px, .55fr);
	gap: 12px;
}

.ffh-booking-repeat[hidden] {
	display: none;
}

.ffh-booking-status {
	display: inline-flex;
	align-items: center;
	width: max-content;
	padding: 4px 9px;
	border-radius: 999px;
	background: #edf0f4;
	color: var(--ffh-muted);
	font-size: 10px;
	font-weight: 850;
	letter-spacing: .04em;
	text-transform: uppercase;
}

.ffh-booking-status--pending {
	background: var(--ffh-amber-soft);
	color: var(--ffh-amber);
}

.ffh-booking-status--approved {
	background: var(--ffh-green-soft);
	color: var(--ffh-green);
}

.ffh-booking-status--rejected,
.ffh-booking-status--cancelled {
	background: var(--ffh-red-soft);
	color: var(--ffh-red);
}

.ffh-booking-list {
	display: grid;
}

.ffh-booking-list-item {
	display: grid;
	grid-template-columns: 72px minmax(0, 1fr) auto;
	align-items: center;
	gap: 20px;
	padding: 19px 24px;
	border-top: 1px solid var(--ffh-line);
}

.ffh-booking-list-date {
	display: grid;
	place-items: center;
	padding: 8px;
	border-radius: 12px;
	background: #f1f3f6;
}

.ffh-booking-list-date strong {
	font-size: 25px;
	line-height: 1;
}

.ffh-booking-list-date span {
	font-size: 10px;
	font-weight: 750;
}

.ffh-booking-list-main h3,
.ffh-booking-list-main p,
.ffh-booking-request h3,
.ffh-booking-request p {
	margin: 5px 0 0;
}

.ffh-booking-list-main p,
.ffh-booking-request p,
.ffh-booking-note {
	color: var(--ffh-muted);
	font-size: 12px;
}

.ffh-booking-admin-section,
.ffh-booking-stats,
.ffh-booking-admin-grid {
	margin-bottom: 20px;
}

.ffh-booking-statistics {
	margin-bottom: 20px;
}

.ffh-booking-statistics .ffh-booking-stats {
	margin-bottom: 9px;
}

.ffh-booking-statistics-reset {
	display: flex;
	align-items: center;
	justify-content: flex-end;
	gap: 12px;
	color: var(--ffh-muted);
	font-size: 11px;
}

.ffh-booking-admin-grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 20px;
}

.ffh-booking-requests {
	display: grid;
	gap: 12px;
	padding: 0 24px 24px;
}

.ffh-booking-request {
	display: grid;
	grid-template-columns: minmax(0, 1.2fr) minmax(230px, .8fr) auto;
	align-items: end;
	gap: 18px;
	padding: 17px;
	border: 1px solid var(--ffh-line);
	border-radius: 13px;
	background: #fafbfc;
}

.ffh-booking-request--readonly {
	grid-template-columns: minmax(0, 1fr) auto;
	align-items: center;
}

.ffh-booking-readonly-badge {
	display: inline-flex;
	align-items: center;
	min-height: 30px;
	padding: 5px 10px;
	border: 1px solid var(--ffh-line);
	border-radius: 999px;
	background: #fff;
	color: var(--ffh-muted);
	font-size: 11px;
	font-weight: 800;
	white-space: nowrap;
}

.ffh-booking-decision {
	display: flex;
	gap: 8px;
}

.ffh-button--success {
	border-color: var(--ffh-green);
	background: var(--ffh-green);
	color: #fff;
}

.ffh-panel-footer {
	display: flex;
	justify-content: flex-end;
	padding: 18px 24px;
	border-top: 1px solid var(--ffh-line);
}

.ffh-booking-vehicle-table input[type="date"],
.ffh-booking-vehicle-table select {
	min-width: 150px;
}

.ffh-blackout-list {
	display: grid;
	gap: 8px;
	padding: 0 24px 24px;
}

.ffh-blackout-list > div {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	padding: 11px 13px;
	border: 1px solid var(--ffh-line);
	border-radius: 10px;
}

.ffh-blackout-list span,
.ffh-blackout-list small {
	display: block;
}

.ffh-blackout-list small {
	color: var(--ffh-muted);
}

.ffh-blackout-list em {
	display: inline-flex;
	margin-left: 5px;
	padding: 2px 6px;
	border-radius: 999px;
	background: var(--ffh-amber-soft);
	color: var(--ffh-amber);
	font-size: 9px;
	font-style: normal;
	text-transform: uppercase;
}

.ffh-blackout-actions {
	display: flex;
	align-items: center;
	justify-content: flex-end;
	gap: 8px;
}

.ffh-booking-dialog {
	width: min(620px, calc(100vw - 28px));
	max-height: calc(100vh - 32px);
	padding: 0;
	overflow: auto;
	border: 0;
	border-radius: 16px;
	background: #fff;
	box-shadow: 0 24px 70px rgba(17, 24, 39, .28);
}

.ffh-booking-dialog::backdrop {
	background: rgba(17, 24, 39, .58);
	backdrop-filter: blur(2px);
}

.ffh-booking-dialog form {
	display: grid;
	gap: 15px;
	padding: 22px;
}

.ffh-booking-dialog header,
.ffh-booking-dialog footer {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
}

.ffh-booking-dialog header h2,
.ffh-booking-dialog header p {
	margin: 0;
}

.ffh-booking-dialog-close {
	display: grid;
	width: 38px;
	height: 38px;
	padding: 0;
	place-items: center;
	border: 1px solid var(--ffh-line);
	border-radius: 50%;
	background: #fff;
	font-size: 24px;
	cursor: pointer;
}

.ffh-booking-dialog-person {
	display: grid;
	gap: 2px;
	padding: 11px 13px;
	border-radius: 10px;
	background: #f4f6f8;
}

.ffh-booking-dialog-person span,
.ffh-booking-dialog-person small {
	color: var(--ffh-muted);
	font-size: 11px;
}

.ffh-license-fieldset {
	margin: 0;
	padding: 15px;
	border: 1px solid var(--ffh-line);
	border-radius: 11px;
}

.ffh-license-fieldset legend {
	padding: 0 7px;
	font-size: 12px;
	font-weight: 800;
}

.ffh-license-options {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	margin-bottom: 7px;
}

.ffh-license-options label {
	display: inline-flex;
	align-items: center;
	gap: 5px;
	padding: 6px 9px;
	border: 1px solid var(--ffh-line);
	border-radius: 8px;
	font-size: 12px;
	font-weight: 750;
}

.ffh-respirator-fieldset {
	margin: 0;
	padding: 18px;
	border: 1px solid var(--ffh-line);
	border-radius: 11px;
	background: #fafbfc;
}

.ffh-respirator-fieldset legend {
	padding: 0 7px;
	font-size: 12px;
	font-weight: 850;
}

.ffh-respirator-intro,
.ffh-respirator-note {
	display: block;
	margin: 0 0 14px;
	color: var(--ffh-muted);
	font-size: 11px;
	line-height: 1.55;
}

.ffh-respirator-note {
	margin: 13px 0 0;
}

.ffh-respirator-grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 14px;
}

.ffh-respirator-wearer {
	align-self: end;
	min-height: 48px;
	padding: 10px 12px;
	border: 1px solid var(--ffh-line);
	border-radius: 10px;
	background: #fff;
}

.ffh-respirator-table-cell {
	min-width: 190px;
}

.ffh-respirator-table-cell > strong {
	display: block;
	font-size: 11px;
	line-height: 1.45;
}


.ffh-respirator-self-heading {
	margin-bottom: 18px;
}

.ffh-respirator-summary {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 14px;
	margin-bottom: 18px;
}

.ffh-respirator-summary article {
	display: flex;
	min-height: 118px;
	flex-direction: column;
	align-items: flex-start;
	justify-content: center;
	gap: 8px;
	padding: 20px;
	border: 1px solid var(--ffh-line);
	border-radius: 14px;
	background: #fff;
	box-shadow: 0 10px 26px rgba(31, 42, 68, .06);
}

.ffh-respirator-summary article > span {
	color: var(--ffh-red);
	font-size: 11px;
	font-weight: 850;
	letter-spacing: .08em;
	text-transform: uppercase;
}

.ffh-respirator-summary article > strong {
	font-size: 20px;
}

.ffh-respirator-self-form {
	display: grid;
	gap: 18px;
	padding: 22px;
}

.ffh-respirator-mask-cards {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 16px;
}

.ffh-respirator-mask-card,
.ffh-respirator-personal-card {
	min-width: 0;
	margin: 0;
	padding: 17px;
	border: 1px solid var(--ffh-line);
	border-radius: 12px;
	background: #fafbfc;
}

.ffh-respirator-mask-card legend,
.ffh-respirator-personal-card legend {
	padding: 0 7px;
	color: var(--ffh-text);
	font-size: 12px;
	font-weight: 850;
}

.ffh-respirator-mask-fields {
	display: grid;
	grid-template-columns: minmax(0, 1.25fr) repeat(2, minmax(0, .75fr));
	gap: 12px;
}

.ffh-respirator-grid--details {
	margin-top: 16px;
}

.ffh-respirator-email-note {
	display: grid;
	gap: 5px;
	padding: 14px 16px;
	border: 1px solid #dfe6ef;
	border-radius: 11px;
	background: #f7f9fc;
	color: var(--ffh-text);
	font-size: 13px;
}

.ffh-respirator-email-note small {
	color: var(--ffh-muted);
	line-height: 1.5;
}

.ffh-user-row-actions {
	display: flex;
	min-width: 120px;
	flex-direction: column;
	align-items: flex-start;
	gap: 7px;
}

.ffh-user-row-actions form {
	margin: 0;
}

.ffh-user-row-actions button.ffh-table-action {
	padding: 0;
	border: 0;
	background: transparent;
	cursor: pointer;
	font: inherit;
}

@media (max-width: 900px) {
	.ffh-respirator-mask-fields {
		grid-template-columns: 1fr;
	}
}

@media (max-width: 680px) {
	.ffh-respirator-summary,
	.ffh-respirator-mask-cards {
		grid-template-columns: 1fr;
	}

	.ffh-respirator-self-form {
		padding: 14px;
	}

	.ffh-respirator-mask-card,
	.ffh-respirator-personal-card {
		padding: 14px;
	}

	.ffh-respirator-summary article {
		min-height: 0;
		padding: 17px;
	}

	.ffh-respirator-summary article > strong {
		font-size: 18px;
	}

	.ffh-respirator-self-form .ffh-form-actions,
	.ffh-respirator-self-form .ffh-button {
		width: 100%;
	}
}

@media (max-width: 1100px) {
	.ffh-respirator-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.ffh-booking-layout,
	.ffh-booking-admin-grid {
		grid-template-columns: 1fr;
	}

	.ffh-booking-form-panel {
		position: static;
	}

	.ffh-booking-request {
		grid-template-columns: 1fr;
	}
}

@media (max-width: 680px) {
	.ffh-respirator-grid {
		grid-template-columns: 1fr;
	}

	.ffh-respirator-fieldset {
		padding: 14px;
	}

	.ffh-booking-tabs {
		overflow-x: auto;
	}

	.ffh-booking-tabs a {
		flex: 0 0 auto;
	}

	.ffh-booking-calendar-scroll {
		padding: 0 10px 14px;
	}

	.ffh-booking-datetime-grid {
		grid-template-columns: 1fr 100px;
	}

	.ffh-booking-list-item {
		grid-template-columns: 58px minmax(0, 1fr);
		gap: 12px;
		padding: 16px;
	}

	.ffh-booking-list-item > form {
		grid-column: 1 / -1;
	}

	.ffh-booking-form,
	.ffh-booking-settings-form,
	.ffh-booking-requests,
	.ffh-blackout-list {
		padding-right: 16px;
		padding-left: 16px;
	}

	.ffh-booking-decision {
		align-items: stretch;
		flex-direction: column;
	}
}

/* Portal-wide smartphone presentation. */
@media (max-width: 680px) {
	.ffh-standalone-body {
		background: #eef1f5;
		font-size: 14px;
	}

	.ffh-topbar {
		min-height: 68px;
		padding: 0 max(14px, env(safe-area-inset-right)) 0 max(14px, env(safe-area-inset-left));
		box-shadow: 0 5px 18px rgba(16, 24, 40, 0.08);
	}

	.ffh-brand {
		gap: 9px;
	}

	.ffh-brand-mark {
		width: 34px;
		height: 40px;
	}

	.ffh-brand strong {
		font-size: 15px;
	}

	.ffh-brand small {
		margin-top: 1px;
		font-size: 9px;
		letter-spacing: 0.035em;
	}

	.ffh-mobile-toggle {
		width: 46px;
		height: 46px;
		padding: 10px;
		touch-action: manipulation;
	}

	.ffh-nav {
		top: 68px;
		max-height: calc(100dvh - 68px);
		overflow-y: auto;
		padding: 9px 12px calc(14px + env(safe-area-inset-bottom));
		overscroll-behavior: contain;
	}

	.ffh-nav > a,
	.ffh-nav-dropdown > summary {
		min-height: 50px;
		font-size: 14px;
		touch-action: manipulation;
	}

	.ffh-nav-dropdown-menu {
		margin-left: 14px;
	}

	.ffh-nav-dropdown-menu a {
		min-height: 56px;
	}

	.ffh-main {
		min-height: calc(100dvh - 68px);
		padding: 19px 12px calc(34px + env(safe-area-inset-bottom));
	}

	.ffh-page-heading,
	.ffh-page-heading--hero {
		gap: 14px;
		margin-bottom: 18px;
	}

	.ffh-page-heading h1 {
		margin-bottom: 6px;
		font-size: clamp(27px, 9vw, 34px);
		line-height: 1.08;
	}

	.ffh-page-heading p:last-child {
		font-size: 13px;
		line-height: 1.5;
	}

	.ffh-page-heading--hero {
		padding: 22px 19px;
		border-radius: 16px;
	}

	.ffh-page-heading--hero::after {
		top: -45px;
		right: -80px;
		width: 220px;
		height: 220px;
		border-width: 38px;
	}

	.ffh-eyebrow,
	.ffh-card-kicker {
		font-size: 9px;
		letter-spacing: 0.1em;
	}

	.ffh-button {
		min-height: 48px;
		padding: 11px 15px;
		font-size: 13px;
		touch-action: manipulation;
	}

	.ffh-notice {
		align-items: flex-start;
		margin-bottom: 16px;
		padding: 12px 13px;
		font-size: 12px;
	}

	.ffh-panel {
		border-radius: 14px;
		box-shadow: 0 5px 18px rgba(16, 24, 40, 0.045);
	}

	.ffh-panel-heading {
		gap: 10px;
		padding: 16px;
	}

	.ffh-panel-heading h2 {
		font-size: 17px;
	}

	.ffh-panel-heading > a,
	.ffh-panel-heading-links a,
	.ffh-panel-heading > span {
		font-size: 10px;
	}

	.ffh-stat-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 8px;
		margin-bottom: 14px;
	}

	.ffh-stat-card {
		min-height: 82px;
		gap: 10px;
		padding: 12px;
		border-radius: 13px;
	}

	.ffh-stat-icon {
		width: 38px;
		height: 38px;
		border-radius: 10px;
		font-size: 17px;
	}

	.ffh-stat-card strong {
		font-size: 23px;
	}

	.ffh-stat-card span:last-child {
		margin-top: 3px;
		font-size: 10px;
		line-height: 1.25;
	}

	.ffh-dashboard-grid,
	.ffh-detail-main,
	.ffh-detail-sidebar {
		gap: 14px;
	}

	.ffh-dashboard-grid,
	.ffh-vehicle-hero,
	.ffh-detail-layout {
		margin-bottom: 14px;
	}

	.ffh-deadline-list,
	.ffh-activity-list {
		padding: 4px 7px 8px;
	}

	.ffh-deadline,
	.ffh-activity {
		min-height: 68px;
		gap: 10px;
		padding: 9px 7px;
	}

	.ffh-date-tile {
		width: 44px;
		height: 46px;
	}

	.ffh-deadline-copy strong,
	.ffh-activity strong {
		font-size: 12px;
	}

	.ffh-deadline-copy small,
	.ffh-activity small {
		font-size: 10px;
	}

	.ffh-vehicle-grid {
		gap: 12px;
	}

	.ffh-vehicle-grid--compact {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.ffh-panel .ffh-vehicle-grid {
		padding: 10px 10px 0;
	}

	.ffh-vehicle-card {
		border-radius: 13px;
	}

	.ffh-vehicle-grid--compact .ffh-vehicle-image {
		height: 105px;
	}

	.ffh-vehicle-card-copy {
		padding: 11px 12px 13px;
	}

	.ffh-vehicle-card-copy strong {
		font-size: 13px;
	}

	.ffh-vehicle-card-body {
		padding: 17px;
	}

	.ffh-filterbar {
		gap: 9px;
		margin-bottom: 16px;
		padding: 10px;
	}

	.ffh-filterbar .ffh-button {
		width: 100%;
	}

	.ffh-field input,
	.ffh-field select,
	.ffh-field textarea,
	.ffh-filterbar input,
	.ffh-filterbar select {
		min-height: 48px;
		font-size: 16px;
	}

	.ffh-field {
		gap: 6px;
		font-size: 12px;
	}

	.ffh-form-panel {
		padding: 0 16px 18px;
	}

	.ffh-form-section {
		gap: 18px;
		padding: 22px 0;
	}

	.ffh-form-section-heading h2 {
		font-size: 16px;
	}

	.ffh-form-grid {
		gap: 14px;
	}

	.ffh-form-actions,
	.ffh-form-actions .ffh-button,
	.ffh-form-actions form {
		width: 100%;
	}

	.ffh-checkbox-field {
		align-items: flex-start;
		padding: 4px 0;
		line-height: 1.4;
	}

	.ffh-checkbox-field input,
	.ffh-license-options input {
		width: 22px;
		height: 22px;
		flex: 0 0 auto;
	}

	.ffh-breadcrumb {
		overflow-x: auto;
		padding-bottom: 4px;
		white-space: nowrap;
	}

	.ffh-vehicle-hero {
		border-radius: 15px;
	}

	.ffh-vehicle-hero-image {
		min-height: 190px;
	}

	.ffh-vehicle-hero-copy {
		padding: 22px 19px;
	}

	.ffh-vehicle-hero-copy h1 {
		font-size: 34px;
	}

	.ffh-vehicle-hero-copy > p:not(.ffh-eyebrow) {
		margin-bottom: 18px;
		font-size: 13px;
	}

	.ffh-data-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		padding: 3px 16px 16px;
	}

	.ffh-data-grid > div {
		padding: 13px 8px 13px 0;
	}

	.ffh-data-grid dd {
		font-size: 12px;
	}

	.ffh-note-box {
		margin: 0 16px 16px;
	}

	.ffh-timeline {
		padding: 15px 10px;
	}

	.ffh-timeline::before {
		left: 20px;
	}

	.ffh-timeline-item {
		grid-template-columns: 20px minmax(0, 1fr);
		gap: 8px;
	}

	.ffh-timeline-marker {
		margin-left: 0;
	}

	.ffh-timeline-card {
		padding: 13px;
	}

	.ffh-timeline-card > p {
		font-size: 12px;
	}

	.ffh-log-gallery {
		gap: 6px;
	}

	.ffh-log-image img {
		height: 128px;
	}

	.ffh-table-wrap--cards {
		overflow: visible;
		padding: 10px;
	}

	.ffh-table[data-mobile-cards] {
		display: block;
		width: 100%;
		min-width: 0;
	}

	.ffh-table[data-mobile-cards] thead {
		display: none;
	}

	.ffh-table[data-mobile-cards] tbody {
		display: grid;
		gap: 10px;
	}

	.ffh-table[data-mobile-cards] tr {
		display: block;
		overflow: hidden;
		border: 1px solid var(--ffh-line);
		border-radius: 12px;
		background: #fff;
		box-shadow: 0 3px 10px rgba(16, 24, 40, 0.035);
	}

	.ffh-table[data-mobile-cards] td {
		display: grid;
		grid-template-columns: minmax(86px, 0.42fr) minmax(0, 1fr);
		align-items: center;
		gap: 10px;
		min-height: 44px;
		padding: 10px 11px;
		border-bottom: 1px solid #edf0f4;
		font-size: 12px;
	}

	.ffh-table[data-mobile-cards] td::before {
		align-self: start;
		color: var(--ffh-muted);
		content: attr(data-label);
		font-size: 9px;
		font-weight: 850;
		letter-spacing: 0.055em;
		text-transform: uppercase;
	}

	.ffh-table[data-mobile-cards] td:last-child {
		border-bottom: 0;
	}

	.ffh-table[data-mobile-cards] td[colspan] {
		display: block;
	}

	.ffh-table[data-mobile-cards] td[colspan]::before {
		display: none;
	}

	.ffh-table[data-mobile-cards] td form,
	.ffh-table[data-mobile-cards] td select,
	.ffh-table[data-mobile-cards] td input[type="date"] {
		width: 100%;
		min-width: 0;
	}

	.ffh-table[data-mobile-cards] .ffh-table-action {
		display: inline-flex;
		min-height: 38px;
		align-items: center;
		justify-content: center;
		padding: 7px 10px;
		border-radius: 8px;
		background: var(--ffh-red-soft);
	}

	.ffh-table-description,
	.ffh-table-description-content {
		max-width: none;
	}

	.ffh-equipment-table-wrap {
		margin: 0;
		padding-bottom: 8px;
		scroll-snap-type: x proximity;
	}

	.ffh-equipment-table {
		min-width: 910px;
	}

	.ffh-equipment-table th:first-child {
		width: 154px;
		padding-left: 10px;
		scroll-snap-align: start;
	}

	.ffh-equipment-category-heading,
	.ffh-equipment-toolbar,
	.ffh-equipment-new-category {
		padding: 15px;
	}

	.ffh-equipment-category-heading .ffh-heading-actions,
	.ffh-inspection-category-heading .ffh-heading-actions,
	.ffh-inspection-row-actions {
		width: 100%;
	}

	.ffh-equipment-category-heading .ffh-button,
	.ffh-inspection-category-heading .ffh-button {
		width: 100%;
	}

	.ffh-inspection-editor > form,
	.ffh-inspection-item-form,
	.ffh-inspection-new-category {
		padding: 16px;
	}

	.ffh-booking-heading .ffh-button {
		width: 100%;
	}

	.ffh-booking-tabs {
		gap: 4px;
		margin: 0 -2px 14px;
		padding: 5px;
		border-radius: 12px;
		scroll-snap-type: x proximity;
	}

	.ffh-booking-tabs a {
		min-height: 44px;
		padding: 8px 12px;
		font-size: 12px;
		scroll-snap-align: start;
	}

	.ffh-booking-calendar-heading {
		align-items: stretch;
		flex-direction: column;
	}

	.ffh-booking-month-nav {
		display: grid;
		grid-template-columns: 44px minmax(0, 1fr) 44px;
		width: 100%;
	}

	.ffh-booking-month-nav a {
		min-height: 44px;
	}

	.ffh-booking-calendar-scroll {
		display: none;
	}

	.ffh-booking-mobile-agenda {
		display: block;
		padding: 0 12px 14px;
	}

	.ffh-booking-mobile-agenda-heading {
		display: flex;
		align-items: center;
		justify-content: space-between;
		gap: 12px;
		padding: 12px 2px 9px;
	}

	.ffh-booking-mobile-agenda-heading strong {
		font-size: 13px;
	}

	.ffh-booking-mobile-agenda-heading span {
		color: var(--ffh-muted);
		font-size: 10px;
		font-weight: 750;
	}

	.ffh-booking-mobile-days {
		display: grid;
		gap: 9px;
	}

	.ffh-booking-mobile-day {
		display: grid;
		grid-template-columns: 58px minmax(0, 1fr);
		overflow: hidden;
		border: 1px solid var(--ffh-line);
		border-radius: 12px;
		background: #fff;
	}

	.ffh-booking-mobile-day.is-today {
		border-color: #e6a8b3;
		box-shadow: 0 0 0 2px rgba(189, 18, 48, 0.08);
	}

	.ffh-booking-mobile-day > header {
		display: grid;
		padding: 12px 6px;
		border-right: 1px solid var(--ffh-line);
		background: #f7f8fa;
		place-items: start center;
	}

	.ffh-booking-mobile-day > header time {
		display: grid;
		gap: 4px;
		text-align: center;
	}

	.ffh-booking-mobile-day > header strong {
		font-size: 23px;
		line-height: 1;
	}

	.ffh-booking-mobile-day > header span {
		color: var(--ffh-muted);
		font-size: 8px;
		font-weight: 800;
		white-space: nowrap;
	}

	.ffh-booking-mobile-day > div {
		display: grid;
		gap: 7px;
		padding: 8px;
	}

	.ffh-booking-mobile-entry {
		display: grid;
		width: 100%;
		gap: 2px;
		padding: 9px 10px;
		border-top: 0;
		border-right: 0;
		border-bottom: 0;
		border-left: 4px solid var(--ffh-green);
		border-radius: 8px;
		background: var(--ffh-green-soft);
		color: inherit;
		font-family: inherit;
		text-align: left;
	}

	.ffh-booking-mobile-entry--editable {
		cursor: pointer;
	}

	.ffh-booking-mobile-entry--pending {
		border-left-color: var(--ffh-amber);
		background: var(--ffh-amber-soft);
	}

	.ffh-booking-mobile-entry--blocked {
		border-left-color: var(--ffh-red);
		background: var(--ffh-red-soft);
	}

	.ffh-booking-mobile-entry time {
		color: #126244;
		font-size: 13px;
		font-weight: 900;
	}

	.ffh-booking-mobile-entry--pending time {
		color: var(--ffh-amber);
	}

	.ffh-booking-mobile-entry--blocked time {
		color: var(--ffh-red);
	}

	.ffh-booking-mobile-entry strong {
		font-size: 12px;
	}

	.ffh-booking-mobile-entry span,
	.ffh-booking-mobile-entry small {
		overflow: hidden;
		text-overflow: ellipsis;
		white-space: nowrap;
	}

	.ffh-booking-mobile-entry span {
		font-size: 11px;
	}

	.ffh-booking-mobile-entry small {
		color: var(--ffh-muted);
		font-size: 9px;
	}

	.ffh-booking-mobile-empty {
		display: grid;
		gap: 4px;
		padding: 24px;
		border: 1px dashed #b8dcca;
		border-radius: 12px;
		background: var(--ffh-green-soft);
		color: var(--ffh-green);
		text-align: center;
	}

	.ffh-booking-mobile-empty span {
		font-size: 24px;
	}

	.ffh-booking-mobile-empty small {
		color: #4c7565;
	}

	.ffh-booking-form-panel {
		margin-top: 2px;
	}

	.ffh-booking-form,
	.ffh-booking-settings-form {
		gap: 14px;
		padding: 16px;
	}

	.ffh-booking-datetime-grid {
		grid-template-columns: 1fr;
	}

	.ffh-booking-list-item {
		grid-template-columns: 52px minmax(0, 1fr);
		gap: 10px;
		padding: 14px;
	}

	.ffh-booking-list-date strong {
		font-size: 21px;
	}

	.ffh-booking-list-main h3 {
		font-size: 14px;
	}

	.ffh-booking-request {
		gap: 14px;
		padding: 14px;
	}

	.ffh-booking-decision .ffh-button,
	.ffh-panel-footer .ffh-button {
		width: 100%;
	}

	.ffh-panel-footer {
		padding: 15px;
	}

	.ffh-blackout-list > div {
		align-items: stretch;
		flex-direction: column;
	}

	.ffh-blackout-actions,
	.ffh-booking-statistics-reset,
	.ffh-booking-dialog footer {
		align-items: stretch;
		flex-direction: column;
	}

	.ffh-blackout-actions form,
	.ffh-blackout-actions button,
	.ffh-booking-statistics-reset form,
	.ffh-booking-statistics-reset button,
	.ffh-booking-dialog footer .ffh-button {
		width: 100%;
	}

	.ffh-trip-report-copy,
	.ffh-trip-report-enabled {
		align-items: flex-start;
	}

	.ffh-trello-hero {
		padding: 18px;
	}

	.ffh-trello-hero h1 {
		font-size: 29px;
	}

	.ffh-auth-brand {
		min-height: 175px;
		padding: 24px 20px;
	}

	.ffh-auth-brand h1 {
		font-size: 34px;
	}

	.ffh-auth-brand-copy > p:last-child {
		display: none;
	}

	.ffh-auth-shield {
		width: 43px;
		height: 49px;
		margin-bottom: 14px;
	}

	.ffh-auth-panel {
		padding: 14px 10px 24px;
	}

	.ffh-auth-card {
		padding: 22px 18px;
	}

	.ffh-auth-card h2 {
		font-size: 27px;
	}

	.ffh-footer {
		padding: 14px 16px calc(14px + env(safe-area-inset-bottom));
		font-size: 9px;
	}
}

@media (max-width: 680px) {
	.ffh-equipment-defect-misclick {
		align-items: stretch;
		flex-direction: column;
	}

	.ffh-equipment-defect-misclick .ffh-button {
		width: 100%;
	}
}

/* ========================================================================== */
/* Responsive refresh 4.6.12: phone + tablet / iPad                          */
/* ========================================================================== */

.ffh-standalone-body {
	-webkit-text-size-adjust: 100%;
	text-size-adjust: 100%;
}

.ffh-portal-shell img,
.ffh-portal-shell video,
.ffh-portal-shell canvas {
	max-width: 100%;
}

.ffh-portal-shell input,
.ffh-portal-shell select,
.ffh-portal-shell textarea,
.ffh-portal-shell button {
	max-width: 100%;
}

/* iPad / tablet: use the compact navigation before the desktop nav gets cramped. */
@media (max-width: 1024px) {
	.ffh-portal-shell:not(.ffh-portal-shell--standalone) {
		width: min(100%, calc(100vw - 20px));
		margin-top: 10px;
		margin-bottom: 22px;
		border-radius: 20px;
	}

	.ffh-topbar {
		position: relative;
		grid-template-columns: minmax(0, 1fr) auto;
		min-height: 72px;
		padding: 0 22px;
	}

	.ffh-brand {
		min-width: 0;
	}

	.ffh-user {
		display: none;
	}

	.ffh-mobile-toggle {
		display: block;
		width: 46px;
		height: 46px;
		flex: 0 0 auto;
		touch-action: manipulation;
	}

	.ffh-nav {
		position: absolute;
		top: 72px;
		right: 0;
		left: 0;
		z-index: 30;
		display: none;
		min-height: 0;
		max-height: calc(100dvh - 72px);
		align-items: stretch;
		flex-direction: column;
		gap: 3px;
		padding: 10px 18px calc(16px + env(safe-area-inset-bottom));
		overflow-y: auto;
		overscroll-behavior: contain;
		border-top: 1px solid var(--ffh-line);
		border-bottom: 1px solid var(--ffh-line);
		background: rgba(255, 255, 255, 0.99);
		box-shadow: 0 18px 35px rgba(16, 24, 40, 0.15);
	}

	.ffh-nav-open .ffh-nav {
		display: flex;
	}

	.ffh-nav > a,
	.ffh-nav-dropdown > summary {
		min-height: 48px;
		padding: 0 13px;
		border-radius: 10px;
		font-size: 14px;
	}

	.ffh-nav > a::after,
	.ffh-nav-dropdown > summary::after {
		display: none;
	}

	.ffh-nav > a.is-active,
	.ffh-nav-dropdown.is-active > summary,
	.ffh-nav-dropdown[open] > summary {
		background: var(--ffh-red-soft);
	}

	.ffh-nav-dropdown {
		display: block;
		align-self: auto;
	}

	.ffh-nav-dropdown > summary {
		width: 100%;
	}

	.ffh-nav-chevron {
		margin-left: auto;
	}

	.ffh-nav-dropdown-menu,
	.ffh-nav-dropdown-menu--right {
		position: static;
		width: auto;
		min-width: 0;
		margin: 5px 0 8px 18px;
		padding: 6px;
		transform: none;
		border: 0;
		border-left: 2px solid #f0ccd3;
		border-radius: 0 11px 11px 0;
		background: #f8f9fb;
		box-shadow: none;
	}

	.ffh-nav-dropdown-menu a {
		min-height: 54px;
	}

	.ffh-mobile-logout {
		display: block;
		margin: 7px 0 0;
		padding: 13px 12px 2px;
		border-top: 1px solid var(--ffh-line);
	}

	.ffh-mobile-logout button {
		display: flex;
		width: 100%;
		min-height: 46px;
		align-items: center;
		justify-content: space-between;
		padding: 10px 12px;
		border: 1px solid #f0ccd3;
		border-radius: 9px;
		background: var(--ffh-red-soft);
		color: var(--ffh-red);
		cursor: pointer;
		font: inherit;
		font-size: 13px;
		font-weight: 800;
		text-align: left;
	}

	.ffh-mobile-logout small {
		max-width: 60%;
		overflow: hidden;
		color: #7b5360;
		font-size: 11px;
		font-weight: 650;
		text-overflow: ellipsis;
		white-space: nowrap;
	}

	.ffh-main {
		padding: 30px 26px 42px;
	}

	.ffh-page-heading {
		gap: 20px;
		margin-bottom: 24px;
	}

	.ffh-page-heading--hero {
		min-height: 145px;
		padding: 28px 30px;
	}

	.ffh-page-heading h1 {
		font-size: clamp(31px, 5vw, 39px);
	}

	.ffh-dashboard-grid,
	.ffh-detail-layout,
	.ffh-booking-layout,
	.ffh-booking-admin-grid,
	.ffh-trip-layout,
	.ffh-trip-report-settings,
	.ffh-telegram-layout,
	.ffh-equipment-csv-panel,
	.ffh-inspection-new-category {
		grid-template-columns: 1fr;
	}

	.ffh-stat-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.ffh-vehicle-grid,
	.ffh-vehicle-grid--compact {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.ffh-form-section {
		grid-template-columns: minmax(150px, .42fr) minmax(0, 1fr);
		gap: 24px;
	}

	.ffh-form-grid {
		gap: 16px;
	}

	.ffh-field input,
	.ffh-field select,
	.ffh-field textarea,
	.ffh-filterbar input,
	.ffh-filterbar select,
	.ffh-equipment-year-nav select {
		font-size: 16px;
	}

	.ffh-button,
	.ffh-table-action,
	.ffh-equipment-cell,
	.ffh-booking-chip,
	.ffh-booking-mobile-entry {
		touch-action: manipulation;
	}

	.ffh-equipment-toolbar {
		grid-template-columns: 1fr;
	}

	.ffh-equipment-year-nav {
		justify-content: flex-start;
	}

	.ffh-equipment-table th:first-child {
		width: 205px;
	}

	.ffh-respirator-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.ffh-booking-form-panel {
		position: static;
	}

	.ffh-booking-request {
		grid-template-columns: minmax(0, 1fr) minmax(220px, .8fr);
	}

	.ffh-booking-request > :last-child {
		grid-column: 1 / -1;
	}

	.ffh-trello-settings-grid {
		grid-template-columns: 1fr;
	}

	.ffh-footer {
		padding-right: 26px;
		padding-left: 26px;
	}
}

/* Portrait iPad / compact tablets: cardify dense tables and simplify layouts. */
@media (max-width: 900px) {
	.ffh-page-heading,
	.ffh-page-heading--hero {
		align-items: flex-start;
		flex-direction: column;
	}

	.ffh-page-heading .ffh-heading-actions {
		width: 100%;
	}

	.ffh-page-heading .ffh-heading-actions .ffh-button {
		flex: 1 1 auto;
	}

	.ffh-form-section {
		grid-template-columns: 1fr;
		gap: 18px;
	}

	.ffh-vehicle-hero {
		grid-template-columns: 1fr;
	}

	.ffh-vehicle-hero-image {
		min-height: 280px;
	}

	.ffh-table-wrap--cards {
		overflow: visible;
		padding: 12px;
	}

	.ffh-table[data-mobile-cards] {
		display: block;
		width: 100%;
		min-width: 0;
	}

	.ffh-table[data-mobile-cards] thead {
		display: none;
	}

	.ffh-table[data-mobile-cards] tbody {
		display: grid;
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 12px;
	}

	.ffh-table[data-mobile-cards] tr {
		display: block;
		min-width: 0;
		overflow: hidden;
		border: 1px solid var(--ffh-line);
		border-radius: 13px;
		background: #fff;
		box-shadow: 0 4px 14px rgba(16, 24, 40, 0.04);
	}

	.ffh-table[data-mobile-cards] td {
		display: grid;
		grid-template-columns: minmax(92px, .42fr) minmax(0, 1fr);
		align-items: center;
		gap: 10px;
		min-height: 46px;
		padding: 10px 12px;
		border-bottom: 1px solid #edf0f4;
		font-size: 12px;
		overflow-wrap: anywhere;
	}

	.ffh-table[data-mobile-cards] td::before {
		align-self: start;
		color: var(--ffh-muted);
		content: attr(data-label);
		font-size: 9px;
		font-weight: 850;
		letter-spacing: .055em;
		text-transform: uppercase;
	}

	.ffh-table[data-mobile-cards] td:last-child {
		border-bottom: 0;
	}

	.ffh-table[data-mobile-cards] td[colspan] {
		display: block;
	}

	.ffh-table[data-mobile-cards] td[colspan]::before {
		display: none;
	}

	.ffh-table[data-mobile-cards] td form,
	.ffh-table[data-mobile-cards] td select,
	.ffh-table[data-mobile-cards] td input,
	.ffh-table[data-mobile-cards] td textarea {
		width: 100%;
		min-width: 0;
	}

	/* The month matrix has its own horizontal interaction and should stay a table. */
	.ffh-equipment-table-wrap.ffh-table-wrap--cards {
		overflow-x: auto;
		padding: 0 0 8px;
	}

	.ffh-equipment-table[data-mobile-cards] {
		display: table;
		width: 100%;
		min-width: 980px;
	}

	.ffh-equipment-table[data-mobile-cards] thead {
		display: table-header-group;
	}

	.ffh-equipment-table[data-mobile-cards] tbody {
		display: table-row-group;
	}

	.ffh-equipment-table[data-mobile-cards] tr {
		display: table-row;
		border: 0;
		border-radius: 0;
		box-shadow: none;
	}

	.ffh-equipment-table[data-mobile-cards] th,
	.ffh-equipment-table[data-mobile-cards] td {
		display: table-cell;
		min-height: 0;
		padding: 7px;
	}

	.ffh-equipment-table[data-mobile-cards] td::before {
		display: none;
	}

	.ffh-booking-calendar-scroll {
		display: none;
	}

	.ffh-booking-mobile-agenda {
		display: block;
		padding: 0 16px 18px;
	}

	.ffh-booking-calendar-heading {
		align-items: stretch;
		flex-direction: column;
	}

	.ffh-booking-month-nav {
		display: grid;
		grid-template-columns: 46px minmax(0, 1fr) 46px;
		width: 100%;
	}

	.ffh-booking-month-nav a {
		min-height: 46px;
	}

	.ffh-booking-request {
		grid-template-columns: 1fr;
	}

	.ffh-booking-request > :last-child {
		grid-column: auto;
	}

	.ffh-booking-decision {
		justify-content: stretch;
	}

	.ffh-booking-decision .ffh-button {
		flex: 1;
	}

	.ffh-trip-month-filter {
		flex-wrap: wrap;
	}
}

/* Phones: more app-like spacing, stronger touch targets and one-column content. */
@media (max-width: 680px) {
	html:has(.ffh-standalone-body),
	.ffh-standalone-body {
		background: #eef1f5;
	}

	.ffh-portal-shell,
	.ffh-portal-shell:not(.ffh-portal-shell--standalone) {
		width: 100%;
		margin: 0;
		transform: none;
		left: auto;
		border-right: 0;
		border-left: 0;
		border-radius: 0;
		box-shadow: none;
	}

	.ffh-portal-shell--standalone {
		border: 0;
	}

	.ffh-topbar {
		position: sticky;
		top: 0;
		z-index: 40;
		min-height: 66px;
		padding-right: max(12px, env(safe-area-inset-right));
		padding-left: max(12px, env(safe-area-inset-left));
		box-shadow: 0 4px 16px rgba(16, 24, 40, .08);
	}

	.ffh-brand-mark {
		width: 32px;
		height: 38px;
	}

	.ffh-brand strong {
		font-size: 14px;
	}

	.ffh-brand small {
		font-size: 8px;
	}

	.ffh-mobile-toggle {
		width: 44px;
		height: 44px;
	}

	.ffh-nav {
		position: fixed;
		top: 66px;
		max-height: calc(100dvh - 66px);
		padding-right: max(12px, env(safe-area-inset-right));
		padding-left: max(12px, env(safe-area-inset-left));
	}

	.ffh-main {
		min-height: calc(100dvh - 66px);
		padding: 18px max(12px, env(safe-area-inset-right)) calc(32px + env(safe-area-inset-bottom)) max(12px, env(safe-area-inset-left));
	}

	.ffh-page-heading,
	.ffh-page-heading--hero {
		gap: 13px;
		margin-bottom: 17px;
	}

	.ffh-page-heading h1 {
		font-size: clamp(27px, 8.5vw, 33px);
	}

	.ffh-page-heading--hero {
		padding: 20px 18px;
		border-radius: 15px;
	}

	.ffh-heading-actions,
	.ffh-page-heading .ffh-button,
	.ffh-heading-actions .ffh-button {
		width: 100%;
	}

	.ffh-heading-actions {
		flex-direction: column;
	}

	.ffh-stat-grid,
	.ffh-vehicle-grid,
	.ffh-vehicle-grid--compact,
	.ffh-respirator-grid,
	.ffh-respirator-summary,
	.ffh-respirator-mask-cards,
	.ffh-data-grid,
	.ffh-table[data-mobile-cards] tbody {
		grid-template-columns: 1fr;
	}

	.ffh-stat-card {
		min-height: 78px;
		padding: 12px 13px;
	}

	.ffh-panel-heading {
		align-items: flex-start;
		flex-wrap: wrap;
	}

	.ffh-panel-heading-links {
		width: 100%;
	}

	.ffh-panel-heading-links a {
		min-height: 38px;
		display: inline-flex;
		align-items: center;
	}

	.ffh-button {
		min-height: 48px;
		white-space: normal;
		text-align: center;
	}

	.ffh-button.ffh-button--compact {
		min-height: 42px;
	}

	.ffh-filterbar {
		align-items: stretch;
		flex-direction: column;
	}

	.ffh-search,
	.ffh-filterbar select,
	.ffh-filterbar input {
		width: 100%;
		min-width: 0;
	}

	.ffh-form-panel {
		padding-right: 15px;
		padding-left: 15px;
	}

	.ffh-form-actions {
		align-items: stretch;
		flex-direction: column-reverse;
	}

	.ffh-form-actions form,
	.ffh-form-actions .ffh-button {
		width: 100%;
	}

	.ffh-inline-status-form {
		align-items: stretch;
		flex-direction: column;
	}

	.ffh-inline-status-form select,
	.ffh-inline-status-form .ffh-button {
		width: 100%;
	}

	.ffh-vehicle-hero-image {
		min-height: 205px;
	}

	.ffh-vehicle-hero-copy {
		padding: 21px 18px;
	}

	.ffh-vehicle-hero-copy h1 {
		font-size: 32px;
	}

	.ffh-vehicle-card-body {
		padding: 16px;
	}

	.ffh-table-wrap--cards {
		padding: 8px;
	}

	.ffh-table[data-mobile-cards] tbody {
		gap: 9px;
	}

	.ffh-table[data-mobile-cards] td {
		grid-template-columns: minmax(82px, .38fr) minmax(0, 1fr);
		padding: 10px;
	}

	.ffh-table[data-mobile-cards] .ffh-table-action {
		display: inline-flex;
		min-height: 40px;
		align-items: center;
		justify-content: center;
		padding: 8px 10px;
		border-radius: 8px;
		background: var(--ffh-red-soft);
	}

	.ffh-equipment-table[data-mobile-cards],
	.ffh-equipment-table {
		min-width: 900px;
	}

	.ffh-equipment-table th:first-child {
		width: 150px;
	}

	.ffh-equipment-cell {
		width: 44px;
		height: 44px;
	}

	.ffh-equipment-toolbar,
	.ffh-equipment-category-heading,
	.ffh-equipment-new-category,
	.ffh-equipment-csv-panel,
	.ffh-telegram-layout {
		padding: 15px;
	}

	.ffh-equipment-year-nav,
	.ffh-equipment-year-nav form {
		align-items: stretch;
		flex-direction: column;
		width: 100%;
	}

	.ffh-equipment-year-nav select,
	.ffh-equipment-year-nav .ffh-button,
	.ffh-equipment-year-nav form {
		width: 100%;
	}

	.ffh-booking-tabs {
		-webkit-overflow-scrolling: touch;
		scrollbar-width: none;
	}

	.ffh-booking-tabs::-webkit-scrollbar {
		display: none;
	}

	.ffh-booking-mobile-agenda {
		padding-right: 10px;
		padding-left: 10px;
	}

	.ffh-booking-mobile-day {
		grid-template-columns: 54px minmax(0, 1fr);
	}

	.ffh-booking-form,
	.ffh-booking-settings-form,
	.ffh-booking-requests,
	.ffh-blackout-list {
		padding-right: 14px;
		padding-left: 14px;
	}

	.ffh-booking-list-item {
		grid-template-columns: 52px minmax(0, 1fr);
	}

	.ffh-booking-list-item > form {
		grid-column: 1 / -1;
	}

	.ffh-booking-decision,
	.ffh-blackout-actions,
	.ffh-booking-statistics-reset,
	.ffh-booking-dialog footer {
		align-items: stretch;
		flex-direction: column;
	}

	.ffh-booking-decision .ffh-button,
	.ffh-blackout-actions form,
	.ffh-blackout-actions button,
	.ffh-booking-statistics-reset form,
	.ffh-booking-statistics-reset button,
	.ffh-booking-dialog footer .ffh-button {
		width: 100%;
	}

	.ffh-booking-dialog,
	.ffh-equipment-defect-dialog {
		width: calc(100vw - 14px);
		max-height: calc(100dvh - 14px);
		border-radius: 15px;
	}

	.ffh-booking-dialog form,
	.ffh-equipment-defect-dialog form {
		padding: 16px;
	}

	.ffh-trello-canvas {
		-webkit-overflow-scrolling: touch;
	}

	.ffh-trello-board {
		grid-auto-columns: minmax(268px, 88vw);
	}

	.ffh-auth-layout {
		min-height: 100dvh;
	}

	.ffh-auth-brand {
		min-height: 155px;
		padding: 20px 18px;
	}

	.ffh-auth-brand h1 {
		font-size: 31px;
	}

	.ffh-auth-panel {
		padding: 12px 8px calc(22px + env(safe-area-inset-bottom));
	}

	.ffh-auth-card {
		padding: 21px 17px;
		border-radius: 15px;
	}

	.ffh-footer {
		align-items: flex-start;
		padding: 14px max(14px, env(safe-area-inset-right)) calc(14px + env(safe-area-inset-bottom)) max(14px, env(safe-area-inset-left));
		font-size: 9px;
	}
}

/* Very small phones: keep labels and actions readable instead of squeezing. */
@media (max-width: 390px) {
	.ffh-brand > span:last-child small {
		display: none;
	}

	.ffh-stat-grid {
		grid-template-columns: 1fr;
	}

	.ffh-table[data-mobile-cards] td {
		grid-template-columns: 1fr;
		gap: 4px;
	}

	.ffh-table[data-mobile-cards] td::before {
		margin-bottom: 2px;
	}

	.ffh-booking-mobile-day {
		grid-template-columns: 48px minmax(0, 1fr);
	}
}

/* 4.6.13: Webmaster role + member inspection date editing */
.ffh-role-badge--webmaster {
	background: #eef2ff;
	color: #3730a3;
}

.ffh-inspection-date-form {
	display: flex;
	align-items: center;
	gap: 8px;
	flex-wrap: wrap;
	min-width: 210px;
}

.ffh-inspection-date-form input[type="date"] {
	min-height: 40px;
	max-width: 170px;
}

@media (max-width: 760px) {
	.ffh-inspection-date-form {
		display: grid;
		grid-template-columns: 1fr;
		min-width: 0;
	}

	.ffh-inspection-date-form input[type="date"],
	.ffh-inspection-date-form .ffh-button {
		width: 100%;
		max-width: none;
	}
}


/* 4.6.15: Managed workflow for Technical Equipment inspection dates */
.ffh-inspection-category--technical {
	border-color: #cbd5e1;
}

.ffh-inspection-category--technical .ffh-inspection-category-heading {
	background: linear-gradient(180deg, #f8fafc 0%, #ffffff 100%);
}

.ffh-inspection-complete-form {
	display: grid;
	grid-template-columns: minmax(135px, 165px) auto;
	align-items: end;
	gap: 8px;
	padding: 8px;
	border: 1px solid var(--ffh-line);
	border-radius: 10px;
	background: #f8fafc;
}

.ffh-inspection-complete-form label {
	display: grid;
	gap: 4px;
	margin: 0;
}

.ffh-inspection-complete-form label > span {
	font-size: 10px;
	font-weight: 800;
	letter-spacing: .04em;
	text-transform: uppercase;
	color: var(--ffh-muted);
}

.ffh-inspection-complete-form input[type="date"] {
	min-height: 38px;
	width: 100%;
}

.ffh-inspection-workflow-warning {
	max-width: 260px;
	padding: 8px 10px;
	border-radius: 8px;
	background: #fff7ed;
	color: #9a3412;
}

@media (max-width: 760px) {
	.ffh-inspection-complete-form {
		grid-template-columns: 1fr;
		width: 100%;
	}

	.ffh-inspection-complete-form .ffh-button {
		width: 100%;
	}
}

/* 4.6.16: Collapsible add-row form for inspection equipment. */
@media (max-width: 620px) {
	.ffh-inspection-add-toggle {
		justify-content: space-between;
		min-height: 54px;
		padding: 13px 18px;
	}

	.ffh-inspection-add-actions {
		display: grid;
		grid-template-columns: 1fr;
	}

	.ffh-inspection-add-actions .ffh-button {
		width: 100%;
	}
}

/* 4.6.20: Compact dashboard booking week. */
.ffh-stat-icon--blue {
	background: #edf3ff;
	color: #315fbd;
}

.ffh-dashboard-booking-week {
	margin-bottom: 20px;
	overflow: hidden;
}

.ffh-dashboard-booking-heading {
	align-items: flex-end;
}

.ffh-dashboard-week-actions {
	display: flex;
	align-items: center;
	justify-content: flex-end;
	gap: 7px;
	flex-wrap: wrap;
}

.ffh-dashboard-week-nav {
	display: inline-grid;
	min-width: 38px;
	min-height: 38px;
	padding: 7px 11px;
	place-items: center;
	border: 1px solid var(--ffh-line);
	border-radius: 9px;
	background: #fff;
	color: var(--ffh-ink);
	font-size: 12px;
	font-weight: 850;
}

.ffh-dashboard-week-nav--today {
	min-width: auto;
	background: #f4f6f8;
	border-color: #d7dce4;
	color: #30394b;
}

.ffh-dashboard-week-nav--today:hover,
.ffh-dashboard-week-nav--today:focus-visible {
	background: #e9edf2;
	border-color: #c8ced8;
	color: #1f2937;
}

.ffh-dashboard-week-all {
	margin-left: 5px;
	color: var(--ffh-red);
	font-size: 12px;
	font-weight: 850;
	white-space: nowrap;
}

.ffh-dashboard-week-desktop {
	display: grid;
	grid-template-columns: repeat(7, minmax(0, 1fr));
	background: var(--ffh-line);
	gap: 1px;
}

.ffh-dashboard-week-day {
	min-width: 0;
	min-height: 218px;
	background: #fff;
}

.ffh-dashboard-week-day > header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 8px;
	padding: 12px 13px;
	border-bottom: 1px solid #edf0f4;
	background: #fafbfc;
}

.ffh-dashboard-week-day > header strong {
	overflow: hidden;
	font-size: 11px;
	font-weight: 850;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.ffh-dashboard-week-day > header span {
	font-size: 20px;
	font-weight: 900;
}

.ffh-dashboard-week-day.is-today > header {
	background: var(--ffh-red-soft);
	color: var(--ffh-red);
	box-shadow: inset 0 3px 0 var(--ffh-red);
}

.ffh-dashboard-week-day-body {
	display: grid;
	align-content: start;
	gap: 8px;
	min-height: 164px;
	padding: 9px;
}

.ffh-dashboard-week-booking {
	display: grid;
	min-width: 0;
	gap: 3px;
	padding: 10px;
	border: 1px solid #c9e7d7;
	border-left: 4px solid var(--ffh-green);
	border-radius: 10px;
	background: var(--ffh-green-soft);
	color: var(--ffh-ink);
	transition: transform .15s ease, box-shadow .15s ease;
}

.ffh-dashboard-week-booking:hover,
.ffh-dashboard-week-booking:focus-visible {
	transform: translateY(-1px);
	box-shadow: 0 5px 16px rgba(16, 24, 40, .08);
}

.ffh-dashboard-week-booking--pending {
	border-color: #efd9a4;
	border-left-color: var(--ffh-amber);
	background: var(--ffh-amber-soft);
}

.ffh-dashboard-week-booking strong,
.ffh-dashboard-week-booking span,
.ffh-dashboard-week-booking time {
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.ffh-dashboard-week-booking strong {
	font-size: 12px;
	font-weight: 900;
}

.ffh-dashboard-week-booking span {
	font-size: 11px;
	font-weight: 750;
}

.ffh-dashboard-week-booking time {
	color: #126244;
	font-size: 9px;
	font-weight: 850;
}

.ffh-dashboard-week-booking--pending time {
	color: var(--ffh-amber);
}

.ffh-dashboard-week-empty {
	display: grid;
	min-height: 74px;
	place-items: center;
	color: #a0a8b8;
	font-size: 10px;
	font-weight: 700;
	text-align: center;
}

.ffh-dashboard-week-mobile {
	display: none;
}

@media (max-width: 1100px) {
	.ffh-dashboard-booking-heading {
		align-items: stretch;
		flex-direction: column;
	}

	.ffh-dashboard-week-actions {
		justify-content: flex-start;
	}

	.ffh-dashboard-week-desktop {
		display: none;
	}

	.ffh-dashboard-week-mobile {
		display: grid;
		gap: 9px;
		padding: 12px;
	}

	.ffh-dashboard-week-mobile-day {
		overflow: hidden;
		border: 1px solid var(--ffh-line);
		border-radius: 12px;
		background: #fff;
	}

	.ffh-dashboard-week-mobile-day.is-today {
		border-color: #e6a8b3;
		box-shadow: 0 0 0 2px rgba(189, 18, 48, .07);
	}

	.ffh-dashboard-week-mobile-day > header {
		display: flex;
		align-items: center;
		justify-content: space-between;
		gap: 12px;
		padding: 10px 12px;
		border-bottom: 1px solid var(--ffh-line);
		background: #f8f9fb;
	}

	.ffh-dashboard-week-mobile-day.is-today > header {
		background: var(--ffh-red-soft);
		color: var(--ffh-red);
	}

	.ffh-dashboard-week-mobile-day > header strong {
		font-size: 12px;
	}

	.ffh-dashboard-week-mobile-day > header span {
		color: var(--ffh-muted);
		font-size: 10px;
		font-weight: 750;
	}

	.ffh-dashboard-week-mobile-day > div {
		display: grid;
		gap: 7px;
		padding: 8px;
	}

	.ffh-dashboard-week-mobile-booking {
		display: flex;
		align-items: center;
		justify-content: space-between;
		gap: 12px;
		padding: 10px;
		border: 1px solid #c9e7d7;
		border-left: 4px solid var(--ffh-green);
		border-radius: 9px;
		background: var(--ffh-green-soft);
		color: var(--ffh-ink);
	}

	.ffh-dashboard-week-mobile-booking--pending {
		border-color: #efd9a4;
		border-left-color: var(--ffh-amber);
		background: var(--ffh-amber-soft);
	}

	.ffh-dashboard-week-mobile-booking > span {
		display: grid;
		min-width: 0;
		gap: 2px;
	}

	.ffh-dashboard-week-mobile-booking strong,
	.ffh-dashboard-week-mobile-booking small {
		overflow: hidden;
		text-overflow: ellipsis;
		white-space: nowrap;
	}

	.ffh-dashboard-week-mobile-booking strong {
		font-size: 12px;
	}

	.ffh-dashboard-week-mobile-booking small {
		color: var(--ffh-muted);
		font-size: 10px;
	}

	.ffh-dashboard-week-mobile-booking time {
		flex: 0 0 auto;
		color: #126244;
		font-size: 11px;
		font-weight: 900;
		white-space: nowrap;
	}

	.ffh-dashboard-week-mobile-booking--pending time {
		color: var(--ffh-amber);
	}

	.ffh-dashboard-week-mobile-empty {
		display: grid;
		gap: 4px;
		padding: 24px 16px;
		border: 1px dashed #b8dcca;
		border-radius: 12px;
		background: var(--ffh-green-soft);
		color: var(--ffh-green);
		text-align: center;
	}

	.ffh-dashboard-week-mobile-empty span {
		color: #557566;
		font-size: 11px;
	}
}

@media (max-width: 620px) {
	.ffh-dashboard-week-actions {
		display: grid;
		grid-template-columns: 42px minmax(0, 1fr) 42px;
		width: 100%;
	}

	.ffh-dashboard-week-nav {
		min-height: 42px;
	}

	.ffh-dashboard-week-all {
		grid-column: 1 / -1;
		margin: 2px 0 0;
		padding: 5px 2px 0;
	}

	.ffh-dashboard-week-mobile-booking {
		align-items: flex-start;
		flex-direction: column;
		gap: 6px;
	}

	.ffh-dashboard-week-mobile-booking time {
		font-size: 12px;
	}
}


/* 4.6.21: create a booking by clicking a calendar day. */
.ffh-booking-calendar-hint {
	margin: -4px 18px 12px;
	padding: 9px 12px;
	border-radius: 9px;
	background: #f7f8fb;
	color: var(--ffh-muted);
	font-size: 11px;
	font-weight: 700;
}

.ffh-booking-day > header {
	margin: -2px -2px 7px;
}

.ffh-booking-day-select {
	display: flex;
	width: 100%;
	align-items: center;
	justify-content: space-between;
	gap: 6px;
	padding: 3px 4px;
	border: 0;
	border-radius: 8px;
	background: transparent;
	color: inherit;
	font: inherit;
	text-align: left;
	cursor: pointer;
}

.ffh-booking-day-label {
	display: flex;
	align-items: center;
	justify-content: space-between;
	min-width: 0;
	flex: 1;
}

.ffh-booking-day-select:hover,
.ffh-booking-day-select:focus-visible {
	background: rgba(216, 10, 63, .07);
	outline: none;
}

.ffh-booking-day-select:focus-visible {
	box-shadow: 0 0 0 2px rgba(216, 10, 63, .2);
}

.ffh-booking-day-add {
	max-width: 0;
	overflow: hidden;
	color: var(--ffh-red);
	font-size: 9px;
	font-weight: 900;
	white-space: nowrap;
	opacity: 0;
	transition: max-width .18s ease, opacity .18s ease;
}

.ffh-booking-day-select:hover .ffh-booking-day-add,
.ffh-booking-day-select:focus-visible .ffh-booking-day-add {
	max-width: 62px;
	opacity: 1;
}

.ffh-booking-day.is-selected {
	box-shadow: inset 0 0 0 2px var(--ffh-red);
	background: #fff8fa;
}

.ffh-booking-day.is-past .ffh-booking-day-select {
	cursor: default;
	opacity: .65;
}

.ffh-booking-day.is-past .ffh-booking-day-select:hover {
	background: transparent;
}

@media (max-width: 900px) {
	.ffh-booking-calendar-hint {
		display: none;
	}
}


/* 4.6.22: dashboard day quick booking. */
.ffh-dashboard-week-day > header {
	padding: 0;
}

.ffh-dashboard-week-day-select {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	align-items: center;
	gap: 3px 8px;
	width: 100%;
	min-height: 58px;
	padding: 10px 12px;
	color: inherit;
	text-decoration: none;
}

.ffh-dashboard-week-day-select strong {
	overflow: hidden;
	font-size: 11px;
	font-weight: 850;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.ffh-dashboard-week-day-select > span {
	grid-row: 1 / span 2;
	grid-column: 2;
	font-size: 20px;
	font-weight: 900;
}

.ffh-dashboard-week-day-select em {
	color: var(--ffh-red);
	font-size: 9px;
	font-style: normal;
	font-weight: 850;
	opacity: 0;
	transform: translateY(-2px);
	transition: opacity .15s ease, transform .15s ease;
}

.ffh-dashboard-week-day.is-bookable > header:hover,
.ffh-dashboard-week-day.is-bookable > header:focus-within {
	background: #fff5f7;
}

.ffh-dashboard-week-day.is-bookable > header:hover .ffh-dashboard-week-day-select em,
.ffh-dashboard-week-day-select:focus-visible em {
	opacity: 1;
	transform: none;
}

.ffh-dashboard-week-day-select:focus-visible,
.ffh-dashboard-week-empty--bookable:focus-visible {
	outline: 3px solid rgba(189, 18, 48, .2);
	outline-offset: -3px;
}

.ffh-dashboard-week-day-select.is-disabled {
	color: #9aa2b2;
}

.ffh-dashboard-week-empty--bookable {
	align-content: center;
	gap: 6px;
	border: 1px dashed #e3bdc5;
	border-radius: 9px;
	background: #fffafb;
	color: var(--ffh-muted);
	text-decoration: none;
	transition: border-color .15s ease, background .15s ease, color .15s ease;
}

.ffh-dashboard-week-empty--bookable span {
	font-size: 10px;
}

.ffh-dashboard-week-empty--bookable strong {
	color: var(--ffh-red);
	font-size: 10px;
	font-weight: 900;
}

.ffh-dashboard-week-empty--bookable:hover {
	border-color: #d98b9b;
	background: var(--ffh-red-soft);
}

.ffh-booking-form-panel:target {
	scroll-margin-top: 118px;
	box-shadow: 0 0 0 3px rgba(189, 18, 48, .12), 0 12px 28px rgba(16, 24, 40, .08);
}

@media (max-width: 1100px) {
	.ffh-dashboard-week-mobile-picker {
		display: grid;
		grid-template-columns: repeat(7, minmax(0, 1fr));
		gap: 5px;
	}

	.ffh-dashboard-week-mobile-picker > a,
	.ffh-dashboard-week-mobile-picker > span {
		display: grid;
		min-width: 0;
		min-height: 63px;
		place-items: center;
		align-content: center;
		gap: 1px;
		border: 1px solid var(--ffh-line);
		border-radius: 10px;
		background: #fff;
		color: var(--ffh-ink);
		text-decoration: none;
	}

	.ffh-dashboard-week-mobile-picker small {
		color: var(--ffh-muted);
		font-size: 8px;
		font-weight: 850;
		text-transform: uppercase;
	}

	.ffh-dashboard-week-mobile-picker strong {
		font-size: 16px;
		font-weight: 900;
	}

	.ffh-dashboard-week-mobile-picker a span {
		color: var(--ffh-red);
		font-size: 11px;
		font-weight: 900;
	}

	.ffh-dashboard-week-mobile-picker a.is-today {
		border-color: #dfa1ae;
		background: var(--ffh-red-soft);
		color: var(--ffh-red);
	}

	.ffh-dashboard-week-mobile-picker a.has-booking {
		box-shadow: inset 0 -3px 0 var(--ffh-green);
	}

	.ffh-dashboard-week-mobile-picker > span.is-past {
		background: #f7f8fa;
		color: #a7aebc;
		opacity: .7;
	}

	.ffh-dashboard-week-mobile-picker-hint {
		margin: -2px 2px 2px;
		color: var(--ffh-muted);
		font-size: 10px;
		text-align: center;
	}
}

@media (max-width: 620px) {
	.ffh-dashboard-week-mobile-picker {
		gap: 4px;
	}

	.ffh-dashboard-week-mobile-picker > a,
	.ffh-dashboard-week-mobile-picker > span {
		min-height: 58px;
		border-radius: 8px;
	}

	.ffh-dashboard-week-mobile-picker strong {
		font-size: 15px;
	}
}


/* 4.6.23: allow additional bookings on already occupied days. */
.ffh-dashboard-week-more-booking,
.ffh-dashboard-week-mobile-more,
.ffh-booking-day-more,
.ffh-booking-mobile-more {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    border: 1px dashed #dca3af;
    border-radius: 9px;
    background: #fffafb;
    color: var(--ffh-red);
    font: inherit;
    font-size: 10px;
    font-weight: 900;
    text-decoration: none;
    cursor: pointer;
    transition: background .15s ease, border-color .15s ease, transform .15s ease;
}
.ffh-dashboard-week-more-booking {
    min-height: 34px;
    margin-top: 6px;
    padding: 7px 6px;
}
.ffh-dashboard-week-more-booking:hover,
.ffh-dashboard-week-mobile-more:hover,
.ffh-booking-day-more:hover,
.ffh-booking-mobile-more:hover,
.ffh-booking-day-more:focus-visible,
.ffh-booking-mobile-more:focus-visible {
    border-color: var(--ffh-red);
    background: var(--ffh-red-soft);
}
.ffh-booking-day-more {
    min-height: 30px;
    margin-top: 5px;
    padding: 6px;
}
.ffh-dashboard-week-mobile-more,
.ffh-booking-mobile-more {
    min-height: 40px;
    margin-top: 8px;
    padding: 10px 12px;
    font-size: 11px;
}


/* 4.6.24: real compact calendar overview on phones/tablets. */
@media (max-width: 900px) {
	.ffh-booking-calendar-hint {
		display: block;
		margin: 0 12px 10px;
		padding: 8px 10px;
		font-size: 10px;
		line-height: 1.45;
	}

	.ffh-booking-calendar-scroll {
		display: block;
		overflow: visible;
		padding: 0 10px 12px;
	}

	.ffh-booking-weekdays,
	.ffh-booking-calendar {
		grid-template-columns: repeat(7, minmax(0, 1fr));
		width: 100%;
		min-width: 0;
	}

	.ffh-booking-weekdays {
		padding: 0 1px;
	}

	.ffh-booking-weekdays span {
		padding: 7px 1px 6px;
		font-size: 9px;
		letter-spacing: .03em;
	}

	.ffh-booking-day {
		position: relative;
		min-width: 0;
		min-height: 62px;
		padding: 3px 2px 4px;
	}

	.ffh-booking-day > header {
		margin: 0 0 2px;
	}

	.ffh-booking-day-select {
		min-height: 34px;
		justify-content: center;
		padding: 2px;
		border-radius: 7px;
	}

	.ffh-booking-day-label {
		justify-content: center;
	}

	.ffh-booking-day-label strong,
	.ffh-booking-day > header strong {
		width: 25px;
		height: 25px;
		font-size: 11px;
	}

	.ffh-booking-day-label small,
	.ffh-booking-day-add {
		display: none;
	}

	.ffh-booking-day-items {
		display: flex;
		min-height: 11px;
		max-height: 17px;
		align-items: center;
		justify-content: center;
		flex-wrap: wrap;
		gap: 3px;
		padding: 1px 2px 2px;
		overflow: hidden;
	}

	/* In the compact month matrix bookings are represented as status dots.
	   Full booking details remain directly below in the mobile agenda. */
	.ffh-booking-day-items .ffh-booking-chip {
		display: block;
		width: 7px;
		height: 7px;
		min-height: 7px;
		flex: 0 0 7px;
		padding: 0;
		border: 0;
		border-radius: 50%;
		background: var(--ffh-green);
		box-shadow: none;
		pointer-events: none;
		font-size: 0;
		line-height: 0;
	}

	.ffh-booking-day-items .ffh-booking-chip--pending {
		background: var(--ffh-amber);
	}

	.ffh-booking-day-items .ffh-booking-chip--blocked,
	.ffh-booking-day-items .ffh-booking-chip--rejected,
	.ffh-booking-day-items .ffh-booking-chip--cancelled {
		background: var(--ffh-red);
	}

	.ffh-booking-day-items .ffh-booking-chip > * {
		display: none;
	}

	.ffh-booking-day-items .ffh-booking-free,
	.ffh-booking-day-items .ffh-booking-day-more {
		display: none;
	}

	.ffh-booking-day.is-outside {
		background: #f8f9fb;
	}

	.ffh-booking-day.is-outside .ffh-booking-day-select {
		opacity: .52;
	}

	.ffh-booking-day.is-selected {
		box-shadow: inset 0 0 0 2px var(--ffh-red);
		background: #fff7f9;
	}

	.ffh-booking-mobile-agenda {
		margin-top: 2px;
		padding-top: 12px;
		border-top: 1px solid var(--ffh-line);
	}

	.ffh-booking-mobile-agenda-heading strong::after {
		content: " – Details";
	}
}

@media (max-width: 480px) {
	.ffh-booking-calendar-scroll {
		padding-right: 7px;
		padding-left: 7px;
	}

	.ffh-booking-weekdays span {
		font-size: 8px;
	}

	.ffh-booking-day {
		min-height: 57px;
	}

	.ffh-booking-day-label strong,
	.ffh-booking-day > header strong {
		width: 23px;
		height: 23px;
		font-size: 10px;
	}

	.ffh-booking-day-items .ffh-booking-chip {
		width: 6px;
		height: 6px;
		min-height: 6px;
		flex-basis: 6px;
	}
}

/* ================================================================
   4.6.27 · Erledigte Webmaster-Tickets löschen
   ================================================================ */
.ffh-nav-ticket-count {
	display: inline-grid;
	min-width: 20px;
	height: 20px;
	place-items: center;
	padding: 0 6px;
	border-radius: 999px;
	background: var(--ffh-red);
	color: #fff;
	font-size: 11px;
	font-style: normal;
	font-weight: 900;
	line-height: 1;
}

.ffh-password-help {
	margin-top: 18px;
	padding-top: 16px;
	border-top: 1px solid var(--ffh-line, #e4e7ec);
}

.ffh-password-help > summary {
	cursor: pointer;
	color: var(--ffh-red, #bd1230);
	font-weight: 800;
	text-align: center;
	list-style: none;
}

.ffh-password-help > summary::-webkit-details-marker { display: none; }

.ffh-password-help-box {
	margin-top: 14px;
	padding: 18px;
	border: 1px solid var(--ffh-line, #e4e7ec);
	border-radius: 16px;
	background: #f8f9fc;
}

.ffh-password-help-box h3 { margin: 0 0 6px; font-size: 18px; }
.ffh-password-help-box > p { margin: 0 0 15px; color: var(--ffh-muted, #667085); font-size: 13px; line-height: 1.55; }
.ffh-password-help-box .ffh-auth-form { gap: 12px; }
.ffh-password-help-hint { display: block; margin-top: 10px; color: var(--ffh-muted, #667085); font-size: 11px; line-height: 1.45; }

.ffh-ticket-submit-panel { max-width: 900px; }
.ffh-ticket-privacy-note {
	margin-top: 16px;
	padding: 13px 15px;
	border: 1px solid #dce5f4;
	border-radius: 12px;
	background: #f5f8fd;
	color: #4d5872;
	font-size: 13px;
	line-height: 1.5;
}

.ffh-ticket-summary {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 12px;
	margin-bottom: 14px;
}

.ffh-ticket-summary > div {
	padding: 17px 18px;
	border: 1px solid var(--ffh-line);
	border-radius: 16px;
	background: #fff;
	box-shadow: 0 8px 24px rgba(23, 32, 51, .06);
}

.ffh-ticket-summary strong { display: block; color: var(--ffh-ink, #172033); font-size: 27px; line-height: 1; }
.ffh-ticket-summary span { display: block; margin-top: 7px; color: var(--ffh-muted); font-size: 12px; font-weight: 700; }

.ffh-ticket-filters {
	display: flex;
	gap: 7px;
	margin-bottom: 14px;
	padding: 5px;
	border: 1px solid var(--ffh-line);
	border-radius: 14px;
	background: #fff;
	width: fit-content;
	max-width: 100%;
	overflow-x: auto;
}

.ffh-ticket-filters a {
	padding: 9px 12px;
	border-radius: 10px;
	color: #4b5570;
	font-size: 12px;
	font-weight: 800;
	text-decoration: none;
	white-space: nowrap;
}

.ffh-ticket-filters a.is-active { background: #fff0f4; color: var(--ffh-red); }

.ffh-ticket-layout {
	display: grid;
	grid-template-columns: minmax(310px, .82fr) minmax(0, 1.3fr);
	gap: 16px;
	align-items: start;
}

.ffh-ticket-list-panel,
.ffh-ticket-detail-panel { min-height: 430px; }

.ffh-ticket-list {
	max-height: 650px;
	overflow: auto;
	padding: 10px;
}

.ffh-ticket-card {
	display: block;
	margin-bottom: 8px;
	padding: 13px;
	border: 1px solid var(--ffh-line);
	border-radius: 14px;
	background: #fff;
	color: var(--ffh-ink, #172033);
	text-decoration: none;
	transition: border-color .15s ease, box-shadow .15s ease, transform .15s ease;
}

.ffh-ticket-card:hover { border-color: #cbd2df; transform: translateY(-1px); }
.ffh-ticket-card.is-selected { border-color: var(--ffh-red); box-shadow: 0 0 0 2px rgba(197, 17, 61, .08); background: #fffafb; }
.ffh-ticket-card:last-child { margin-bottom: 0; }
.ffh-ticket-card > strong { display: block; margin-top: 9px; font-size: 14px; line-height: 1.35; }
.ffh-ticket-card > small { display: block; margin-top: 5px; color: var(--ffh-muted); font-size: 11px; }
.ffh-ticket-card-top { display: flex; justify-content: space-between; gap: 8px; align-items: center; }

.ffh-ticket-kind,
.ffh-ticket-status {
	display: inline-flex;
	align-items: center;
	min-height: 24px;
	padding: 4px 8px;
	border-radius: 999px;
	font-size: 10px;
	font-weight: 900;
	line-height: 1;
}

.ffh-ticket-kind--problem { background: #fff0f4; color: var(--ffh-red); }
.ffh-ticket-kind--improvement { background: #eef5ff; color: #2d5fbd; }
.ffh-ticket-kind--password { background: #fff6df; color: #a96d00; }
.ffh-ticket-status--open { background: #fff0f4; color: var(--ffh-red); }
.ffh-ticket-status--in_progress { background: #fff6df; color: #9c690b; }
.ffh-ticket-status--done { background: #e9f8ef; color: #17794b; }

.ffh-ticket-detail { padding: 20px; }
.ffh-ticket-detail > h3 { margin: 0 0 14px; font-size: 21px; }
.ffh-ticket-meta {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 9px;
	margin-bottom: 16px;
}

.ffh-ticket-meta span {
	padding: 10px 11px;
	border-radius: 11px;
	background: #f6f8fb;
	color: #4f5974;
	font-size: 12px;
	line-height: 1.35;
}
.ffh-ticket-meta strong { display: block; margin-bottom: 3px; color: #8a92a7; font-size: 9px; text-transform: uppercase; letter-spacing: .08em; }
.ffh-ticket-message {
	margin-bottom: 20px;
	padding: 17px;
	border: 1px solid var(--ffh-line);
	border-radius: 14px;
	background: #fff;
	white-space: normal;
	font-size: 14px;
	line-height: 1.65;
}

.ffh-ticket-telegram-panel,
.ffh-ticket-own-report { margin-top: 16px; }
.ffh-ticket-telegram-body,
.ffh-ticket-own-report > form { padding: 20px; }
.ffh-ticket-telegram-body > p { margin: 0 0 18px; color: var(--ffh-muted); font-size: 13px; line-height: 1.55; }
.ffh-ticket-test-form { margin-top: 10px; }

@media (max-width: 1000px) {
	.ffh-ticket-layout { grid-template-columns: 1fr; }
	.ffh-ticket-list-panel,
	.ffh-ticket-detail-panel { min-height: 0; }
	.ffh-ticket-list { max-height: none; }
}

@media (max-width: 680px) {
	.ffh-ticket-summary { grid-template-columns: 1fr 1fr; }
	.ffh-ticket-summary > div:last-child { grid-column: 1 / -1; }
	.ffh-ticket-meta { grid-template-columns: 1fr; }
	.ffh-ticket-detail,
	.ffh-ticket-telegram-body,
	.ffh-ticket-own-report > form { padding: 15px; }
	.ffh-password-help-box { padding: 14px; }
}


/* Ticket deletion is intentionally separated from the normal edit action. */
.ffh-ticket-delete-zone { margin-top: 22px; }
.ffh-ticket-delete-zone h3 { margin-top: 0; }


/* 4.6.31: single calendar booking action + automatic next free time. */
.ffh-booking-auto-time-hint {
	margin: -2px 0 14px;
	padding: 10px 12px;
	border-radius: 10px;
	background: #f5f7fb;
	color: #5e6882;
	font-size: 13px;
	line-height: 1.45;
}
.ffh-booking-auto-time-hint.is-success {
	background: #eaf8f0;
	color: #176c43;
}
.ffh-booking-auto-time-hint.is-warning {
	background: #fff2e8;
	color: #9a4e13;
}

/* === FFH 4.6.32 Webmaster-Zentrale === */
.ffh-webmaster-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 18px;padding:10px;background:#fff;border:1px solid var(--ffh-border,#e2e6ef);border-radius:18px;box-shadow:0 10px 28px rgba(20,28,60,.05)}
.ffh-webmaster-tabs a{display:inline-flex;align-items:center;gap:8px;padding:10px 12px;border-radius:12px;text-decoration:none;color:#39415f;font-size:13px;font-weight:800;border:1px solid transparent}
.ffh-webmaster-tabs a:hover{background:#f6f7fb}.ffh-webmaster-tabs a.is-active{background:#fff1f5;color:#c80a3b;border-color:#f1c3d0}
.ffh-webmaster-tabs a em{font-style:normal;min-width:20px;height:20px;border-radius:999px;background:#d80a3f;color:#fff;display:inline-grid;place-items:center;font-size:11px;padding:0 5px}
.ffh-webmaster-panel-body{padding:22px}.ffh-inline-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.ffh-webmaster-summary{margin-bottom:14px}
.ffh-webmaster-status-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-bottom:16px}.ffh-webmaster-status-grid--wide{grid-template-columns:repeat(3,minmax(0,1fr))}
.ffh-webmaster-status-card{padding:18px;display:flex;gap:13px;align-items:center}.ffh-webmaster-status-card>span{font-size:22px;line-height:1}.ffh-webmaster-status-card>span.is-ok{color:#16945a}.ffh-webmaster-status-card>span.is-bad{color:#cf274c}.ffh-webmaster-status-card strong{display:block}.ffh-webmaster-status-card small{display:block;color:#6c748e;margin-top:3px}
.ffh-webmaster-log{padding:0 18px 18px}.ffh-webmaster-log-row{display:grid;grid-template-columns:135px 1fr;gap:16px;padding:14px 0;border-bottom:1px solid #edf0f5}.ffh-webmaster-log-row:last-child{border-bottom:0}.ffh-webmaster-log-row time{font-size:12px;color:#727b96;font-weight:700}.ffh-webmaster-log-row strong{font-size:12px}.ffh-webmaster-log-row p{margin:4px 0 3px}.ffh-webmaster-log-row small{color:#79829c}.ffh-webmaster-log-row--error strong{color:#c71443}.ffh-webmaster-log-row--warning strong{color:#ae7200}.ffh-webmaster-log-row--info strong{color:#315da9}
.ffh-ticket-device{margin:16px 0;border:1px solid #e4e8ef;border-radius:14px;background:#fafbfc;overflow:hidden}.ffh-ticket-device summary{cursor:pointer;padding:12px 14px;font-weight:800}.ffh-ticket-device dl{margin:0;padding:0 14px 14px}.ffh-ticket-device dl div{display:grid;grid-template-columns:135px 1fr;gap:10px;padding:7px 0;border-top:1px solid #eceff4}.ffh-ticket-device dt{font-size:12px;color:#6d7690;font-weight:800}.ffh-ticket-device dd{margin:0;font-size:12px;overflow-wrap:anywhere}
.ffh-preview-banner,.ffh-portal-announcement{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:0 0 14px;padding:12px 16px;border-radius:14px;border:1px solid}.ffh-preview-banner{background:#fff5d9;border-color:#efcf79;color:#6c4b00}.ffh-preview-banner a{margin-left:auto;color:inherit;font-weight:900}.ffh-portal-announcement strong{min-width:max-content}.ffh-portal-announcement--info{background:#edf4ff;border-color:#c8daf9;color:#264f9a}.ffh-portal-announcement--warning{background:#fff5da;border-color:#f0d28a;color:#745200}.ffh-portal-announcement--error{background:#fff0f4;border-color:#efbdca;color:#a90b35}.ffh-portal-announcement--success{background:#eaf8f0;border-color:#bfe6d0;color:#176e47}
.ffh-notice--info{background:#edf4ff!important;border-color:#c8daf9!important;color:#264f9a!important}
.ffh-maintenance-card p{line-height:1.6}
@media(max-width:900px){.ffh-webmaster-status-grid,.ffh-webmaster-status-grid--wide{grid-template-columns:1fr 1fr}.ffh-webmaster-tabs{overflow-x:auto;flex-wrap:nowrap}.ffh-webmaster-tabs a{white-space:nowrap}.ffh-webmaster-log-row{grid-template-columns:1fr;gap:5px}.ffh-ticket-device dl div{grid-template-columns:1fr;gap:2px}}
@media(max-width:600px){.ffh-webmaster-status-grid,.ffh-webmaster-status-grid--wide{grid-template-columns:1fr}.ffh-webmaster-panel-body{padding:16px}.ffh-preview-banner a{margin-left:0;width:100%}}

/* 4.6.33: unified navigation icons + private support conversation. */
.ffh-icon-sprite {
	position: absolute;
	width: 0;
	height: 0;
	overflow: hidden;
}
.ffh-nav-icon {
	width: 18px;
	height: 18px;
	flex: 0 0 18px;
	fill: none;
	stroke: currentColor;
	stroke-width: 1.8;
	stroke-linecap: round;
	stroke-linejoin: round;
}
.ffh-nav-dropdown-icon .ffh-nav-icon {
	width: 19px;
	height: 19px;
}
.ffh-nav-dropdown-symbol.ffh-nav-icon {
	font-size: initial;
	font-weight: initial;
}

.ffh-support-member-grid {
	display: grid;
	grid-template-columns: minmax(0, 1.05fr) minmax(310px, .75fr);
	gap: 16px;
	align-items: start;
}
.ffh-support-member-grid .ffh-ticket-submit-panel {
	max-width: none;
}
.ffh-member-ticket-detail {
	margin-top: 16px;
}
.ffh-ticket-progress {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 10px;
	margin: 0 0 20px;
}
.ffh-ticket-progress > div {
	padding: 13px 14px;
	border: 1px solid var(--ffh-line);
	border-radius: 13px;
	background: #f8f9fb;
}
.ffh-ticket-progress small {
	display: block;
	margin-bottom: 4px;
	color: var(--ffh-muted);
	font-size: 10px;
	font-weight: 800;
	letter-spacing: .05em;
	text-transform: uppercase;
}
.ffh-ticket-progress strong {
	display: block;
	font-size: 14px;
	line-height: 1.35;
}
.ffh-ticket-conversation-title {
	margin: 22px 0 10px;
	font-size: 16px;
}
.ffh-ticket-conversation {
	display: grid;
	gap: 10px;
	padding: 14px;
	border: 1px solid var(--ffh-line);
	border-radius: 16px;
	background: #f6f8fb;
}
.ffh-ticket-chat-row {
	display: flex;
	width: 100%;
}
.ffh-ticket-chat-row--member {
	justify-content: flex-start;
}
.ffh-ticket-chat-row--webmaster {
	justify-content: flex-end;
}
.ffh-ticket-chat-bubble {
	width: fit-content;
	max-width: min(82%, 720px);
	padding: 12px 14px;
	border: 1px solid #dfe4ec;
	border-radius: 15px 15px 15px 4px;
	background: #fff;
	color: var(--ffh-ink);
	font-size: 13px;
	line-height: 1.55;
	box-shadow: 0 4px 12px rgba(23,32,51,.04);
}
.ffh-ticket-chat-row--webmaster .ffh-ticket-chat-bubble {
	border-color: #f2c7d1;
	border-radius: 15px 15px 4px 15px;
	background: #fff3f6;
}
.ffh-ticket-chat-author {
	display: flex;
	justify-content: space-between;
	gap: 14px;
	margin-bottom: 6px;
	font-size: 11px;
}
.ffh-ticket-chat-author strong {
	font-size: 12px;
}
.ffh-ticket-chat-author span {
	color: var(--ffh-muted);
	white-space: nowrap;
}
.ffh-ticket-reply-form {
	margin-top: 14px;
	padding: 15px;
	border: 1px solid var(--ffh-line);
	border-radius: 15px;
	background: #fff;
}
.ffh-ticket-reply-form .ffh-form-actions {
	margin-top: 10px;
}
.ffh-ticket-reply-form--webmaster {
	border-color: #f0ccd5;
	background: #fffafb;
}

@media (max-width: 1050px) {
	.ffh-support-member-grid { grid-template-columns: 1fr; }
}
@media (max-width: 680px) {
	.ffh-ticket-progress { grid-template-columns: 1fr; }
	.ffh-ticket-chat-bubble { max-width: 92%; }
	.ffh-ticket-chat-author { align-items: flex-start; flex-direction: column; gap: 2px; }
}


/* 4.6.39: Dashboard-Termine und Aktivitäten ruhiger, kompakter und höhenunabhängig. */
.ffh-dashboard-grid {
	grid-template-columns: minmax(0, 1.08fr) minmax(340px, .92fr);
	align-items: start;
}

.ffh-dashboard-grid > .ffh-panel {
	height: auto;
	align-self: start;
	overflow: hidden;
}

.ffh-dashboard-grid .ffh-panel-heading {
	padding: 19px 22px 15px;
}

.ffh-dashboard-grid .ffh-panel-heading h2 {
	font-size: 18px;
}

.ffh-dashboard-grid .ffh-deadline-list,
.ffh-dashboard-grid .ffh-activity-list {
	display: grid;
	gap: 8px;
	padding: 12px 14px 14px;
}

.ffh-dashboard-grid .ffh-deadline,
.ffh-dashboard-grid .ffh-activity {
	min-height: 62px;
	padding: 9px 10px;
	border: 1px solid #e9edf3;
	border-radius: 13px;
	background: #fff;
}

.ffh-dashboard-grid a.ffh-deadline,
.ffh-dashboard-grid a.ffh-activity {
	transition: border-color .16s ease, background .16s ease, transform .16s ease, box-shadow .16s ease;
}

.ffh-dashboard-grid a.ffh-deadline:hover,
.ffh-dashboard-grid a.ffh-activity:hover {
	border-color: #d9dfe8;
	background: #fbfcfd;
	box-shadow: 0 5px 14px rgba(16,24,40,.045);
	transform: translateY(-1px);
}

.ffh-dashboard-grid .ffh-deadline:last-child,
.ffh-dashboard-grid .ffh-activity:last-child {
	border-bottom: 1px solid #e9edf3;
}

.ffh-dashboard-grid .ffh-date-tile {
	width: 46px;
	height: 46px;
	border-radius: 12px;
}

.ffh-dashboard-grid .ffh-date-tile strong {
	font-size: 17px;
}

.ffh-dashboard-grid .ffh-deadline-copy strong,
.ffh-dashboard-grid .ffh-activity strong {
	font-size: 13px;
}

.ffh-dashboard-grid .ffh-deadline-copy small,
.ffh-dashboard-grid .ffh-activity small {
	font-size: 10.5px;
}

.ffh-dashboard-grid .ffh-pill,
.ffh-dashboard-grid .ffh-log-status {
	padding: 5px 9px;
	font-size: 9.5px;
}

.ffh-dashboard-grid .ffh-activity {
	border-left-width: 3px;
}

.ffh-dashboard-grid .ffh-activity.ffh-log-entry--none {
	background: #fff9fa;
}

.ffh-dashboard-grid .ffh-activity.ffh-log-entry--open {
	background: #fffbf7;
}

.ffh-dashboard-grid .ffh-activity.ffh-log-entry--in_progress {
	background: #fffdf7;
}

.ffh-dashboard-grid .ffh-activity.ffh-log-entry--done {
	background: #f8fcfa;
}

@media (max-width: 1050px) {
	.ffh-dashboard-grid {
		grid-template-columns: 1fr;
	}
}

@media (max-width: 680px) {
	.ffh-dashboard-grid .ffh-panel-heading {
		padding: 17px 16px 14px;
	}
	.ffh-dashboard-grid .ffh-deadline-list,
	.ffh-dashboard-grid .ffh-activity-list {
		padding: 10px;
	}
	.ffh-dashboard-grid .ffh-deadline,
	.ffh-dashboard-grid .ffh-activity {
		min-height: 58px;
		padding: 8px 9px;
	}
}

/* 4.6.41: existing Webmaster announcement only on dashboard, collapsible per user. */
.ffh-portal-announcement {
	justify-content: space-between;
}
.ffh-portal-announcement-copy {
	display: flex;
	align-items: center;
	gap: 12px;
	min-width: 0;
	flex: 1 1 auto;
}
.ffh-portal-announcement-copy span {
	min-width: 0;
	line-height: 1.5;
}
.ffh-portal-announcement > form {
	margin: 0 0 0 auto;
	flex: 0 0 auto;
}
.ffh-portal-announcement-toggle {
	min-height: 32px;
	padding: 6px 11px;
	border: 1px solid currentColor;
	border-radius: 9px;
	background: rgba(255,255,255,.64);
	color: inherit;
	font: inherit;
	font-size: 11px;
	font-weight: 800;
	cursor: pointer;
	opacity: .78;
}
.ffh-portal-announcement-toggle:hover {
	background: rgba(255,255,255,.92);
	opacity: 1;
}
.ffh-portal-announcement.is-collapsed {
	padding-top: 9px;
	padding-bottom: 9px;
}
@media (max-width: 680px) {
	.ffh-portal-announcement-copy { align-items: flex-start; }
	.ffh-portal-announcement > form { margin-left: 0; }
}


/* 4.6.42: Webmaster-Zentrale. */
.ffh-webmaster-hub-hero {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 14px;
	margin-bottom: 16px;
}
.ffh-webmaster-hub-card {
	display: flex;
	align-items: center;
	gap: 14px;
	padding: 18px;
}
.ffh-webmaster-hub-icon {
	display: grid;
	width: 42px;
	height: 42px;
	flex: 0 0 42px;
	border-radius: 12px;
	background: #eef1f5;
	color: #445065;
	font-size: 20px;
	place-items: center;
}
.ffh-webmaster-hub-card > div {
	display: grid;
	gap: 3px;
	min-width: 0;
}
.ffh-webmaster-hub-card small,
.ffh-webmaster-hub-card span {
	color: var(--ffh-muted);
	font-size: 10.5px;
	font-weight: 700;
}
.ffh-webmaster-hub-card strong {
	color: var(--ffh-ink);
	font-size: 18px;
	line-height: 1.2;
}
.ffh-webmaster-favorites-panel {
	margin-bottom: 16px;
}
.ffh-webmaster-favorite-links {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 10px;
	padding: 14px 16px 16px;
}
.ffh-webmaster-favorite-links > a {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	min-height: 54px;
	padding: 11px 13px;
	border: 1px solid #e7ebf0;
	border-radius: 12px;
	background: #fbfcfd;
	color: var(--ffh-ink);
	text-decoration: none;
	transition: border-color .15s ease, background .15s ease, transform .15s ease;
}
.ffh-webmaster-favorite-links > a:hover {
	border-color: #d6dce5;
	background: #fff;
	transform: translateY(-1px);
}
.ffh-webmaster-favorite-links > a strong {
	font-size: 12px;
}
.ffh-webmaster-favorite-links > a span,
.ffh-webmaster-favorites-empty {
	color: var(--ffh-muted);
	font-size: 10px;
	font-weight: 700;
}
.ffh-webmaster-favorites-empty {
	grid-column: 1 / -1;
	padding: 8px 2px;
}
.ffh-webmaster-hub-grid {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 16px;
	align-items: start;
	margin-bottom: 16px;
}
.ffh-webmaster-mini-stats {
	display: grid;
	grid-template-columns: repeat(5, minmax(0, 1fr));
	gap: 8px;
	padding: 14px;
}
.ffh-webmaster-mini-stats > div {
	display: grid;
	gap: 3px;
	padding: 12px 8px;
	border: 1px solid #edf0f4;
	border-radius: 11px;
	background: #fbfcfd;
	text-align: center;
}
.ffh-webmaster-mini-stats strong {
	color: var(--ffh-ink);
	font-size: 20px;
}
.ffh-webmaster-mini-stats span {
	color: var(--ffh-muted);
	font-size: 9px;
	font-weight: 750;
}
.ffh-webmaster-db-counters {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 0 18px;
	padding: 10px 18px 14px;
}
.ffh-webmaster-db-counters > div {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 10px;
	min-height: 38px;
	border-bottom: 1px solid #eef1f4;
}
.ffh-webmaster-db-counters span {
	color: var(--ffh-muted);
	font-size: 11px;
	font-weight: 700;
}
.ffh-webmaster-db-counters strong {
	font-size: 13px;
}
.ffh-webmaster-config-check {
	display: grid;
	padding: 8px 18px 14px;
}
.ffh-webmaster-config-check > div {
	display: grid;
	grid-template-columns: 12px minmax(130px, .65fr) minmax(0, 1fr);
	align-items: center;
	gap: 10px;
	min-height: 42px;
	border-bottom: 1px solid #eef1f4;
}
.ffh-webmaster-config-check > div:last-child,
.ffh-webmaster-db-counters > div:nth-last-child(-n+2) {
	border-bottom: 0;
}
.ffh-webmaster-config-check strong {
	font-size: 11px;
}
.ffh-webmaster-config-check small {
	color: var(--ffh-muted);
	font-size: 10.5px;
}
.ffh-config-dot {
	width: 9px;
	height: 9px;
	border-radius: 50%;
	background: #9ca5b3;
}
.ffh-config-dot--ok { background: #2d9c6f; }
.ffh-config-dot--warning { background: #d49a27; }
.ffh-config-dot--error { background: var(--ffh-red); }
.ffh-webmaster-favorite-picker {
	display: grid;
	gap: 5px;
	margin-top: 18px;
}
.ffh-webmaster-favorite-picker > strong {
	font-size: 12px;
}
.ffh-webmaster-favorite-picker > small {
	color: var(--ffh-muted);
	font-size: 10.5px;
}
.ffh-webmaster-favorite-picker > div {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 8px;
	margin-top: 6px;
}
.ffh-webmaster-favorite-picker label {
	display: flex;
	align-items: center;
	gap: 8px;
	min-height: 38px;
	padding: 7px 9px;
	border: 1px solid #e7ebf0;
	border-radius: 10px;
	background: #fbfcfd;
	font-size: 10.5px;
	font-weight: 700;
}
.ffh-webmaster-session-list {
	display: grid;
	padding: 8px 18px 14px;
}
.ffh-webmaster-session-list article {
	display: grid;
	grid-template-columns: 12px minmax(0, 1fr) auto;
	align-items: center;
	gap: 11px;
	min-height: 54px;
	border-bottom: 1px solid #eef1f4;
}
.ffh-webmaster-session-list article:last-child { border-bottom: 0; }
.ffh-webmaster-session-list article > div {
	display: grid;
	gap: 3px;
}
.ffh-webmaster-session-list article strong {
	font-size: 12px;
}
.ffh-webmaster-session-list article strong em {
	margin-left: 5px;
	padding: 2px 5px;
	border-radius: 5px;
	background: #eef1f5;
	color: var(--ffh-muted);
	font-size: 8px;
	font-style: normal;
	text-transform: uppercase;
}
.ffh-webmaster-session-list article small,
.ffh-webmaster-session-list article > span:last-child {
	color: var(--ffh-muted);
	font-size: 10px;
	font-weight: 700;
}
.ffh-session-state {
	width: 9px;
	height: 9px;
	border-radius: 50%;
	background: #a8b0bb;
}
.ffh-session-state.is-online {
	background: #2d9c6f;
	box-shadow: 0 0 0 4px rgba(45,156,111,.1);
}
@media (max-width: 1100px) {
	.ffh-webmaster-hub-hero { grid-template-columns: 1fr 1fr; }
	.ffh-webmaster-hub-grid { grid-template-columns: 1fr; }
	.ffh-webmaster-favorite-links { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 700px) {
	.ffh-webmaster-hub-hero,
	.ffh-webmaster-favorite-links,
	.ffh-webmaster-favorite-picker > div { grid-template-columns: 1fr; }
	.ffh-webmaster-mini-stats { grid-template-columns: repeat(2, 1fr); }
	.ffh-webmaster-db-counters { grid-template-columns: 1fr; }
	.ffh-webmaster-db-counters > div:nth-last-child(-n+2) { border-bottom: 1px solid #eef1f4; }
	.ffh-webmaster-db-counters > div:last-child { border-bottom: 0; }
	.ffh-webmaster-config-check > div { grid-template-columns: 12px 1fr; padding: 8px 0; }
	.ffh-webmaster-config-check small { grid-column: 2; }
	.ffh-webmaster-session-list article { grid-template-columns: 12px 1fr; padding: 8px 0; }
	.ffh-webmaster-session-list article > span:last-child { grid-column: 2; }
}

/* 4.6.45: dedicated Webmaster session view with collapsible technical details. */
.ffh-webmaster-hub-hero {
	grid-template-columns: repeat(2, minmax(0, 1fr));
}
.ffh-webmaster-sessions-panel .ffh-panel-heading {
	align-items: flex-start;
}
.ffh-webmaster-session-list--detailed {
	padding: 10px 18px 16px;
}
.ffh-webmaster-session-item {
	border-bottom: 1px solid #e8ecf1;
}
.ffh-webmaster-session-item:last-child {
	border-bottom: 0;
}
.ffh-webmaster-session-item > summary {
	display: grid;
	grid-template-columns: 12px minmax(0, 1fr) auto auto;
	align-items: center;
	gap: 12px;
	min-height: 68px;
	padding: 10px 2px;
	list-style: none;
	cursor: pointer;
}
.ffh-webmaster-session-item > summary::-webkit-details-marker {
	display: none;
}
.ffh-webmaster-session-item > summary:focus-visible {
	border-radius: 9px;
	outline: 3px solid rgba(38, 87, 151, .16);
	outline-offset: 2px;
}
.ffh-webmaster-session-main {
	display: grid;
	gap: 4px;
	min-width: 0;
}
.ffh-webmaster-session-main strong {
	color: var(--ffh-ink);
	font-size: 12.5px;
}
.ffh-webmaster-session-main strong em {
	margin-left: 5px;
	padding: 2px 5px;
	border-radius: 5px;
	background: #eef1f5;
	color: var(--ffh-muted);
	font-size: 8px;
	font-style: normal;
	text-transform: uppercase;
}
.ffh-webmaster-session-main small,
.ffh-webmaster-session-status {
	color: var(--ffh-muted);
	font-size: 10.5px;
	font-weight: 700;
}
.ffh-webmaster-session-status {
	white-space: nowrap;
}
.ffh-webmaster-session-toggle {
	min-width: 106px;
	padding: 7px 9px;
	border: 1px solid #dfe4ea;
	border-radius: 9px;
	background: #fafbfc;
	color: #465267;
	font-size: 9.5px;
	font-weight: 800;
	text-align: center;
}
.ffh-webmaster-session-item[open] > summary .ffh-webmaster-session-toggle {
	background: #f0f2f5;
}
.ffh-webmaster-session-item[open] > summary .ffh-webmaster-session-toggle::before {
	content: "Details schließen";
}
.ffh-webmaster-session-item[open] > summary .ffh-webmaster-session-toggle {
	font-size: 0;
}
.ffh-webmaster-session-item[open] > summary .ffh-webmaster-session-toggle::before {
	font-size: 9.5px;
}
.ffh-webmaster-session-details {
	margin: 0 0 14px 24px;
	padding: 14px;
	border: 1px solid #e7ebf0;
	border-radius: 12px;
	background: #fafbfc;
}
.ffh-webmaster-session-details dl {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 0 24px;
	margin: 0;
}
.ffh-webmaster-session-details dl > div {
	display: grid;
	grid-template-columns: minmax(110px, .75fr) minmax(0, 1fr);
	gap: 10px;
	padding: 8px 0;
	border-bottom: 1px solid #e9edf2;
}
.ffh-webmaster-session-details dt {
	color: var(--ffh-muted);
	font-size: 10px;
	font-weight: 700;
}
.ffh-webmaster-session-details dd {
	margin: 0;
	color: var(--ffh-ink);
	font-size: 10.5px;
	font-weight: 750;
	text-align: right;
	word-break: break-word;
}
.ffh-webmaster-session-user-agent {
	margin-top: 12px;
	padding-top: 2px;
}
.ffh-webmaster-session-user-agent > summary {
	color: #536071;
	font-size: 10px;
	font-weight: 800;
	cursor: pointer;
}
.ffh-webmaster-session-user-agent code {
	display: block;
	margin-top: 8px;
	padding: 9px 10px;
	overflow-wrap: anywhere;
	border-radius: 8px;
	background: #eef1f5;
	color: #465267;
	font-size: 9px;
	line-height: 1.45;
}
@media (max-width: 800px) {
	.ffh-webmaster-session-item > summary {
		grid-template-columns: 12px minmax(0, 1fr) auto;
	}
	.ffh-webmaster-session-toggle {
		grid-column: 2 / -1;
		justify-self: start;
	}
	.ffh-webmaster-session-details {
		margin-left: 0;
	}
	.ffh-webmaster-session-details dl {
		grid-template-columns: 1fr;
	}
}
@media (max-width: 600px) {
	.ffh-webmaster-hub-hero {
		grid-template-columns: 1fr;
	}
	.ffh-webmaster-session-status {
		display: none;
	}
	.ffh-webmaster-session-item > summary {
		grid-template-columns: 12px minmax(0, 1fr);
	}
	.ffh-webmaster-session-details dl > div {
		grid-template-columns: 1fr;
		gap: 3px;
	}
	.ffh-webmaster-session-details dd {
		text-align: left;
	}
}


/* 4.6.49: movable equipment subcategories. */
.ffh-equipment-row--subcategory > th[scope="row"]{background:#f2f4f7;color:var(--ffh-ink);font-weight:800}
.ffh-equipment-row--subcategory td{background:#fafbfc}
.ffh-equipment-subcategory-marker{display:inline-flex;margin-right:9px;padding:3px 7px;border-radius:999px;background:#e4e8ee;color:#536071;font-size:9px;font-weight:850;letter-spacing:.05em;text-transform:uppercase}
.ffh-equipment-row--heading-only > th[scope="row"]{border-left:4px solid #aab2bf}
.ffh-equipment-cell--disabled{background:transparent!important;color:#b1b7c1!important;box-shadow:none!important;cursor:default}
.ffh-equipment-move-actions{display:inline-flex;gap:4px}.ffh-equipment-move-actions form{margin:0}.ffh-equipment-move-button{min-width:30px;padding-inline:8px;font-size:15px}
.ffh-equipment-edit form{min-width:min(430px,78vw)}
.ffh-equipment-checkable-field[hidden],[data-equipment-quantity][hidden]{display:none!important}
@media(max-width:760px){.ffh-equipment-subcategory-marker{display:flex;width:max-content;margin:0 0 5px}.ffh-equipment-edit form{min-width:0}}

/* 4.6.51: positioning moved into the equipment edit dialog. */
.ffh-equipment-edit-trigger {
	width: 100%;
	min-height: 34px;
	border: 1px solid #d9dfe7;
	border-radius: 8px;
	background: #fff;
	color: #2d5f99;
	font-size: 10px;
	font-weight: 850;
}
.ffh-equipment-edit-trigger:hover {
	border-color: #b9c7d8;
	background: #f6f9fc;
}
.ffh-equipment-delete-form {
	margin: 0;
}
.ffh-equipment-delete-form .ffh-table-action {
	min-height: 34px;
	padding-inline: 10px;
	border-radius: 8px;
}
.ffh-equipment-edit-dialog {
	width: min(660px, calc(100vw - 40px));
	max-width: 660px;
	padding: 0;
	border: 0;
	border-radius: 18px;
	background: transparent;
	box-shadow: 0 24px 70px rgba(18, 28, 45, .28);
}
.ffh-equipment-edit-dialog::backdrop {
	background: rgba(19, 29, 45, .52);
	backdrop-filter: blur(2px);
}
.ffh-equipment-edit-card {
	overflow: hidden;
	border: 1px solid #e1e5eb;
	border-radius: 18px;
	background: #fff;
}
.ffh-equipment-edit-header {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: 20px;
	padding: 22px 24px 18px;
	border-bottom: 1px solid #e8ebef;
	background: #fafbfc;
	text-align: left;
}
.ffh-equipment-edit-header .ffh-eyebrow {
	margin: 0 0 5px;
}
.ffh-equipment-edit-header h2 {
	margin: 0;
	color: var(--ffh-ink);
	font-size: 22px;
	line-height: 1.2;
}
.ffh-equipment-edit-header p:last-child {
	margin: 5px 0 0;
	color: var(--ffh-muted);
	font-size: 11px;
	font-weight: 700;
}
.ffh-equipment-edit-close {
	display: grid;
	width: 36px;
	height: 36px;
	flex: 0 0 36px;
	padding: 0;
	border: 1px solid #dce1e8;
	border-radius: 10px;
	background: #fff;
	color: #5a6677;
	cursor: pointer;
	font-size: 22px;
	line-height: 1;
	place-items: center;
}
.ffh-equipment-edit-close:hover {
	background: #f2f4f7;
	color: var(--ffh-ink);
}
.ffh-equipment-edit-card > form {
	padding: 22px 24px 24px;
}
.ffh-equipment-edit-grid {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
	gap: 16px;
	text-align: left;
}
.ffh-equipment-edit-name,
.ffh-equipment-edit-position,
.ffh-equipment-edit-checkable {
	grid-column: 1 / -1;
}
.ffh-equipment-edit-grid .ffh-field {
	max-width: none;
}
.ffh-equipment-edit-grid .ffh-checkbox-field {
	margin: 0;
}
.ffh-equipment-edit-actions {
	display: flex;
	justify-content: flex-end;
	gap: 10px;
	margin-top: 22px;
	padding-top: 18px;
	border-top: 1px solid #edf0f4;
}
.ffh-equipment-edit-actions .ffh-button {
	min-width: 150px;
}
@media (min-width: 901px) {
	.ffh-equipment-action-heading,
	.ffh-equipment-row-action {
		position: sticky;
		right: 0;
		z-index: 3;
		width: 225px !important;
		box-shadow: -6px 0 14px rgba(23, 32, 51, .055);
	}
	.ffh-equipment-action-heading {
		z-index: 4;
	}
	.ffh-equipment-row-actions {
		grid-template-columns: minmax(0, 1fr) auto;
		gap: 7px;
		padding: 2px;
	}
}
@media (max-width: 760px) {
	.ffh-equipment-edit-dialog {
		width: calc(100vw - 20px);
		max-width: none;
		border-radius: 15px;
	}
	.ffh-equipment-edit-card,
	.ffh-equipment-edit-dialog {
		border-radius: 15px;
	}
	.ffh-equipment-edit-header {
		padding: 18px;
	}
	.ffh-equipment-edit-card > form {
		padding: 18px;
	}
	.ffh-equipment-edit-grid {
		grid-template-columns: 1fr;
	}
	.ffh-equipment-edit-name,
	.ffh-equipment-edit-position,
	.ffh-equipment-edit-checkable {
		grid-column: auto;
	}
	.ffh-equipment-edit-actions {
		flex-direction: column-reverse;
	}
	.ffh-equipment-edit-actions .ffh-button {
		width: 100%;
		min-width: 0;
	}
}


/* 4.6.53: Webmaster may edit approved bookings without decision rights. */
.ffh-booking-webmaster-lock {
	display: grid;
	gap: 4px;
	padding: 12px 14px;
	border: 1px solid var(--ffh-line);
	border-radius: 12px;
	background: #f7f8fa;
}
.ffh-booking-webmaster-lock strong {
	color: var(--ffh-ink);
	font-size: 13px;
}
.ffh-booking-webmaster-lock small {
	color: var(--ffh-muted);
	font-size: 11px;
	line-height: 1.45;
}


/* 4.6.54: show the existing booking note to webmasters while editing. */
.ffh-booking-webmaster-note {
	display: grid;
	gap: 5px;
	padding: 14px;
	border: 1px solid var(--ffh-line);
	border-radius: 12px;
	background: #fff;
}
.ffh-booking-webmaster-note > span {
	color: var(--ffh-muted);
	font-size: 11px;
	font-weight: 800;
	text-transform: uppercase;
	letter-spacing: .04em;
}
.ffh-booking-webmaster-note p {
	margin: 0;
	color: var(--ffh-ink);
	font-size: 13px;
	font-weight: 650;
	line-height: 1.55;
	white-space: pre-wrap;
	overflow-wrap: anywhere;
}
.ffh-booking-webmaster-note small {
	color: var(--ffh-muted);
	font-size: 11px;
	line-height: 1.45;
}

/* 4.6.55: Webmaster role builder and session management. */
.ffh-role-admin-layout {
	display: grid;
	grid-template-columns: minmax(280px, .72fr) minmax(0, 1.28fr);
	gap: 20px;
	align-items: start;
}
.ffh-custom-role-list {
	display: grid;
	gap: 10px;
	padding: 18px;
}
.ffh-custom-role-card {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 14px;
	padding: 14px 15px;
	border: 1px solid var(--ffh-line);
	border-radius: 12px;
	background: #fff;
}
.ffh-custom-role-card.is-selected {
	border-color: #aeb8c7;
	background: #f7f8fa;
}
.ffh-custom-role-card > div:first-child {
	display: grid;
	gap: 3px;
}
.ffh-custom-role-card strong {
	color: var(--ffh-ink);
	font-size: 14px;
}
.ffh-custom-role-card small {
	color: var(--ffh-muted);
	font-size: 11px;
}
.ffh-custom-role-card .ffh-inline-actions {
	flex: 0 0 auto;
	margin: 0;
}
.ffh-role-capability-grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 10px;
	margin-top: 18px;
}
.ffh-role-capability {
	display: flex;
	align-items: flex-start;
	gap: 10px;
	padding: 13px 14px;
	border: 1px solid var(--ffh-line);
	border-radius: 12px;
	background: #fafbfc;
	cursor: pointer;
}
.ffh-role-capability:hover {
	border-color: #c7ced8;
	background: #fff;
}
.ffh-role-capability input {
	margin-top: 3px;
	flex: 0 0 auto;
}
.ffh-role-capability > span {
	display: grid;
	gap: 4px;
}
.ffh-role-capability strong {
	color: var(--ffh-ink);
	font-size: 13px;
}
.ffh-role-capability small {
	color: var(--ffh-muted);
	font-size: 11px;
	line-height: 1.45;
}
.ffh-built-in-role-note {
	margin-top: 20px;
}
.ffh-session-admin-actions {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 9px;
	margin-top: 16px;
	padding-top: 14px;
	border-top: 1px solid var(--ffh-line);
}
.ffh-session-admin-actions form {
	margin: 0;
}
@media (max-width: 1000px) {
	.ffh-role-admin-layout {
		grid-template-columns: 1fr;
	}
}
@media (max-width: 700px) {
	.ffh-role-capability-grid {
		grid-template-columns: 1fr;
	}
	.ffh-custom-role-card {
		align-items: flex-start;
		flex-direction: column;
	}
	.ffh-session-admin-actions {
		align-items: stretch;
		flex-direction: column;
	}
	.ffh-session-admin-actions .ffh-button {
		width: 100%;
	}
}

/* ========================================================================== */
/* 4.6.56: iPad + smartphone usability refresh                                */
/* ========================================================================== */

/* Prevent background scrolling while the compact navigation is open. */
html.ffh-mobile-nav-open,
html.ffh-mobile-nav-open body {
	overflow: hidden;
}

@media (max-width: 1024px) {
	.ffh-topbar {
		min-height: 70px;
		padding-right: max(18px, env(safe-area-inset-right));
		padding-left: max(18px, env(safe-area-inset-left));
	}

	.ffh-brand {
		gap: 10px;
	}

	.ffh-brand-mark {
		width: 36px;
		height: 43px;
	}

	.ffh-brand strong {
		font-size: 15px;
	}

	.ffh-brand small {
		font-size: 9px;
	}

	.ffh-mobile-toggle {
		display: grid;
		width: 46px;
		height: 46px;
		padding: 9px;
		place-content: center;
		border-radius: 12px;
	}

	.ffh-nav {
		top: 70px;
		max-height: calc(100dvh - 70px);
		padding: 10px max(16px, env(safe-area-inset-right)) calc(18px + env(safe-area-inset-bottom)) max(16px, env(safe-area-inset-left));
	}

	.ffh-nav > a,
	.ffh-nav-dropdown > summary {
		min-height: 50px;
		gap: 11px;
		padding: 0 14px;
		font-size: 14px;
	}

	.ffh-nav-icon {
		width: 20px;
		height: 20px;
		flex-basis: 20px;
	}

	.ffh-nav-dropdown-menu,
	.ffh-nav-dropdown-menu--right {
		margin-left: 20px;
	}

	.ffh-nav-dropdown-menu a {
		min-height: 56px;
		padding: 8px 10px;
	}

	.ffh-main {
		padding: 28px 24px 42px;
	}

	.ffh-page-heading {
		gap: 16px;
		margin-bottom: 22px;
	}

	.ffh-page-heading--hero {
		min-height: 0;
		padding: 26px 28px;
	}

	.ffh-panel {
		border-radius: 16px;
	}

	.ffh-panel-heading {
		padding: 19px 20px 16px;
	}

	.ffh-form-panel,
	.ffh-booking-form,
	.ffh-booking-settings-form,
	.ffh-booking-requests,
	.ffh-blackout-list {
		max-width: 100%;
	}

	.ffh-field input,
	.ffh-field select,
	.ffh-field textarea,
	.ffh-filterbar input,
	.ffh-filterbar select,
	.ffh-equipment-year-nav select,
	.ffh-booking-dialog input,
	.ffh-booking-dialog select,
	.ffh-booking-dialog textarea {
		min-height: 46px;
	}

	.ffh-button,
	.ffh-table-action,
	.ffh-booking-tabs a,
	.ffh-webmaster-tabs a,
	.ffh-ticket-filters a {
		touch-action: manipulation;
	}

	/* Horizontal tab bars are much easier to use on iPad than wrapped rows. */
	.ffh-booking-tabs,
	.ffh-webmaster-tabs,
	.ffh-ticket-filters,
	.ffh-trello-board-tabs {
		display: flex;
		max-width: 100%;
		flex-wrap: nowrap;
		overflow-x: auto;
		overflow-y: hidden;
		-webkit-overflow-scrolling: touch;
		scrollbar-width: none;
		scroll-snap-type: x proximity;
	}

	.ffh-booking-tabs::-webkit-scrollbar,
	.ffh-webmaster-tabs::-webkit-scrollbar,
	.ffh-ticket-filters::-webkit-scrollbar,
	.ffh-trello-board-tabs::-webkit-scrollbar {
		display: none;
	}

	.ffh-booking-tabs a,
	.ffh-webmaster-tabs a,
	.ffh-ticket-filters a,
	.ffh-trello-board-tabs a {
		flex: 0 0 auto;
		white-space: nowrap;
		scroll-snap-align: start;
	}

	.ffh-webmaster-tabs {
		padding: 8px;
		border-radius: 14px;
	}

	/* Dashboard cards remain compact on tablets. */
	.ffh-stat-grid {
		gap: 12px;
	}

	.ffh-stat-card {
		min-height: 92px;
		padding: 16px;
	}

	.ffh-dashboard-week-mobile {
		padding: 10px;
	}

	.ffh-dashboard-week-mobile-day {
		border-radius: 11px;
	}

	/* Equipment matrix: keep context visible while swiping horizontally. */
	.ffh-equipment-table-wrap {
		position: relative;
		overscroll-behavior-x: contain;
		-webkit-overflow-scrolling: touch;
	}

	.ffh-equipment-table th:first-child,
	.ffh-equipment-table td:first-child {
		position: sticky;
		left: 0;
		z-index: 2;
		background-clip: padding-box;
		box-shadow: 5px 0 10px rgba(23, 32, 51, .05);
	}

	.ffh-equipment-table thead th:first-child {
		z-index: 4;
	}

	.ffh-equipment-row--subcategory > th[scope="row"] {
		background: #f2f4f7;
	}

	.ffh-equipment-row--heading-only > th[scope="row"] {
		background: #f2f4f7;
	}

	/* Dialogs should stay inside the visible iPad viewport. */
	.ffh-booking-dialog,
	.ffh-equipment-edit-dialog,
	.ffh-equipment-defect-dialog {
		max-height: min(88dvh, 820px);
		overflow: auto;
		overscroll-behavior: contain;
	}

	.ffh-equipment-edit-card > form,
	.ffh-booking-dialog form,
	.ffh-equipment-defect-dialog form {
		overscroll-behavior: contain;
	}

	.ffh-role-admin-layout,
	.ffh-support-member-grid,
	.ffh-ticket-layout {
		gap: 14px;
	}

	.ffh-role-capability-grid {
		gap: 9px;
	}

	.ffh-role-capability {
		min-height: 72px;
	}
}

/* iPad portrait and smaller tablets. */
@media (min-width: 681px) and (max-width: 900px) {
	.ffh-main {
		padding: 24px 20px 38px;
	}

	.ffh-page-heading h1 {
		font-size: 34px;
	}

	.ffh-page-heading--hero {
		padding: 24px;
	}

	.ffh-panel-heading {
		padding-right: 18px;
		padding-left: 18px;
	}

	.ffh-table[data-mobile-cards] tbody {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.ffh-table[data-mobile-cards] td {
		grid-template-columns: minmax(96px, .42fr) minmax(0, 1fr);
	}

	.ffh-booking-dialog {
		width: min(720px, calc(100vw - 36px));
	}

	.ffh-equipment-edit-dialog {
		width: min(680px, calc(100vw - 36px));
	}

	.ffh-ticket-chat-bubble {
		max-width: 88%;
	}
}

/* Smartphone layout. */
@media (max-width: 680px) {
	.ffh-topbar {
		min-height: 64px;
		padding-right: max(12px, env(safe-area-inset-right));
		padding-left: max(12px, env(safe-area-inset-left));
	}

	.ffh-brand {
		gap: 8px;
	}

	.ffh-brand-mark {
		width: 31px;
		height: 37px;
	}

	.ffh-brand strong {
		font-size: 14px;
	}

	.ffh-brand small {
		font-size: 8.5px;
	}

	.ffh-mobile-toggle {
		width: 44px;
		height: 44px;
	}

	.ffh-nav {
		top: 64px;
		max-height: calc(100dvh - 64px);
		padding-top: 9px;
	}

	.ffh-nav > a,
	.ffh-nav-dropdown > summary {
		min-height: 52px;
		border-radius: 11px;
	}

	.ffh-main {
		min-height: calc(100dvh - 64px);
		padding: 16px max(11px, env(safe-area-inset-right)) calc(30px + env(safe-area-inset-bottom)) max(11px, env(safe-area-inset-left));
	}

	.ffh-page-heading {
		gap: 11px;
		margin-bottom: 15px;
	}

	.ffh-page-heading--hero {
		padding: 18px 16px;
		border-radius: 14px;
	}

	.ffh-page-heading--hero::after {
		display: none;
	}

	.ffh-page-heading h1 {
		font-size: clamp(26px, 8vw, 31px);
		line-height: 1.1;
	}

	.ffh-page-heading p:not(.ffh-eyebrow) {
		font-size: 12.5px;
		line-height: 1.5;
	}

	.ffh-panel {
		border-radius: 13px;
		box-shadow: 0 4px 14px rgba(16, 24, 40, .035);
	}

	.ffh-panel-heading,
	.ffh-dashboard-grid .ffh-panel-heading {
		gap: 10px;
		padding: 15px 14px 12px;
	}

	.ffh-panel-heading h2,
	.ffh-dashboard-grid .ffh-panel-heading h2 {
		font-size: 17px;
	}

	/* iOS Safari zooms when controls use font sizes below 16px. */
	.ffh-portal-shell input:not([type="checkbox"]):not([type="radio"]),
	.ffh-portal-shell select,
	.ffh-portal-shell textarea {
		font-size: 16px !important;
	}

	.ffh-field input,
	.ffh-field select,
	.ffh-field textarea,
	.ffh-filterbar input,
	.ffh-filterbar select {
		min-height: 48px;
	}

	.ffh-portal-shell input[type="checkbox"],
	.ffh-portal-shell input[type="radio"] {
		width: 20px;
		height: 20px;
		flex: 0 0 20px;
	}

	.ffh-button {
		min-height: 46px;
		padding: 10px 14px;
	}

	.ffh-button.ffh-button--compact,
	.ffh-table-action {
		min-height: 42px;
	}

	/* A 2x2 summary uses phone space better without becoming cramped. */
	.ffh-stat-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 8px;
	}

	.ffh-stat-card {
		min-height: 86px;
		gap: 10px;
		padding: 12px;
	}

	.ffh-stat-icon {
		width: 42px;
		height: 42px;
		border-radius: 11px;
	}

	.ffh-stat-card strong {
		font-size: 24px;
	}

	.ffh-stat-card span:last-child {
		font-size: 10.5px;
		line-height: 1.25;
	}

	.ffh-dashboard-grid .ffh-deadline-list,
	.ffh-dashboard-grid .ffh-activity-list {
		padding: 8px;
	}

	.ffh-dashboard-grid .ffh-deadline,
	.ffh-dashboard-grid .ffh-activity {
		min-height: 56px;
		padding: 8px;
		border-radius: 11px;
	}

	.ffh-dashboard-week-mobile {
		gap: 7px;
		padding: 8px;
	}

	.ffh-dashboard-week-mobile-day > header {
		padding: 9px 10px;
	}

	.ffh-dashboard-week-mobile-day > div {
		padding: 7px;
	}

	.ffh-dashboard-week-mobile-booking {
		padding: 9px;
	}

	.ffh-dashboard-week-mobile-picker {
		overflow-x: auto;
		overscroll-behavior-x: contain;
		-webkit-overflow-scrolling: touch;
		scrollbar-width: none;
	}

	.ffh-dashboard-week-mobile-picker::-webkit-scrollbar {
		display: none;
	}

	/* Forms and card tables use the full phone width. */
	.ffh-form-panel,
	.ffh-booking-form,
	.ffh-booking-settings-form,
	.ffh-booking-requests,
	.ffh-blackout-list,
	.ffh-ticket-detail,
	.ffh-ticket-telegram-body,
	.ffh-ticket-own-report > form,
	.ffh-webmaster-panel-body {
		padding-right: 13px;
		padding-left: 13px;
	}

	.ffh-form-grid,
	.ffh-booking-datetime-grid,
	.ffh-equipment-edit-grid {
		grid-template-columns: 1fr;
	}

	.ffh-form-actions,
	.ffh-inline-actions,
	.ffh-booking-decision,
	.ffh-blackout-actions {
		align-items: stretch;
		flex-direction: column;
	}

	.ffh-form-actions > *,
	.ffh-inline-actions > *,
	.ffh-inline-actions form,
	.ffh-inline-actions .ffh-button,
	.ffh-booking-decision > *,
	.ffh-blackout-actions > * {
		width: 100%;
	}

	.ffh-table-wrap--cards {
		padding: 7px;
	}

	.ffh-table[data-mobile-cards] tbody {
		grid-template-columns: 1fr;
		gap: 8px;
	}

	.ffh-table[data-mobile-cards] tr {
		border-radius: 11px;
	}

	.ffh-table[data-mobile-cards] td {
		grid-template-columns: minmax(84px, .38fr) minmax(0, 1fr);
		gap: 8px;
		min-height: 43px;
		padding: 9px 10px;
	}

	/* Equipment remains a matrix, but its label column follows the swipe. */
	.ffh-equipment-table[data-mobile-cards],
	.ffh-equipment-table {
		min-width: 880px;
	}

	.ffh-equipment-table th:first-child {
		width: 148px;
	}

	.ffh-equipment-category-heading,
	.ffh-equipment-toolbar,
	.ffh-equipment-new-category,
	.ffh-equipment-csv-panel {
		padding: 13px;
	}

	.ffh-equipment-category-heading .ffh-heading-actions {
		gap: 7px;
	}

	/* Full-width bottom sheets are easier to operate with one hand. */
	.ffh-booking-dialog,
	.ffh-equipment-edit-dialog,
	.ffh-equipment-defect-dialog {
		inset: auto 0 0 0;
		width: 100%;
		max-width: none;
		max-height: 92dvh;
		margin: 0;
		border-radius: 18px 18px 0 0;
	}

	.ffh-equipment-edit-card,
	.ffh-equipment-edit-dialog {
		border-radius: 18px 18px 0 0;
	}

	.ffh-equipment-edit-header,
	.ffh-booking-dialog header {
		position: sticky;
		top: 0;
		z-index: 3;
		padding: 15px 14px;
		background: #fff;
	}

	.ffh-equipment-edit-card > form,
	.ffh-booking-dialog form,
	.ffh-equipment-defect-dialog form {
		padding: 14px 13px calc(16px + env(safe-area-inset-bottom));
	}

	.ffh-equipment-edit-actions,
	.ffh-booking-dialog footer {
		position: sticky;
		bottom: 0;
		z-index: 2;
		margin-right: -13px;
		margin-bottom: calc(-16px - env(safe-area-inset-bottom));
		margin-left: -13px;
		padding: 12px 13px calc(12px + env(safe-area-inset-bottom));
		border-top: 1px solid var(--ffh-line);
		background: rgba(255, 255, 255, .97);
		box-shadow: 0 -8px 20px rgba(23, 32, 51, .06);
	}

	.ffh-booking-calendar-heading {
		gap: 10px;
	}

	.ffh-booking-month-nav {
		gap: 5px;
	}

	.ffh-booking-month-nav a {
		min-height: 44px;
	}

	.ffh-booking-calendar-scroll {
		padding-right: 5px;
		padding-left: 5px;
	}

	.ffh-booking-weekdays span {
		font-size: 8px;
	}

	.ffh-booking-day {
		min-height: 56px;
	}

	.ffh-ticket-filters,
	.ffh-booking-tabs,
	.ffh-webmaster-tabs {
		margin-right: -2px;
		margin-left: -2px;
		padding-bottom: 3px;
	}

	.ffh-ticket-progress {
		gap: 7px;
	}

	.ffh-ticket-progress > div {
		padding: 11px 12px;
		border-radius: 11px;
	}

	.ffh-ticket-conversation {
		gap: 8px;
		padding: 9px;
		border-radius: 13px;
	}

	.ffh-ticket-chat-bubble {
		max-width: 96%;
		padding: 10px 11px;
		font-size: 12.5px;
	}

	.ffh-ticket-reply-form {
		padding: 12px;
	}

	.ffh-webmaster-hub-card {
		padding: 14px;
	}

	.ffh-webmaster-mini-stats {
		gap: 7px;
	}

	.ffh-webmaster-session-list--detailed {
		padding: 7px 10px 12px;
	}

	.ffh-webmaster-session-item > summary {
		min-height: 62px;
		padding: 9px 0;
	}

	.ffh-webmaster-session-details {
		padding: 11px;
	}

	.ffh-role-capability {
		min-height: 0;
		padding: 11px;
	}

	.ffh-custom-role-list {
		padding: 12px;
	}

	.ffh-custom-role-card {
		padding: 12px;
	}

	.ffh-portal-announcement {
		align-items: stretch;
		gap: 9px;
		flex-direction: column;
	}

	.ffh-portal-announcement-copy {
		align-items: flex-start;
	}

	.ffh-portal-announcement > form,
	.ffh-portal-announcement-toggle {
		width: 100%;
		margin: 0;
	}

	.ffh-footer {
		gap: 2px;
		font-size: 9px;
	}
}

@media (max-width: 420px) {
	.ffh-brand > span:last-child small {
		display: none;
	}

	.ffh-stat-grid {
		grid-template-columns: 1fr;
	}

	.ffh-stat-card {
		min-height: 76px;
	}

	.ffh-table[data-mobile-cards] td {
		grid-template-columns: 1fr;
		gap: 3px;
	}

	.ffh-booking-day {
		min-height: 52px;
	}
}


/* ========================================================================== */
/* 4.6.57: visible mobile menu + unobtrusive equipment administration         */
/* ========================================================================== */

@media (max-width: 1024px) {
	.ffh-mobile-toggle {
		border-color: #d5dae2;
		background: #ffffff;
		color: #172033;
	}

	.ffh-mobile-toggle > span:not(.screen-reader-text) {
		display: block !important;
		width: 24px;
		height: 2px;
		margin: 3px auto;
		background: #172033 !important;
		opacity: 1 !important;
		visibility: visible !important;
	}

	.ffh-mobile-toggle:hover,
	.ffh-mobile-toggle:focus-visible {
		border-color: #b9c0cb;
		background: #f7f8fa;
	}
}

.ffh-equipment-add-item {
	border-top: 1px solid var(--ffh-line);
	background: #fafbfc;
}

.ffh-equipment-add-toggle {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 10px;
	min-height: 54px;
	padding: 12px 22px;
	color: var(--ffh-text);
	font-size: 12px;
	font-weight: 800;
	cursor: pointer;
	list-style: none;
	transition: background .16s ease, color .16s ease;
}

.ffh-equipment-add-toggle::-webkit-details-marker {
	display: none;
}

.ffh-equipment-add-toggle:hover,
.ffh-equipment-add-toggle:focus-visible {
	background: #f1f5f9;
	color: var(--ffh-red);
	outline: none;
}

.ffh-equipment-add-toggle-icon {
	display: inline-grid;
	width: 24px;
	height: 24px;
	place-items: center;
	font-size: 18px;
	transition: transform .16s ease;
}

.ffh-equipment-add-item[open] .ffh-equipment-add-toggle {
	justify-content: space-between;
	border-bottom: 1px solid var(--ffh-line);
	background: #f8fafc;
}

.ffh-equipment-add-item[open] .ffh-equipment-add-toggle-icon {
	transform: rotate(180deg);
}

.ffh-equipment-add-item .ffh-equipment-add-form {
	border-top: 0;
	background: #fff;
}

.ffh-equipment-add-actions {
	display: flex;
	align-items: center;
	gap: 9px;
	flex-wrap: wrap;
}

@media (max-width: 680px) {
	.ffh-equipment-add-toggle {
		justify-content: space-between;
		min-height: 52px;
		padding: 12px 15px;
	}

	.ffh-equipment-add-actions {
		display: grid;
		grid-template-columns: 1fr;
		width: 100%;
	}

	.ffh-equipment-add-actions .ffh-button {
		width: 100%;
	}
}

/* 4.6.62: internal Webmaster / Portal-Admin collaboration tasks. */
.ffh-internal-tasks-head {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: 20px;
	margin: 0 0 18px;
}

.ffh-internal-tasks-head h2 {
	margin: 2px 0 6px;
	font-size: 22px;
}

.ffh-internal-tasks-head p:last-child {
	max-width: 760px;
	margin: 0;
	color: var(--ffh-muted);
}

.ffh-task-create-panel {
	position: relative;
	flex: 0 0 auto;
}

.ffh-task-create-panel > summary {
	list-style: none;
	cursor: pointer;
}

.ffh-task-create-panel > summary::-webkit-details-marker {
	display: none;
}

.ffh-task-create-panel[open] {
	width: min(760px, 100%);
}

.ffh-task-create-panel[open] > summary {
	margin-left: auto;
	width: max-content;
}

.ffh-task-create-form {
	margin-top: 12px;
	padding: 20px;
	border: 1px solid var(--ffh-line);
	border-radius: 16px;
	background: #fff;
	box-shadow: 0 14px 34px rgba(16, 24, 40, .08);
}

.ffh-task-filters {
	margin-bottom: 16px;
}

.ffh-internal-task-layout {
	display: grid;
	grid-template-columns: minmax(300px, .76fr) minmax(0, 1.45fr);
	gap: 18px;
	align-items: start;
}

.ffh-internal-task-list-panel,
.ffh-internal-task-detail-panel {
	overflow: hidden;
}

.ffh-internal-task-list {
	display: grid;
	gap: 8px;
	padding: 12px;
}

.ffh-internal-task-card {
	display: grid;
	gap: 7px;
	padding: 14px;
	border: 1px solid #e8ebf0;
	border-radius: 13px;
	background: #fff;
	color: var(--ffh-ink);
	text-decoration: none;
	transition: border-color .15s ease, background .15s ease, transform .15s ease;
}

.ffh-internal-task-card:hover,
.ffh-internal-task-card.is-selected {
	border-color: #d7a4ae;
	background: #fffafb;
}

.ffh-internal-task-card:hover {
	transform: translateY(-1px);
}

.ffh-internal-task-card > strong {
	font-size: 13px;
	line-height: 1.4;
}

.ffh-internal-task-card > small {
	color: var(--ffh-muted);
	font-size: 11px;
	line-height: 1.45;
}

.ffh-internal-task-card-top {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 10px;
}

.ffh-task-type,
.ffh-task-status {
	display: inline-flex;
	align-items: center;
	min-height: 24px;
	padding: 4px 8px;
	border-radius: 999px;
	font-size: 10px;
	font-weight: 800;
	line-height: 1;
}

.ffh-task-type {
	background: #eef2f6;
	color: #4b586b;
}

.ffh-task-status--open {
	background: #fff1f3;
	color: #aa1833;
}

.ffh-task-status--in_progress {
	background: #fff7df;
	color: #996800;
}

.ffh-task-status--waiting {
	background: #eef4ff;
	color: #315a9c;
}

.ffh-task-status--done {
	background: #e9f8f0;
	color: #177452;
}

.ffh-internal-task-detail {
	display: grid;
	gap: 22px;
	padding: 20px 22px 24px;
}

.ffh-task-meta-grid {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 10px;
}

.ffh-task-meta-grid > div {
	display: grid;
	gap: 4px;
	padding: 12px;
	border: 1px solid #edf0f4;
	border-radius: 11px;
	background: #fafbfc;
}

.ffh-task-meta-grid small {
	color: var(--ffh-muted);
	font-size: 10px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: .04em;
}

.ffh-task-meta-grid strong {
	font-size: 12px;
}

.ffh-task-edit-form {
	padding-top: 4px;
}

.ffh-task-discussion {
	padding-top: 18px;
	border-top: 1px solid var(--ffh-line);
}

.ffh-task-discussion > h3 {
	margin: 0 0 14px;
	font-size: 16px;
}

.ffh-task-comments {
	display: grid;
	gap: 9px;
	margin-bottom: 14px;
}

.ffh-task-comment {
	max-width: 88%;
	padding: 11px 13px;
	border: 1px solid #e7ebf0;
	border-radius: 13px 13px 13px 4px;
	background: #f8fafc;
}

.ffh-task-comment.is-own {
	margin-left: auto;
	border-color: #f0d6dc;
	border-radius: 13px 13px 4px 13px;
	background: #fff7f8;
}

.ffh-task-comment > div {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	margin-bottom: 5px;
}

.ffh-task-comment strong {
	font-size: 11px;
}

.ffh-task-comment span,
.ffh-task-comments-empty {
	color: var(--ffh-muted);
	font-size: 10px;
}

.ffh-task-comment p {
	margin: 0;
	font-size: 12px;
	line-height: 1.55;
}

.ffh-task-comment-form .ffh-form-actions {
	padding-top: 10px;
}

.ffh-task-delete-zone {
	display: flex;
	justify-content: flex-end;
	padding-top: 16px;
	border-top: 1px solid var(--ffh-line);
}

@media (max-width: 1100px) {
	.ffh-internal-task-layout {
		grid-template-columns: 1fr;
	}

	.ffh-task-meta-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (max-width: 680px) {
	.ffh-internal-tasks-head {
		display: grid;
		grid-template-columns: 1fr;
	}

	.ffh-task-create-panel,
	.ffh-task-create-panel[open] {
		width: 100%;
	}

	.ffh-task-create-panel > summary,
	.ffh-task-create-panel[open] > summary {
		width: 100%;
		justify-content: center;
	}

	.ffh-task-create-form,
	.ffh-internal-task-detail {
		padding: 15px;
	}

	.ffh-task-meta-grid {
		grid-template-columns: 1fr;
	}

	.ffh-task-comment {
		max-width: 100%;
	}
}
