/**
 * CoreFusion OS — App-Like Frontend Shell (Springboard + Top App Bar).
 *
 * A cohesive, self-contained "operating system" surface that reuses the brand
 * tokens (--cf-brand-*) but lives in its own .cf-os namespace so it never
 * clashes with the marketing theme around it. Mobile-first; an iOS-style
 * Springboard grid scales from 2 columns on phones to 4 on the desktop.
 *
 * @package Chamber_CRM
 * @since   1.57.0
 */

/* -------------------------------------------------------------------------
 * Semantic palette (v1.62.0) — Vercel/Linear-inspired, brand neon accents.
 * Defined at :root so a single [data-theme="dark"] flip on <body> re-skins the
 * whole OS. Every surface reads these tokens (no hardcoded greys).
 * ---------------------------------------------------------------------- */

:root {
	/* Surfaces + text (light). */
	--cf-os-bg: #F8FAFC;
	--cf-os-surface: #FFFFFF;
	--cf-os-text: #1E293B;
	--cf-os-text-muted: #64748B;
	--cf-os-border: #E2E8F0;

	/* Brand neon accents — used strategically, not everywhere. */
	--cf-os-accent-cyan: #0CD2E9;
	--cf-os-accent-magenta: var( --cf-brand-accent, #F47937 ); /* v2.55.0 — repointed off the legacy magenta to the brand accent (buzz-orange default). Name kept to avoid churning 7 call sites. */

	/* Structural tokens. */
	--cf-os-accent: var( --cf-brand-primary, #2563eb );
	--cf-os-accent-ink: var( --cf-brand-on-primary, #ffffff );
	--cf-os-radius: 22px;
	--cf-os-bar-h: 56px;
	--cf-os-shadow: 0 10px 30px rgba( 15, 23, 42, 0.10 );

	/* v2.57.0 — CoreFusion OS expanded palette (Buzzfish-derived). One source of
	   truth for icon tiles, tags, charts, and semantic states. Brand-fixed hues —
	   they do NOT invert per theme. */
	--cf-pal-blue: #0A1CC1;
	--cf-pal-orange: #F47937;
	--cf-pal-sky: #1AA7E8;
	--cf-pal-teal: #15B79E;
	--cf-pal-indigo: #5A52D9;
	--cf-pal-gold: #F5A623;
	--cf-pal-coral: #EC6A75;
	--cf-pal-crimson: #E5394A;
	--cf-pal-ink: #231F20;
	--cf-pal-slate: #6B6C75;
	--cf-pal-paper: #F5F5F5;
}

body[data-theme="dark"] {
	--cf-os-bg: #0A0A0A;
	--cf-os-surface: #171717;
	--cf-os-text: #EDEDED;
	--cf-os-text-muted: #A3A3A3;
	--cf-os-border: #262626;
	--cf-os-shadow: 0 12px 34px rgba( 0, 0, 0, 0.55 );
}

.cf-os {
	position: relative;
	box-sizing: border-box;
	min-height: 70vh;
	margin: 0;
	background: var( --cf-os-bg );
	border-radius: var( --cf-os-radius );
	overflow: hidden;
	font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
	color: var( --cf-os-text );
	box-shadow: var( --cf-os-shadow );
}

.cf-os *,
.cf-os *::before,
.cf-os *::after {
	box-sizing: border-box;
}

/* When launched as an installed PWA, fill the whole viewport edge-to-edge. */
@media ( display-mode: standalone ) {
	.cf-os {
		min-height: 100vh;
		border-radius: 0;
		box-shadow: none;
	}
}

/* Bespoke theme-free template (Bug 1 fix): the OS owns the whole viewport, so
 * reset the bare <body> and let the shell run full-bleed. */
body.cf-os-body {
	margin: 0;
	padding: 0;
	background: var( --cf-os-bg );
	color: var( --cf-os-text );
}

body.cf-os-body .cf-os {
	min-height: 100vh;
	border-radius: 0;
	box-shadow: none;
}

/* -------------------------------------------------------------------------
 * Top App Bar (sticky).
 * ---------------------------------------------------------------------- */

.cf-os__bar {
	position: sticky;
	top: 0;
	z-index: 5;
	display: flex;
	align-items: center;
	gap: 10px;
	height: var( --cf-os-bar-h );
	padding: 0 12px;
	padding-top: env( safe-area-inset-top, 0 );
	background: var( --cf-os-surface );
	color: var( --cf-os-text );
	border-bottom: 1px solid var( --cf-os-border );
}

/* Icon buttons in the bar — Home, View Website, Theme toggle. */
.cf-os__home,
.cf-os__web,
.cf-os__vault,
.cf-os__theme {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 auto;
	width: 38px;
	height: 38px;
	padding: 0;
	border: 0;
	border-radius: 10px;
	background: transparent;
	color: var( --cf-os-text-muted );
	text-decoration: none;
	cursor: pointer;
	transition: background 0.15s ease, color 0.15s ease;
}

.cf-os__home:hover,
.cf-os__home:focus-visible,
.cf-os__web:hover,
.cf-os__web:focus-visible,
.cf-os__vault:hover,
.cf-os__vault:focus-visible,
.cf-os__theme:hover,
.cf-os__theme:focus-visible {
	background: var( --cf-os-bg );
	color: var( --cf-os-text );
	outline: none;
}

.cf-os__home[hidden] {
	display: none;
}

/* v2.19.9 — the "four boxes" Front-Portal button renders a 40px glyph (the grid
   icon's built-in viewBox padding keeps comfortable breathing room in the bar). */
.cf-os__home {
	width: 44px;
	height: 44px;
}

.cf-os__home svg {
	width: 40px;
	height: 40px;
}

/* Theme toggle — show the icon for the action that's available. */
.cf-os__theme .cf-os__sun {
	display: none;
}

.cf-os__theme .cf-os__moon {
	display: inline-flex;
}

body[data-theme="dark"] .cf-os__theme .cf-os__sun {
	display: inline-flex;
}

body[data-theme="dark"] .cf-os__theme .cf-os__moon {
	display: none;
}

.cf-os__theme:hover {
	color: var( --cf-os-accent-cyan );
}

.cf-os__title {
	flex: 0 1 auto;
	min-width: 0;
	margin: 0;
	font-size: 16px;
	font-weight: 700;
	letter-spacing: 0.01em;
	text-align: left;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
	color: var( --cf-os-text );
}

/* v2.56.0 — brand lockup (fusion-O mark + Comfortaa wordmark) doubles as the
   persistent Home button. */
.cf-os__brand {
	display: inline-flex;
	align-items: center;
	gap: 9px;
	flex: 0 1 auto;
	min-width: 0;
	margin: 0;
	padding: 5px 9px 5px 6px;
	border: 0;
	border-radius: 10px;
	background: transparent;
	color: var( --cf-os-text );
	cursor: pointer;
	text-decoration: none;
	transition: background 0.15s ease, transform 0.1s ease;
}

/* v2.59.0 — tactile press: the brand/Home lockup dips on click so it reads as a button. */
.cf-os__brand:active {
	transform: translateY( 1px ) scale( 0.95 );
}

.cf-os__brand:hover,
.cf-os__brand:focus-visible {
	background: var( --cf-os-bg );
	outline: none;
}

.cf-os__brand-mark {
	flex: 0 0 auto;
	width: 40px;
	height: 40px;
}

.cf-os__brand-text {
	font-family: 'Comfortaa', var( --cf-brand-font-heading ), system-ui, sans-serif;
	font-size: 18px;
	font-weight: 400;
	letter-spacing: 0.005em;
	line-height: 1;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

.cf-os__brand-text b {
	font-weight: 700;
}

@media ( max-width: 560px ) {
	.cf-os__brand-text {
		display: none;
	}
}

/* -------------------------------------------------------------------------
 * Global Command Search (Ctrl/⌘+K) — v1.68.0.
 * ---------------------------------------------------------------------- */

.cf-os__search {
	position: relative;
	flex: 1 1 auto;
	max-width: 420px;
	margin: 0 auto;
	/* v1.98.0 — fix the icon/input stacking: own stacking context, and the
	 * FIELD surface (background + border + focus ring) lives on the container.
	 * The input is transparent and layered ABOVE the icon (z-index), so the
	 * magnifier can never paint on top of the input text. */
	isolation: isolate;
	background: var( --cf-os-bg );
	border: 1px solid var( --cf-os-border );
	border-radius: 10px;
}

.cf-os__search:focus-within {
	border-color: var( --cf-os-accent );
	background: var( --cf-os-surface );
	box-shadow: 0 0 0 3px rgba( 37, 99, 235, 0.15 );
}

.cf-os__search-icon {
	position: absolute;
	left: 12px;
	top: 50%;
	transform: translateY( -50% );
	/* Pin the icon box so no global svg/img reset can balloon it past the
	 * input's padding-left and back onto the text. */
	width: 16px;
	height: 16px;
	color: var( --cf-os-text-muted );
	pointer-events: none;
	z-index: 0; /* below the input's text layer */
}

.cf-os__search-input {
	position: relative;
	z-index: 1; /* input + its text paint ABOVE the icon */
	width: 100%;
	height: 38px;
	/* Longhands (not shorthand) so a later/mobile padding-right override can
	 * never silently reset the left clearance. Left = icon (12px + 16px) + a
	 * comfortable gap so the cursor/text never touches the magnifier; right
	 * clears the ⌘K badge. */
	padding-top: 0;
	padding-right: 66px;
	padding-bottom: 0;
	padding-left: 46px;
	border: 0;
	border-radius: 10px;
	background: transparent; /* field surface is on .cf-os__search */
	color: var( --cf-os-text );
	font: inherit;
	font-size: 14px;
	box-sizing: border-box;
}

.cf-os__search-input::placeholder {
	color: var( --cf-os-text-muted );
}

.cf-os__search-input:focus {
	outline: none;
}

.cf-os__kbd {
	position: absolute;
	right: 9px;
	top: 50%;
	transform: translateY( -50% );
	display: inline-flex;
	align-items: center;
	gap: 1px;
	padding: 2px 7px;
	border: 1px solid var( --cf-os-border );
	border-radius: 6px;
	background: var( --cf-os-surface );
	color: var( --cf-os-text-muted );
	font-size: 11px;
	font-weight: 700;
	font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
	pointer-events: none;
}

/* Floating results dropdown. */
.cf-os__search-results {
	position: absolute;
	top: calc( 100% + 8px );
	left: 0;
	right: 0;
	z-index: 30;
	max-height: 60vh;
	overflow-y: auto;
	padding: 6px;
	background: var( --cf-os-surface );
	border: 1px solid var( --cf-os-border );
	border-radius: 12px;
	box-shadow: 0 16px 40px rgba( 15, 23, 42, 0.22 );
}

.cf-os__search-results[hidden] {
	display: none;
}

.cf-os__search-item {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 1px;
	width: 100%;
	padding: 9px 12px;
	border: 0;
	border-radius: 8px;
	background: transparent;
	text-align: left;
	cursor: pointer;
}

.cf-os__search-item:hover,
.cf-os__search-item.is-active {
	background: var( --cf-os-bg );
}

.cf-os__search-item-title {
	font-size: 14px;
	font-weight: 600;
	color: var( --cf-os-text );
}

.cf-os__search-item-sub {
	font-size: 12px;
	color: var( --cf-os-text-muted );
}

.cf-os__search-empty {
	padding: 16px 12px;
	text-align: center;
	font-size: 13px;
	color: var( --cf-os-text-muted );
}

/* On phones: give the search room — hide the brand title + the kbd hint. */
@media ( max-width: 600px ) {
	.cf-os__title {
		display: none;
	}

	.cf-os__kbd {
		display: none;
	}

	.cf-os__search-input {
		/* Badge is hidden here, so reclaim the right padding — but keep the
		 * left clearance locked so the magnifier never overlaps the text. */
		padding-right: 12px;
		padding-left: 46px;
	}
}

/* Account avatar + dropdown. */

.cf-os__user {
	position: relative;
	flex: 0 0 auto;
}

.cf-os__avatar {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 36px;
	height: 36px;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: var( --cf-os-accent );
	color: var( --cf-os-accent-ink );
	font-size: 14px;
	font-weight: 700;
	cursor: pointer;
	transition: filter 0.15s ease;
}

.cf-os__avatar:hover,
.cf-os__avatar:focus-visible {
	filter: brightness( 1.08 );
	outline: none;
}

.cf-os__menu {
	position: absolute;
	top: calc( 100% + 8px );
	right: 0;
	min-width: 180px;
	padding: 8px;
	background: var( --cf-os-surface );
	border: 1px solid var( --cf-os-border );
	border-radius: 14px;
	box-shadow: var( --cf-os-shadow );
	color: var( --cf-os-text );
}

.cf-os__menu[hidden] {
	display: none;
}

.cf-os__menu-name {
	display: block;
	padding: 6px 10px;
	font-size: 13px;
	font-weight: 600;
	color: var( --cf-os-text-muted );
	border-bottom: 1px solid var( --cf-os-border );
	margin-bottom: 6px;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

.cf-os__logout {
	display: block;
	padding: 9px 10px;
	border-radius: 10px;
	font-size: 14px;
	font-weight: 600;
	color: var( --cf-os-text );
	text-decoration: none;
}

.cf-os__logout:hover,
.cf-os__logout:focus-visible {
	background: var( --cf-os-bg );
	color: var( --cf-os-accent );
	outline: none;
}

/* -------------------------------------------------------------------------
 * View area.
 * ---------------------------------------------------------------------- */

.cf-os__view {
	display: block;
	padding: 22px 16px 32px;
}

/* Springboard grid. */

.cf-os__springboard {
	display: grid;
	grid-template-columns: repeat( 2, 1fr );
	gap: 22px 14px;
	max-width: 760px;
	margin: 0 auto;
}

.cf-os__app {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 10px;
	padding: 4px;
	border: 0;
	background: transparent;
	cursor: pointer;
	-webkit-tap-highlight-color: transparent;
}

.cf-os__icon {
	position: relative;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 66px;
	height: 66px;
	border-radius: 18px;
	/* v2.16.0 — glyphs render with currentColor; keep them white on the accent bg. */
	color: #fff;
	background: var( --cf-app, var( --cf-os-accent ) );
	box-shadow: 0 8px 18px rgba( 15, 23, 42, 0.18 );
	transition: transform 0.15s ease, box-shadow 0.15s ease;
}

/* v2.19.8 — larger glyphs (~40px) so the icon fills the rounded square; one rule
   for both inline-SVG launcher tiles and Dashicon settings tiles. */
.cf-os__icon svg {
	width: 40px;
	height: 40px;
}

.cf-os__icon .dashicons {
	font-size: 40px;
	width: 40px;
	height: 40px;
	line-height: 1;
}

/* v2.41.0 — "Option A" settings cog badge: a white disc carrying the tile-colored
   cog, marking each task-domain tile as a settings surface (--cf-app inherits the
   tile's jewel color from .cf-os__icon). */
.cf-set__cog {
	position: absolute;
	right: -3px;
	bottom: -3px;
	width: 24px;
	height: 24px;
	border-radius: 50%;
	background: #fff;
	display: flex;
	align-items: center;
	justify-content: center;
	box-shadow: 0 1px 4px rgba( 15, 23, 42, 0.25 );
}

.cf-set__cog svg {
	width: 15px;
	height: 15px;
	color: var( --cf-app, #475569 );
}

/* v2.43.0 — read-only L0 reference card (e.g. platform Stripe status in the
   Payments domain). Visually "managed elsewhere": dashed, muted, non-editable. */
.cf-set__l0 {
	background: rgba( 148, 163, 184, 0.08 );
	border: 1px dashed rgba( 148, 163, 184, 0.45 );
	border-radius: 12px;
	padding: 14px 16px;
	margin-bottom: 22px;
}

.cf-set__l0list {
	list-style: none;
	margin: 10px 0 0;
	padding: 0;
}

.cf-set__l0list li {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 12px;
	padding: 7px 0;
	border-bottom: 1px solid rgba( 148, 163, 184, 0.18 );
	font-size: 14px;
}

.cf-set__l0list li:last-child {
	border-bottom: 0;
}

.cf-set__l0pill {
	font-size: 12px;
	font-weight: 500;
	padding: 2px 11px;
	border-radius: 999px;
	white-space: nowrap;
}

.cf-set__l0pill--on { background: rgba( 16, 110, 86, 0.16 ); color: #0a5641; }
.cf-set__l0pill--off { background: rgba( 153, 45, 45, 0.13 ); color: #8a2727; }
.cf-set__l0pill--test { background: rgba( 153, 104, 0, 0.16 ); color: #7a5200; }
.cf-set__l0pill--live { background: rgba( 153, 45, 45, 0.16 ); color: #8a2727; }

/* v2.45.0 — Business Categories list (CRM & Directory domain). */
.cf-cat-table {
	width: 100%;
	max-width: 640px;
	border-collapse: collapse;
	margin: 14px 0 6px;
	font-size: 14px;
}

.cf-cat-table th,
.cf-cat-table td {
	text-align: left;
	padding: 8px 10px;
	border-bottom: 1px solid rgba( 148, 163, 184, 0.18 );
}

.cf-cat-table th {
	font-weight: 500;
	opacity: 0.7;
}

.cf-os__app:hover .cf-os__icon,
.cf-os__app:focus-visible .cf-os__icon {
	transform: translateY( -3px );
	box-shadow: 0 12px 24px rgba( 15, 23, 42, 0.24 );
}

.cf-os__app:active .cf-os__icon {
	transform: scale( 0.94 );
}

.cf-os__app:focus-visible {
	outline: none;
}

.cf-os__app:focus-visible .cf-os__icon {
	outline: 3px solid var( --cf-os-accent );
	outline-offset: 3px;
}

.cf-os__badge {
	position: absolute;
	top: -4px;
	right: -4px;
	width: 16px;
	height: 16px;
	border-radius: 50%;
	background: #ef4444;
	border: 2px solid var( --cf-os-bg );
	box-shadow: 0 0 0 1px rgba( 239, 68, 68, 0.35 );
}

.cf-os__label {
	/* v2.19.7 — bumped 13px → 16px for legibility (per design review). */
	font-size: 16px;
	font-weight: 600;
	line-height: 1.3;
	text-align: center;
	color: var( --cf-os-text );
	max-width: 9rem;
}

/* -------------------------------------------------------------------------
 * Canonical view header (v2.19.8) — every loaded view opens with this exact
 * band: a circular back arrow on the left, then the page title. The arrow steps
 * back one level via the SPA history stack (wired in cf_app_router.js).
 * ---------------------------------------------------------------------- */
.cf-os__view-header {
	display: flex;
	align-items: center;
	gap: 14px;
	margin: 0 0 22px;
	padding-bottom: 16px;
	border-bottom: 1px solid var( --cf-os-border );
}

.cf-os__back {
	flex: 0 0 auto;
	width: 40px;
	height: 40px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	border-radius: 50%;
	border: 1px solid var( --cf-os-border );
	background: var( --cf-os-surface );
	color: var( --cf-os-text );
	cursor: pointer;
	transition: background 0.15s ease, transform 0.15s ease, border-color 0.15s ease;
}

.cf-os__back:hover {
	background: var( --cf-os-bg );
	border-color: var( --cf-os-accent );
	transform: translateX( -2px );
}

.cf-os__back:focus-visible {
	outline: 3px solid var( --cf-os-accent );
	outline-offset: 2px;
}

.cf-os__view-title {
	margin: 0;
	font-size: 24px;
	font-weight: 700;
	line-height: 1.2;
	color: var( --cf-os-text );
}

/* -------------------------------------------------------------------------
 * App Canvas (loaded views) — Springboard hides, this reveals.
 * ---------------------------------------------------------------------- */

.cf-os__springboard[hidden] {
	display: none;
}

/* =========================================================================
 * Morning Briefing — calm "what needs my attention today" board (v1.64.0).
 * ====================================================================== */

.cf-os__briefing-board {
	max-width: 760px;
	margin: 30px auto 4px;
	padding: 0 4px;
}

.cf-os__briefing-board[hidden] {
	display: none;
}

.cf-os__greeting {
	margin: 0 0 16px;
	font-size: 20px;
	font-weight: 700;
	letter-spacing: -0.01em;
	color: var( --cf-os-text );
}

.cf-os__metrics {
	display: grid;
	grid-template-columns: 1fr;
	gap: 14px;
}

@media ( min-width: 720px ) {
	.cf-os__metrics {
		grid-template-columns: repeat( 3, 1fr );
	}
}

.cf-os__metric {
	display: flex;
	flex-direction: column;
	gap: 10px;
	padding: 18px;
	background: var( --cf-os-surface );
	border: 1px solid var( --cf-os-border );
	border-radius: 14px;
}

/* v2.21.0 — each briefing card is an action: it opens where you act on it. */
.cf-os__metric.is-actionable {
	cursor: pointer;
	transition: transform 0.15s ease, box-shadow 0.15s ease, border-color 0.15s ease;
}

.cf-os__metric.is-actionable:hover,
.cf-os__metric.is-actionable:focus-visible {
	transform: translateY( -2px );
	border-color: var( --cf-os-accent );
	box-shadow: 0 10px 24px rgba( 15, 23, 42, 0.12 );
	outline: none;
}

.cf-os__metric-title {
	font-size: 13px;
	font-weight: 600;
	color: var( --cf-os-text-muted );
}

.cf-os__metric-value {
	font-size: 34px;
	font-weight: 800;
	line-height: 1;
	color: var( --cf-os-text );
	font-variant-numeric: tabular-nums;
}

/* Surface attention only when there's something to act on. */
.cf-os__metric.is-warn .cf-os__metric-value {
	color: #b45309;
}

.cf-os__metric.is-alert .cf-os__metric-value {
	color: #dc2626;
}

.cf-os__metric.is-info .cf-os__metric-value {
	color: var( --cf-os-accent-cyan );
}

body[data-theme="dark"] .cf-os__metric.is-warn .cf-os__metric-value {
	color: #fbbf24;
}

body[data-theme="dark"] .cf-os__metric.is-alert .cf-os__metric-value {
	color: #f87171;
}

.cf-os__canvas[hidden] {
	display: none;
}

.cf-os__canvas {
	max-width: 920px;
	margin: 0 auto;
}

/* Loading + error states. */

.cf-os__loadview {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 14px;
	min-height: 36vh;
	color: var( --cf-os-text-muted );
}

.cf-os__loadtext {
	margin: 0;
	font-size: 15px;
	font-weight: 600;
}

.cf-os__spinner {
	display: inline-block;
	width: 30px;
	height: 30px;
	border: 3px solid var( --cf-os-border );
	border-top-color: var( --cf-os-accent );
	border-radius: 50%;
	animation: cf-os-spin 0.8s linear infinite;
}

@keyframes cf-os-spin {
	to {
		transform: rotate( 360deg );
	}
}

.cf-os__retry {
	margin-top: 14px;
	padding: 9px 22px;
	border: 0;
	border-radius: 10px;
	background: var( --cf-os-accent );
	color: var( --cf-os-accent-ink );
	font-weight: 700;
	cursor: pointer;
}

/* Panel shell shared by every loaded view. */

.cf-os__panel {
	background: var( --cf-os-surface );
	border: 1px solid var( --cf-os-border );
	border-radius: 16px;
	padding: 18px 18px 8px;
	box-shadow: 0 1px 2px rgba( 15, 23, 42, 0.04 );
}

.cf-os__panel-intro {
	margin: 0 0 14px;
	font-size: 14px;
	color: var( --cf-os-text-muted );
}

.cf-os__empty {
	margin: 8px 0 16px;
	padding: 24px;
	text-align: center;
	color: var( --cf-os-text-muted );
	font-size: 14px;
}

.cf-os__subhead {
	margin: 18px 0 10px;
	font-size: 14px;
	font-weight: 700;
	color: var( --cf-os-text );
}

/* Data tables. */

.cf-os__table {
	width: 100%;
	border-collapse: collapse;
	font-size: 14px;
}

.cf-os__table th,
.cf-os__table td {
	padding: 10px 12px;
	text-align: left;
	border-bottom: 1px solid var( --cf-os-border );
	white-space: nowrap;
}

.cf-os__table th {
	font-size: 12px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.04em;
	color: var( --cf-os-text-muted );
}

.cf-os__table td:first-child {
	white-space: normal;
	font-weight: 600;
	color: var( --cf-os-text );
}

.cf-os__table tr:last-child td {
	border-bottom: 0;
}

.cf-os__num {
	text-align: right;
	font-variant-numeric: tabular-nums;
}

/* Status pills. */

.cf-os__pill {
	display: inline-block;
	padding: 2px 10px;
	border-radius: 999px;
	font-size: 12px;
	font-weight: 700;
	background: #e2e8f0;
	color: #334155;
}

.cf-os__pill--publish,
.cf-os__pill--paid,
.cf-os__pill--active {
	background: #dcfce7;
	color: #166534;
}

.cf-os__pill--pending,
.cf-os__pill--draft,
.cf-os__pill--sent,
.cf-os__pill--open,
.cf-os__pill--unpaid {
	background: #fef3c7;
	color: #92400e;
}

.cf-os__pill--overdue,
.cf-os__pill--past_due,
.cf-os__pill--failed {
	background: #fee2e2;
	color: #991b1b;
}

/* Stat tiles (Reports). */

.cf-os__stats {
	display: grid;
	grid-template-columns: repeat( 2, 1fr );
	gap: 14px;
}

.cf-os__stat {
	display: flex;
	flex-direction: column;
	gap: 4px;
	padding: 16px;
	border: 1px solid var( --cf-os-border );
	border-radius: 14px;
	background: var( --cf-os-bg );
}

.cf-os__stat-num {
	font-size: 26px;
	font-weight: 800;
	line-height: 1;
	color: var( --cf-os-text );
}

.cf-os__stat-label {
	font-size: 13px;
	font-weight: 600;
	color: var( --cf-os-text-muted );
}

@media ( min-width: 620px ) {
	.cf-os__stats {
		grid-template-columns: repeat( 4, 1fr );
	}
}

/* =========================================================================
 * Notifications Hub — grouped activity feed (v1.61.0).
 * ====================================================================== */

.cf-notif {
	max-width: 720px;
	margin: 0 auto;
}

.cf-notif__head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	margin-bottom: 8px;
	padding-bottom: 12px;
	border-bottom: 1px solid var( --cf-os-border );
}

.cf-notif__count {
	font-size: 14px;
	font-weight: 700;
	color: var( --cf-os-text-muted );
}

.cf-notif__markall {
	flex: 0 0 auto;
	padding: 8px 14px;
	border: 1px solid var( --cf-os-border );
	border-radius: 10px;
	background: var( --cf-os-surface );
	font-size: 13px;
	font-weight: 700;
	color: var( --cf-os-accent );
	cursor: pointer;
	transition: background 0.15s ease;
}

.cf-notif__markall:hover {
	background: var( --cf-os-bg );
}

.cf-notif__markall[disabled] {
	opacity: 0.6;
	cursor: default;
}

.cf-notif__group {
	margin-top: 14px;
}

.cf-notif__grouplabel {
	display: flex;
	align-items: center;
	gap: 8px;
	margin: 0 0 6px;
	font-size: 12px;
	font-weight: 800;
	text-transform: uppercase;
	letter-spacing: 0.05em;
	color: var( --cf-os-text-muted );
}

.cf-notif__groupcount {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 20px;
	height: 18px;
	padding: 0 6px;
	border-radius: 999px;
	background: var( --cf-os-bg );
	border: 1px solid var( --cf-os-border );
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 0;
	color: var( --cf-os-text-muted );
}

/* Mentions get the brand-cyan accent; System/Approvals the magenta. */
.cf-notif__group--mentions .cf-notif__grouplabel {
	color: var( --cf-os-accent-cyan );
}

.cf-notif__group--system .cf-notif__grouplabel {
	color: var( --cf-os-accent-magenta );
}

.cf-notif__list {
	list-style: none;
	margin: 0;
	/* v2.21.0 — each list is a shadow card, matching the rest of the OS. */
	padding: 6px;
	background: var( --cf-os-surface );
	border: 1px solid var( --cf-os-border );
	border-radius: 14px;
	box-shadow: 0 6px 20px rgba( 15, 23, 42, 0.06 );
}

.cf-notif__item.is-collapsed {
	display: none;
}

.cf-notif__viewall {
	display: block;
	width: 100%;
	margin: 8px 0 0;
	padding: 9px;
	background: transparent;
	border: 1px solid var( --cf-os-border );
	border-radius: 10px;
	color: var( --cf-os-accent );
	font-weight: 700;
	font-size: 13px;
	cursor: pointer;
	transition: background 0.15s ease, border-color 0.15s ease;
}

.cf-notif__viewall:hover,
.cf-notif__viewall:focus-visible {
	background: var( --cf-os-bg );
	border-color: var( --cf-os-accent );
	outline: none;
}

.cf-notif__item {
	display: flex;
	align-items: center;
	gap: 12px;
	padding: 12px;
	border-radius: 12px;
	transition: background 0.15s ease;
}

.cf-notif__item + .cf-notif__item {
	border-top: 1px solid var( --cf-os-border );
	border-radius: 0;
}

/* Actionable (routable) notifications (v1.83.0). */
.cf-notif__item--link {
	cursor: pointer;
}

.cf-notif__item--link:hover {
	background: var( --cf-os-bg );
}

.cf-notif__item--link:focus-visible {
	outline: 2px solid var( --cf-os-accent );
	outline-offset: -2px;
}

.cf-notif__chevron {
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	color: var( --cf-os-text-muted );
	opacity: 0.6;
	transition: transform 0.15s ease, opacity 0.15s ease;
}

.cf-notif__item--link:hover .cf-notif__chevron {
	opacity: 1;
	transform: translateX( 2px );
	color: var( --cf-os-accent );
}

.cf-notif__item.is-unread {
	background: #eff6ff;
	border-top-color: transparent;
	border-radius: 12px;
}

.cf-notif__item.is-unread + .cf-notif__item.is-unread {
	margin-top: 6px;
}

.cf-notif__icon {
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 38px;
	height: 38px;
	border-radius: 11px;
	background: var( --cf-app, var( --cf-os-accent ) );
	box-shadow: 0 4px 10px rgba( 15, 23, 42, 0.12 );
}

.cf-notif__body {
	flex: 1 1 auto;
	min-width: 0;
	display: flex;
	flex-direction: column;
	gap: 2px;
}

.cf-notif__msg {
	font-size: 14px;
	line-height: 1.4;
	color: var( --cf-os-text );
}

.cf-notif__msg strong {
	font-weight: 700;
}

.cf-notif__time {
	font-size: 12px;
	color: var( --cf-os-text-muted );
}

.cf-notif__unread {
	flex: 0 0 auto;
	width: 9px;
	height: 9px;
	border-radius: 50%;
	background: var( --cf-os-accent );
	visibility: hidden;
}

.cf-notif__item.is-unread .cf-notif__unread {
	visibility: visible;
}

/* Definition list + chips (Settings). */

.cf-os__defs {
	display: grid;
	grid-template-columns: minmax( 120px, max-content ) 1fr;
	gap: 8px 18px;
	margin: 0 0 8px;
	font-size: 14px;
}

.cf-os__defs dt {
	font-weight: 700;
	color: var( --cf-os-text-muted );
}

.cf-os__defs dd {
	margin: 0;
	color: var( --cf-os-text );
}

.cf-os__chips {
	list-style: none;
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	margin: 0 0 16px;
	padding: 0;
}

.cf-os__chip {
	padding: 5px 12px;
	border-radius: 999px;
	font-size: 13px;
	font-weight: 600;
}

.cf-os__chip--on {
	background: #dcfce7;
	color: #166534;
}

.cf-os__chip--off {
	background: #e2e8f0;
	color: #64748b;
}

/* -------------------------------------------------------------------------
 * Guest (logged-out) state.
 * ---------------------------------------------------------------------- */

.cf-os--guest {
	display: flex;
	align-items: center;
	justify-content: center;
	min-height: 60vh;
	padding: 24px;
}

.cf-os__guestcard {
	text-align: center;
	font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
}

.cf-os__guestcard h2 {
	margin: 0 0 8px;
	font-size: 22px;
	font-weight: 700;
	color: #0f172a;
}

.cf-os__guestcard p {
	margin: 0 0 18px;
	color: #64748b;
}

.cf-os__guestbtn {
	display: inline-block;
	padding: 11px 26px;
	border-radius: 12px;
	background: var( --cf-brand-primary, #2563eb );
	color: var( --cf-brand-on-primary, #ffffff );
	font-weight: 700;
	text-decoration: none;
}

/* -------------------------------------------------------------------------
 * Responsive: more columns on wider screens.
 * ---------------------------------------------------------------------- */

@media ( min-width: 560px ) {
	.cf-os__springboard {
		grid-template-columns: repeat( 3, 1fr );
		gap: 28px 18px;
	}
}

@media ( min-width: 820px ) {
	.cf-os__springboard {
		grid-template-columns: repeat( 4, 1fr );
	}

	.cf-os__icon {
		width: 74px;
		height: 74px;
		border-radius: 20px;
	}
}

@media ( prefers-reduced-motion: reduce ) {
	.cf-os__icon,
	.cf-os__home,
	.cf-os__avatar {
		transition: none;
	}

	.cf-os__spinner {
		animation: none;
	}
}

/* =========================================================================
 * CRM Hub — "Cards + Velocity vs. Depth" (v1.59.0).
 * ====================================================================== */

.cf-crm {
	width: 100%;
}

/* Masonry card grid — 1 column on phones, 2 on the desktop. */
.cf-crm__feed {
	display: grid;
	grid-template-columns: 1fr;
	gap: 14px;
}

@media ( min-width: 720px ) {
	.cf-crm__feed {
		grid-template-columns: repeat( 2, 1fr );
	}
}

.cf-hub-card {
	display: flex;
	align-items: center;
	gap: 14px;
	width: 100%;
	padding: 14px 16px;
	text-align: left;
	background: var( --cf-os-surface );
	color: var( --cf-os-text );
	border: 1px solid var( --cf-os-border );
	border-radius: 12px;
	box-shadow: 0 1px 3px rgba( 15, 23, 42, 0.06 ), 0 6px 16px rgba( 15, 23, 42, 0.05 );
	cursor: pointer;
	transition: transform 0.15s ease, box-shadow 0.15s ease, border-color 0.15s ease;
}

.cf-hub-card:hover,
.cf-hub-card:focus-visible {
	transform: translateY( -2px );
	box-shadow: 0 6px 14px rgba( 15, 23, 42, 0.10 ), 0 14px 30px rgba( 15, 23, 42, 0.10 );
	outline: none;
}

.cf-hub-card.is-active {
	border-color: var( --cf-os-accent );
	box-shadow: 0 0 0 2px var( --cf-os-accent ), 0 10px 24px rgba( 37, 99, 235, 0.18 );
}

.cf-hub-card__avatar {
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 48px;
	height: 48px;
	border-radius: 12px;
	background: var( --cf-app, var( --cf-os-accent ) );
	color: #fff;
	font-size: 18px;
	font-weight: 800;
	overflow: hidden;
}

.cf-hub-card__avatar img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.cf-hub-card__body {
	flex: 1 1 auto;
	min-width: 0;
	display: flex;
	flex-direction: column;
	gap: 2px;
}

.cf-hub-card__name {
	font-size: 16px;
	font-weight: 700;
	color: var( --cf-os-text );
	line-height: 1.25;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

.cf-hub-card__contact {
	font-size: 13px;
	color: var( --cf-os-text-muted );
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

.cf-hub-card__tier {
	align-self: flex-start;
	margin-top: 4px;
	padding: 1px 9px;
	border-radius: 999px;
	font-size: 11px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.03em;
	background: #eef2ff;
	color: #4338ca;
}

.cf-hub-card .cf-os__pill {
	flex: 0 0 auto;
	align-self: flex-start;
}

/* Mobile (Task 1): stack the card contents vertically so EVERY field —
 * name, contact, tier, status — is fully visible (no truncation, no overlap). */
@media ( max-width: 768px ) {
	.cf-hub-card {
		flex-direction: column;
		align-items: flex-start;
		gap: 6px;
	}

	.cf-hub-card__avatar {
		margin-bottom: 4px;
	}

	.cf-hub-card__body {
		width: 100%;
		gap: 0;
	}

	.cf-hub-card__name,
	.cf-hub-card__contact {
		white-space: normal;
		overflow: visible;
		text-overflow: clip;
		margin-bottom: 4px;
	}

	.cf-hub-card__tier {
		margin-top: 0;
		margin-bottom: 4px;
	}

	.cf-hub-card .cf-os__pill {
		align-self: flex-start;
	}
}

/* ---- Quick actions (Call / Email) ---- */

.cf-crm__actions {
	display: flex;
	gap: 10px;
	margin-bottom: 16px;
}

.cf-crm__btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 7px;
	padding: 10px 14px;
	border: 0;
	border-radius: 10px;
	font-size: 14px;
	font-weight: 700;
	cursor: pointer;
	text-decoration: none;
	transition: filter 0.15s ease, background 0.15s ease;
}

.cf-crm__btn:focus-visible {
	outline: 2px solid var( --cf-os-accent );
	outline-offset: 2px;
}

.cf-crm__btn--call,
.cf-crm__btn--email {
	flex: 1 1 0;
	color: #fff;
}

.cf-crm__btn--call {
	background: #16a34a;
}

.cf-crm__btn--email {
	background: #2563eb;
}

.cf-crm__btn--call:hover,
.cf-crm__btn--email:hover {
	filter: brightness( 0.94 );
}

/* Leadership Role tagging (v1.78.0). */
.cf-crm__rolefield {
	display: flex;
	flex-direction: column;
	gap: 8px;
	margin-bottom: 16px;
}

.cf-crm__role-label {
	font-size: 13px;
	font-weight: 700;
	color: var( --cf-os-text-muted );
}

.cf-crm__role-select {
	padding: 10px 12px;
	border: 1px solid var( --cf-os-border );
	border-radius: 10px;
	background: var( --cf-os-surface );
	color: var( --cf-os-text );
	font: inherit;
	font-size: 14px;
	cursor: pointer;
}

.cf-crm__role-select:focus {
	outline: none;
	border-color: var( --cf-os-accent );
	box-shadow: 0 0 0 3px rgba( 37, 99, 235, 0.15 );
}

.cf-crm__role-select[disabled] {
	opacity: 0.6;
	cursor: default;
}

.cf-crm__note {
	display: flex;
	flex-direction: column;
	gap: 8px;
	margin-bottom: 14px;
}

.cf-crm__note-label {
	font-size: 13px;
	font-weight: 700;
	color: var( --cf-os-text-muted );
}

.cf-crm__note-text {
	width: 100%;
	padding: 10px 12px;
	border: 1px solid var( --cf-os-border );
	border-radius: 10px;
	font: inherit;
	font-size: 14px;
	resize: vertical;
	box-sizing: border-box;
	background: var( --cf-os-surface );
	color: var( --cf-os-text );
}

.cf-crm__note-text:focus {
	outline: none;
	border-color: var( --cf-os-accent );
	box-shadow: 0 0 0 3px rgba( 37, 99, 235, 0.15 );
}

.cf-crm__btn--save {
	align-self: flex-end;
	background: var( --cf-os-accent );
	color: #fff;
}

.cf-crm__btn--save:hover {
	filter: brightness( 0.94 );
}

.cf-crm__btn--save[disabled] {
	opacity: 0.6;
	cursor: default;
}

.cf-crm__btn--full {
	width: 100%;
	background: var( --cf-os-bg );
	color: var( --cf-os-text );
	border: 1px solid var( --cf-os-border );
}

.cf-crm__btn--full:hover {
	background: #e9eef5;
}

/* ---- Deep profile view ---- */

.cf-crm__hero {
	display: flex;
	align-items: center;
	gap: 16px;
	padding: 22px;
	border-radius: 16px 16px 0 0;
	/* v2.21.0 — a stronger dark scrim guarantees ADA-compliant (>=4.5:1) contrast for
	   the white hero text on ANY per-business accent, including light ones. */
	background:
		linear-gradient( 135deg, rgba( 0, 0, 0, 0.42 ), rgba( 0, 0, 0, 0.58 ) ),
		var( --cf-app, var( --cf-os-accent ) );
	color: #fff;
}

.cf-crm__hero-avatar {
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 68px;
	height: 68px;
	border-radius: 16px;
	background: rgba( 255, 255, 255, 0.22 );
	font-size: 26px;
	font-weight: 800;
	overflow: hidden;
}

.cf-crm__hero-avatar img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.cf-crm__hero-main {
	flex: 1 1 auto;
	min-width: 0;
}

.cf-crm__hero-name {
	margin: 0;
	font-size: 24px;
	font-weight: 800;
	line-height: 1.15;
	/* v2.21.0 — always white + a soft shadow so the name stays legible (ADA) on the
	   accent hero regardless of the tenant's brand color. */
	color: #fff;
	text-shadow: 0 1px 2px rgba( 0, 0, 0, 0.45 );
}

.cf-crm__hero-meta {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 8px;
	margin-top: 8px;
}

.cf-crm__hero-tier {
	padding: 2px 10px;
	border-radius: 999px;
	font-size: 12px;
	font-weight: 700;
	background: rgba( 255, 255, 255, 0.22 );
	color: #fff;
}

.cf-crm__hero-link {
	flex: 0 0 auto;
	padding: 9px 16px;
	border-radius: 10px;
	background: rgba( 255, 255, 255, 0.18 );
	color: #fff;
	font-weight: 700;
	font-size: 13px;
	text-decoration: none;
}

.cf-crm__hero-link:hover {
	background: rgba( 255, 255, 255, 0.30 );
	color: #fff;
}

.cf-crm__back {
	display: inline-block;
	margin: 16px 0;
	padding: 8px 14px;
	border: 1px solid var( --cf-os-border );
	border-radius: 10px;
	background: var( --cf-os-surface );
	font-size: 14px;
	font-weight: 700;
	color: var( --cf-os-text );
	cursor: pointer;
}

.cf-crm__back:hover {
	background: var( --cf-os-bg );
	color: var( --cf-os-accent );
}

.cf-crm__deepgrid {
	display: grid;
	grid-template-columns: 1fr;
	gap: 12px;
}

@media ( min-width: 620px ) {
	.cf-crm__deepgrid {
		grid-template-columns: repeat( 2, 1fr );
	}
}

.cf-crm__field {
	display: flex;
	flex-direction: column;
	gap: 3px;
	padding: 14px 16px;
	background: var( --cf-os-surface );
	border: 1px solid var( --cf-os-border );
	border-radius: 12px;
}

.cf-crm__field-label {
	font-size: 11px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.04em;
	color: var( --cf-os-text-muted );
}

.cf-crm__field-val {
	font-size: 15px;
	color: var( --cf-os-text );
	word-break: break-word;
}

.cf-crm__field-val a {
	color: var( --cf-os-accent );
	text-decoration: none;
}

.cf-crm__field-val a:hover {
	text-decoration: underline;
}

/* ---- Deep-Dive Profile (crm_profile, v1.65.0) ---- */

.cf-crm-profile {
	max-width: 980px;
	margin: 0 auto;
}

/* Standalone hero (not glued to a grid beneath it). */
.cf-crm-profile .cf-crm__hero {
	border-radius: 16px;
	margin-top: 12px;
}

.cf-crm-profile__grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: 18px;
	margin-top: 18px;
	align-items: start;
}

@media ( min-width: 860px ) {
	.cf-crm-profile__grid {
		grid-template-columns: 1.35fr 1fr;
	}
}

.cf-crm-profile__details {
	display: flex;
	flex-direction: column;
	gap: 16px;
}

.cf-crm-profile__history {
	background: var( --cf-os-surface );
	border: 1px solid var( --cf-os-border );
	border-radius: 16px;
	padding: 16px 18px;
}

.cf-crm-profile__histtitle {
	margin: 0 0 6px;
	font-size: 14px;
	font-weight: 700;
	color: var( --cf-os-text );
}

/* ---- Toast ---- */

.cf-os-toast {
	position: fixed;
	left: 50%;
	bottom: 28px;
	transform: translate( -50%, 16px );
	z-index: 9999;
	max-width: 90vw;
	padding: 12px 20px;
	border-radius: 12px;
	background: #0f172a;
	color: #fff;
	font-size: 14px;
	font-weight: 700;
	box-shadow: 0 12px 30px rgba( 15, 23, 42, 0.35 );
	opacity: 0;
	pointer-events: none;
	transition: opacity 0.2s ease, transform 0.2s ease;
}

.cf-os-toast.is-visible {
	opacity: 1;
	transform: translate( -50%, 0 );
}

@media ( prefers-reduced-motion: reduce ) {
	.cf-hub-card,
	.cf-crm__btn,
	.cf-os-toast {
		transition: none;
	}
}

/* =========================================================================
 * Agency Routing form (System Settings) — v1.60.0.
 * ====================================================================== */

.cf-os__form {
	margin: 0;
}

.cf-os__flabel {
	display: block;
	font-size: 14px;
	font-weight: 700;
	color: var( --cf-os-text );
}

.cf-os__fhelp {
	margin: 4px 0 10px;
	font-size: 13px;
	color: var( --cf-os-text-muted );
}

.cf-os__frow {
	display: flex;
	gap: 10px;
	flex-wrap: wrap;
}

/* v2.29.0 — breathing room above a settings panel's Save row so the button
   isn't glued to the last field (e.g. the Routing slug inputs). */
.cf-set__panel .cf-os__frow {
	margin-top: 20px;
}

.cf-os__input {
	flex: 1 1 220px;
	min-width: 0;
	padding: 10px 12px;
	border: 1px solid var( --cf-os-border );
	border-radius: 10px;
	font: inherit;
	font-size: 14px;
	box-sizing: border-box;
	background: var( --cf-os-surface );
	color: var( --cf-os-text );
}

.cf-os__input:focus {
	outline: none;
	border-color: var( --cf-os-accent );
	box-shadow: 0 0 0 3px rgba( 37, 99, 235, 0.15 );
}

.cf-os__btn {
	flex: 0 0 auto;
	padding: 10px 20px;
	border: 0;
	border-radius: 10px;
	background: var( --cf-os-accent );
	color: var( --cf-os-accent-ink );
	font-size: 14px;
	font-weight: 700;
	cursor: pointer;
	transition: filter 0.15s ease;
}

.cf-os__btn:hover {
	filter: brightness( 0.94 );
}

.cf-os__btn[disabled] {
	opacity: 0.6;
	cursor: default;
}

/* Quick Report Configuration checklist (v1.76.0). */
.cf-os__checklist {
	list-style: none;
	margin: 0 0 14px;
	padding: 0;
	display: grid;
	gap: 10px;
}

.cf-os__check {
	display: flex;
	align-items: flex-start;
	gap: 12px;
	padding: 14px;
	border: 1px solid var( --cf-os-border );
	border-radius: 12px;
	background: var( --cf-os-surface );
	cursor: pointer;
	transition: border-color 0.15s ease;
}

.cf-os__check:hover {
	border-color: var( --cf-os-accent );
}

.cf-os__check input {
	margin-top: 2px;
	flex: 0 0 auto;
	width: 17px;
	height: 17px;
	accent-color: var( --cf-os-accent );
	cursor: pointer;
}

.cf-os__check-body {
	display: flex;
	flex-direction: column;
	gap: 3px;
	min-width: 0;
}

.cf-os__check-title {
	font-size: 14px;
	font-weight: 700;
	color: var( --cf-os-text );
}

.cf-os__check-desc {
	font-size: 12.5px;
	line-height: 1.45;
	color: var( --cf-os-text-muted );
}

/* =========================================================================
 * Feature Lab — painted-door cards (v1.60.0).
 * ====================================================================== */

.cf-flab__intro {
	margin: 0 auto 20px;
	max-width: 640px;
	text-align: center;
	font-size: 15px;
	color: var( --cf-os-text-muted );
}

.cf-flab__grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: 18px;
	max-width: 1040px;
	margin: 0 auto;
}

@media ( min-width: 640px ) {
	.cf-flab__grid {
		grid-template-columns: repeat( 2, 1fr );
	}
}

@media ( min-width: 960px ) {
	.cf-flab__grid {
		grid-template-columns: repeat( 3, 1fr );
	}
}

.cf-flab__card {
	position: relative;
	display: flex;
	flex-direction: column;
	padding: 22px 20px 20px;
	background: var( --cf-os-surface );
	border: 1px solid var( --cf-os-border );
	border-radius: 16px;
	border-top: 4px solid var( --cf-app, var( --cf-os-accent ) );
	box-shadow: 0 1px 3px rgba( 15, 23, 42, 0.06 ), 0 10px 26px rgba( 15, 23, 42, 0.06 );
	transition: transform 0.15s ease, box-shadow 0.15s ease;
}

.cf-flab__card:hover {
	transform: translateY( -3px );
	box-shadow: 0 12px 28px rgba( 15, 23, 42, 0.12 );
}

.cf-flab__badge {
	align-self: flex-start;
	margin-bottom: 12px;
	padding: 3px 10px;
	border-radius: 999px;
	font-size: 11px;
	font-weight: 800;
	text-transform: uppercase;
	letter-spacing: 0.05em;
	color: var( --cf-app, var( --cf-os-accent ) );
	background: color-mix( in srgb, var( --cf-app, #2563eb ) 12%, #ffffff );
}

/* Fallback for browsers without color-mix. */
@supports not ( background: color-mix( in srgb, red 10%, white ) ) {
	.cf-flab__badge {
		background: #eef2ff;
	}
}

.cf-flab__name {
	margin: 0 0 8px;
	font-size: 18px;
	font-weight: 800;
	color: var( --cf-os-text );
	line-height: 1.25;
}

.cf-flab__desc {
	margin: 0 0 20px;
	font-size: 14px;
	line-height: 1.5;
	color: var( --cf-os-text-muted );
	flex: 1 1 auto;
}

/* L0-only architecture note + tags (rendered for Super Admins / Developers). */
.cf-flab__arch {
	margin: 0 0 12px;
	padding: 10px 12px;
	border-radius: 10px;
	background: rgba( 124, 58, 237, 0.08 );
	border: 1px dashed var( --cf-os-border );
	font-size: 12.5px;
	line-height: 1.5;
	color: var( --cf-os-text );
}

.cf-flab__arch-label {
	display: block;
	margin-bottom: 4px;
	font-size: 10px;
	font-weight: 800;
	text-transform: uppercase;
	letter-spacing: 0.06em;
	color: var( --cf-os-accent-magenta, #e9128c );
}

.cf-flab__tags {
	margin: 0 0 14px;
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
}

.cf-flab__tag {
	padding: 2px 8px;
	border-radius: 999px;
	background: var( --cf-os-bg );
	border: 1px solid var( --cf-os-border );
	font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
	font-size: 11px;
	color: var( --cf-os-text-muted );
}

.cf-flab__btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	width: 100%;
	padding: 11px 16px;
	border: 0;
	border-radius: 11px;
	background: var( --cf-app, var( --cf-os-accent ) );
	color: #fff;
	font-size: 14px;
	font-weight: 700;
	cursor: pointer;
	transition: filter 0.15s ease, opacity 0.15s ease;
}

.cf-flab__btn:hover {
	filter: brightness( 0.94 );
}

.cf-flab__btn:focus-visible {
	outline: 2px solid var( --cf-os-text );
	outline-offset: 2px;
}

.cf-flab__btn[disabled] {
	cursor: default;
}

.cf-flab__btn.is-joined {
	background: #0f172a;
	opacity: 0.92;
}

.cf-flab__spin {
	display: inline-block;
	width: 15px;
	height: 15px;
	border: 2px solid rgba( 255, 255, 255, 0.5 );
	border-top-color: #fff;
	border-radius: 50%;
	animation: cf-os-spin 0.7s linear infinite;
}

@media ( prefers-reduced-motion: reduce ) {
	.cf-flab__card,
	.cf-flab__btn,
	.cf-os__btn {
		transition: none;
	}

	.cf-flab__spin {
		animation: none;
	}
}

/* =========================================================================
 * Dark-mode refinements — surfaces that hardcode a light tint (v1.62.0).
 * ====================================================================== */

body[data-theme="dark"] .cf-notif__item.is-unread {
	background: rgba( 12, 210, 233, 0.10 ); /* strategic neon cyan */
}

body[data-theme="dark"] .cf-flab__badge {
	background: rgba( 12, 210, 233, 0.14 );
	color: var( --cf-os-accent-cyan );
}

/* Keep the springboard tile labels + app names crisp on the dark canvas. */
body[data-theme="dark"] .cf-os__retry,
body[data-theme="dark"] .cf-crm__btn--full {
	color: var( --cf-os-text );
}

/* =========================================================================
 * Events Hub — upcoming-events grid + quick-create slide-out (v1.66.0).
 * ====================================================================== */

.cf-evt {
	max-width: 860px;
	margin: 0 auto;
}

.cf-evt__head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	margin-bottom: 16px;
}

.cf-evt__intro {
	margin: 0;
	font-size: 14px;
	font-weight: 600;
	color: var( --cf-os-text-muted );
}

.cf-evt__add {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	flex: 0 0 auto;
	padding: 10px 16px;
	border: 0;
	border-radius: 11px;
	background: var( --cf-os-accent );
	color: var( --cf-os-accent-ink );
	font-size: 14px;
	font-weight: 700;
	cursor: pointer;
	transition: filter 0.15s ease;
}

.cf-evt__add:hover {
	filter: brightness( 0.94 );
}

/* List / grid. */
.cf-evt__list {
	display: grid;
	grid-template-columns: 1fr;
	gap: 12px;
}

@media ( min-width: 720px ) {
	.cf-evt__list {
		grid-template-columns: repeat( 2, 1fr );
	}
}

.cf-evt__card {
	display: block;
	overflow: hidden;
	background: var( --cf-os-surface );
	border: 1px solid var( --cf-os-border );
	border-radius: 14px;
	box-shadow: 0 1px 3px rgba( 15, 23, 42, 0.05 );
	transition: transform 0.15s ease, box-shadow 0.15s ease;
}

.cf-evt__card:hover {
	transform: translateY( -2px );
	box-shadow: 0 8px 20px rgba( 15, 23, 42, 0.10 );
}

/* v2.17.0 — quick-search toolbar + delegation toggle + card edit affordances. */
.cf-evt__toolbar {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	margin: 0 0 16px;
}

.cf-evt__filter {
	flex: 1 1 160px;
	min-width: 140px;
	padding: 9px 12px;
	font-size: 14px;
	color: var( --cf-os-text );
	background: var( --cf-os-surface );
	border: 1px solid var( --cf-os-border );
	border-radius: 10px;
}

.cf-evt__filter:focus {
	outline: none;
	border-color: var( --cf-os-accent );
	box-shadow: 0 0 0 3px rgba( 37, 99, 235, 0.15 );
}

.cf-evt__delegate {
	display: flex;
	align-items: center;
	gap: 12px;
	flex-wrap: wrap;
	margin: 0 0 14px;
	padding: 12px 14px;
	background: var( --cf-os-bg );
	border: 1px solid var( --cf-os-border );
	border-radius: 12px;
}

.cf-evt__switch {
	position: relative;
	display: inline-flex;
	align-items: center;
	gap: 10px;
	cursor: pointer;
	font-size: 14px;
	font-weight: 600;
	color: var( --cf-os-text );
}

.cf-evt__switch input {
	position: absolute;
	opacity: 0;
	width: 0;
	height: 0;
}

.cf-evt__switch-track {
	position: relative;
	flex: 0 0 auto;
	width: 42px;
	height: 24px;
	border-radius: 999px;
	background: var( --cf-os-border );
	transition: background 0.15s ease;
}

.cf-evt__switch-track::after {
	content: "";
	position: absolute;
	top: 3px;
	left: 3px;
	width: 18px;
	height: 18px;
	border-radius: 50%;
	background: #fff;
	box-shadow: 0 1px 3px rgba( 15, 23, 42, 0.3 );
	transition: transform 0.15s ease;
}

.cf-evt__switch input:checked + .cf-evt__switch-track {
	background: var( --cf-os-accent );
}

.cf-evt__switch input:checked + .cf-evt__switch-track::after {
	transform: translateX( 18px );
}

.cf-evt__switch input:focus-visible + .cf-evt__switch-track {
	outline: 2px solid var( --cf-os-accent );
	outline-offset: 2px;
}

.cf-evt__delegate-status {
	font-size: 13px;
	color: var( --cf-os-text-muted );
}

.cf-evt__card-actions {
	display: flex;
	align-items: center;
	gap: 10px;
	padding: 12px 16px;
	border-top: 1px solid var( --cf-os-border );
}

.cf-evt__card-edit {
	padding: 6px 14px;
	font-size: 13px;
	font-weight: 600;
	color: #fff;
	background: var( --cf-os-accent );
	border: 0;
	border-radius: 8px;
	cursor: pointer;
}

.cf-evt__card-edit:hover {
	filter: brightness( 0.95 );
}

.cf-evt__card-tag {
	display: inline-block;
	margin-left: 6px;
	padding: 2px 8px;
	font-size: 11px;
	font-weight: 600;
	color: var( --cf-os-accent );
	background: rgba( 37, 99, 235, 0.10 );
	border-radius: 999px;
	vertical-align: middle;
}

.cf-evt__banner {
	height: 132px;
	background-size: cover;
	background-position: center;
	background-color: var( --cf-os-bg );
	border-bottom: 1px solid var( --cf-os-border );
}

.cf-evt__row {
	display: flex;
	align-items: center;
	gap: 14px;
	padding: 14px 16px;
}

.cf-evt__price {
	display: inline-block;
	align-self: flex-start;
	margin-top: 8px;
	padding: 2px 10px;
	border-radius: 999px;
	font-size: 12px;
	font-weight: 800;
	background: color-mix( in srgb, var( --cf-os-accent ) 14%, transparent );
	color: var( --cf-os-accent );
}

.cf-evt__price.is-free {
	background: #dcfce7;
	color: #166534;
}

body[data-theme="dark"] .cf-evt__price.is-free {
	background: rgba( 34, 197, 94, 0.16 );
	color: #4ade80;
}

@supports not ( background: color-mix( in srgb, red 10%, transparent ) ) {
	.cf-evt__price {
		background: var( --cf-os-bg );
	}
}

.cf-evt__date {
	flex: 0 0 auto;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	width: 52px;
	height: 56px;
	border-radius: 12px;
	background: var( --cf-os-bg );
	border: 1px solid var( --cf-os-border );
}

.cf-evt__date-mon {
	font-size: 11px;
	font-weight: 800;
	text-transform: uppercase;
	letter-spacing: 0.05em;
	color: var( --cf-os-accent-magenta );
}

.cf-evt__date-day {
	font-size: 22px;
	font-weight: 800;
	line-height: 1;
	color: var( --cf-os-text );
}

.cf-evt__main {
	flex: 1 1 auto;
	min-width: 0;
}

.cf-evt__title {
	margin: 0 0 4px;
	font-size: 16px;
	font-weight: 700;
	color: var( --cf-os-text );
	line-height: 1.25;
}

.cf-evt__meta {
	display: flex;
	flex-direction: column;
	gap: 2px;
}

.cf-evt__metaitem {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	font-size: 12.5px;
	color: var( --cf-os-text-muted );
}

.cf-evt__count {
	flex: 0 0 auto;
	display: flex;
	flex-direction: column;
	align-items: center;
	min-width: 54px;
	padding-left: 8px;
	border-left: 1px solid var( --cf-os-border );
}

.cf-evt__count-num {
	font-size: 22px;
	font-weight: 800;
	line-height: 1;
	color: var( --cf-os-accent-cyan );
	font-variant-numeric: tabular-nums;
}

.cf-evt__count-label {
	margin-top: 3px;
	font-size: 11px;
	font-weight: 600;
	color: var( --cf-os-text-muted );
	text-align: center;
}

/* The RSVP count doubles as the "view attendees" affordance (v1.89.0). */
.cf-evt__count.cf-evt-attendees {
	cursor: pointer;
	border-radius: 10px;
	transition: background-color 0.15s ease;
}

.cf-evt__count.cf-evt-attendees:hover {
	background: var( --cf-os-bg );
}

.cf-evt__count.cf-evt-attendees:focus-visible {
	outline: 2px solid var( --cf-os-accent );
	outline-offset: 2px;
}

/* ---------------------------------------------------------------------------
 * Event attendee roster + guest accordion (v1.89.0). Dark-mode tokens.
 * ------------------------------------------------------------------------- */

.cf-att {
	max-width: 760px;
	margin: 0 auto;
}

.cf-att__head {
	margin-bottom: 16px;
}

.cf-att__title {
	margin: 0 0 2px;
	font-size: 18px;
	font-weight: 800;
	color: var( --cf-os-text );
}

.cf-att__sub {
	margin: 0;
	font-size: 13px;
	color: var( --cf-os-text-muted );
}

.cf-att__list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 8px;
}

.cf-att__row {
	background: var( --cf-os-surface );
	border: 1px solid var( --cf-os-border );
	border-radius: 12px;
	overflow: hidden;
}

.cf-att__primary {
	display: flex;
	align-items: center;
	gap: 10px;
	padding: 12px 14px;
}

.cf-att__toggle {
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 26px;
	height: 26px;
	padding: 0;
	border: 1px solid var( --cf-os-border );
	border-radius: 8px;
	background: var( --cf-os-bg );
	color: var( --cf-os-text-muted );
	cursor: pointer;
	transition: transform 0.15s ease, color 0.15s ease;
}

.cf-att__toggle:hover {
	color: var( --cf-os-text );
}

.cf-att__toggle--empty {
	border-color: transparent;
	background: transparent;
	cursor: default;
}

.cf-att__row.is-open .cf-att__toggle {
	transform: rotate( 90deg );
	color: var( --cf-os-accent );
}

.cf-att__name {
	font-size: 14px;
	font-weight: 700;
	color: var( --cf-os-text );
}

.cf-att__meta {
	margin-left: 4px;
	font-size: 12.5px;
	color: var( --cf-os-text-muted );
	font-variant-numeric: tabular-nums;
}

.cf-att__status {
	margin-left: auto;
	flex: 0 0 auto;
	padding: 3px 10px;
	border-radius: 999px;
	font-size: 11px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.03em;
}

.cf-att__status.is-paid {
	background: rgba( 22, 163, 74, 0.16 );
	color: #16a34a;
}

.cf-att__status.is-pending {
	background: rgba( 217, 119, 6, 0.16 );
	color: #d97706;
}

.cf-att__status.is-other {
	background: var( --cf-os-bg );
	color: var( --cf-os-text-muted );
}

.cf-att__children {
	list-style: none;
	margin: 0;
	padding: 6px 14px 12px 50px;
	border-top: 1px solid var( --cf-os-border );
	display: flex;
	flex-direction: column;
	gap: 4px;
}

.cf-att__child {
	display: flex;
	align-items: baseline;
	gap: 10px;
	padding: 5px 0;
}

.cf-att__child-name {
	font-size: 13px;
	font-weight: 600;
	color: var( --cf-os-text );
}

.cf-att__child-email {
	font-size: 12px;
	color: var( --cf-os-text-muted );
}

/* Data-migration card (Settings → Financials, L0/L1 only; v1.91.0). */
.cf-mig {
	margin-top: 6px;
	padding: 14px 16px;
	background: var( --cf-os-bg );
	border: 1px solid var( --cf-os-border );
	border-radius: 12px;
}

.cf-mig__count {
	margin: 8px 0 10px;
	font-size: 13px;
	font-weight: 700;
	color: var( --cf-os-text );
}

.cf-mig__status {
	margin-top: 8px;
	min-height: 1em;
	font-size: 12.5px;
	font-weight: 600;
	color: var( --cf-os-text-muted );
}

/* Support & Site Updates form (v1.96.0). */
.cf-sup {
	max-width: 640px;
	margin: 0 auto;
}

.cf-sup__intro {
	margin: 0 0 18px;
	font-size: 14px;
	line-height: 1.6;
	color: var( --cf-os-text-muted );
}

.cf-sup__form {
	display: flex;
	flex-direction: column;
}

.cf-sup__input {
	margin-bottom: 4px;
	/* v2.29.0 — the shared .cf-os__input sets flex:1 1 220px, which made the
	   Request Type / Target Page <select>s grow vertically inside the flex
	   column. Pin them to natural control height. */
	flex: 0 0 auto;
}

/* v2.21.0 — Request Type + Target Page share a row, each dropdown flex: 1 1 50px. */
.cf-sup__row {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-start;
	gap: 14px;
}

.cf-sup__col {
	flex: 1 1 50px;
	min-width: 0;
	display: flex;
	flex-direction: column;
}

.cf-sup__req {
	color: #dc2626;
	font-weight: 800;
}

.cf-sup__file {
	margin: 4px 0 6px;
	font-size: 13px;
	color: var( --cf-os-text-muted );
}

.cf-sup__status {
	margin-top: 12px;
	min-height: 1em;
	font-size: 13px;
	font-weight: 700;
}

.cf-sup__status.is-error {
	color: #dc2626;
}

.cf-sup__status.is-ok {
	color: #16a34a;
}

@media ( prefers-reduced-motion: reduce ) {
	.cf-att__toggle,
	.cf-evt__count.cf-evt-attendees {
		transition: none;
	}
}

/* Edit → native WP edit screen (v1.82.0). */
.cf-evt__edit {
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 7px 12px;
	border: 1px solid var( --cf-os-border );
	border-radius: 9px;
	background: var( --cf-os-bg );
	color: var( --cf-os-text-muted );
	font-size: 13px;
	font-weight: 700;
	text-decoration: none;
	transition: color 0.15s ease, border-color 0.15s ease, background 0.15s ease;
}

.cf-evt__edit svg {
	flex: 0 0 auto;
}

.cf-evt__edit:hover {
	color: var( --cf-os-accent );
	border-color: var( --cf-os-accent );
	background: var( --cf-os-surface );
}

/* ---- OS-native staff event management (v1.95.0) ---- */

.cf-evt__staff {
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	gap: 8px;
}

/* The Edit affordance is now a <button>; keep the pill look + add a reset. */
button.cf-evt__edit {
	cursor: pointer;
	font-family: inherit;
}

.cf-evt__approve {
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 7px 12px;
	border: 0;
	border-radius: 9px;
	background: #16a34a;
	color: #fff;
	font-family: inherit;
	font-size: 13px;
	font-weight: 700;
	cursor: pointer;
	transition: filter 0.15s ease;
}

.cf-evt__approve:hover {
	filter: brightness( 0.94 );
}

.cf-evt__approve:disabled {
	opacity: 0.6;
	cursor: wait;
}

/* Pending Approvals queue. */
.cf-evt__approvals[hidden] {
	display: none;
}

.cf-evt__approvals {
	margin: 4px 0 22px;
	padding: 14px 16px 6px;
	background: rgba( 217, 119, 6, 0.06 );
	border: 1px solid var( --cf-os-border );
	border-radius: 14px;
}

.cf-evt__sectionhead {
	display: flex;
	align-items: center;
	gap: 8px;
	margin: 0 0 12px;
	font-size: 14px;
	font-weight: 800;
	color: var( --cf-os-text );
}

.cf-evt__pendingcount {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 22px;
	height: 22px;
	padding: 0 7px;
	border-radius: 999px;
	background: #d97706;
	color: #fff;
	font-size: 12px;
	font-weight: 800;
}

.cf-evt__pendingbadge {
	display: inline-block;
	margin-top: 6px;
	padding: 2px 9px;
	border-radius: 999px;
	background: rgba( 217, 119, 6, 0.16 );
	color: #d97706;
	font-size: 11px;
	font-weight: 800;
	text-transform: uppercase;
	letter-spacing: 0.03em;
}

.cf-evt__card.is-pending {
	border-color: rgba( 217, 119, 6, 0.45 );
}

/* Registration toggles inside the add/edit modal. */
.cf-evt__toggles {
	margin: 14px 0 4px;
	padding: 12px 14px;
	background: var( --cf-os-bg );
	border: 1px solid var( --cf-os-border );
	border-radius: 10px;
}

.cf-evt__toggle {
	display: flex;
	align-items: center;
	gap: 9px;
	margin-top: 8px;
	font-size: 13px;
	font-weight: 600;
	color: var( --cf-os-text );
	cursor: pointer;
}

.cf-evt__toggle--dependent {
	padding-left: 22px;
}

.cf-evt__btn[hidden] {
	display: none;
}

@media ( prefers-reduced-motion: reduce ) {
	.cf-evt__approve {
		transition: none;
	}
}

/* ---- Quick-create slide-out ---- */

.cf-evt__modal[hidden] {
	display: none;
}

.cf-evt__modal {
	position: fixed;
	inset: 0;
	z-index: 50;
}

.cf-evt__backdrop {
	position: absolute;
	inset: 0;
	background: rgba( 15, 23, 42, 0.5 );
}

.cf-evt__panel {
	position: absolute;
	top: 0;
	right: 0;
	height: 100%;
	width: min( 420px, 92vw );
	display: flex;
	flex-direction: column;
	background: var( --cf-os-surface );
	border-left: 1px solid var( --cf-os-border );
	box-shadow: -12px 0 40px rgba( 15, 23, 42, 0.28 );
	animation: cf-evt-slide 0.2s ease;
}

/* v1.98.0 — when the WP admin bar is present (L0/L1 chrome), push the slide-out
 * panel below it so its header is never obscured by the fixed 32px admin bar. */
body.admin-bar .cf-evt__panel {
	margin-top: 32px;
	height: calc( 100% - 32px );
}

@media screen and ( max-width: 782px ) {
	/* WP's admin bar is 46px tall on small screens. */
	body.admin-bar .cf-evt__panel {
		margin-top: 46px;
		height: calc( 100% - 46px );
	}
}

@keyframes cf-evt-slide {
	from {
		transform: translateX( 100% );
	}
	to {
		transform: translateX( 0 );
	}
}

.cf-evt__panel-head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: 18px 20px;
	border-bottom: 1px solid var( --cf-os-border );
}

.cf-evt__panel-title {
	margin: 0;
	font-size: 17px;
	font-weight: 800;
	color: var( --cf-os-text );
}

.cf-evt__x {
	border: 0;
	background: transparent;
	font-size: 24px;
	line-height: 1;
	color: var( --cf-os-text-muted );
	cursor: pointer;
}

.cf-evt__x:hover {
	color: var( --cf-os-text );
}

.cf-evt__form {
	display: flex;
	flex-direction: column;
	gap: 6px;
	padding: 18px 20px;
	overflow-y: auto;
}

.cf-evt__flabel {
	margin-top: 8px;
	font-size: 13px;
	font-weight: 700;
	color: var( --cf-os-text-muted );
}

.cf-evt__input {
	width: 100%;
	padding: 10px 12px;
	border: 1px solid var( --cf-os-border );
	border-radius: 10px;
	font: inherit;
	font-size: 14px;
	background: var( --cf-os-surface );
	color: var( --cf-os-text );
	box-sizing: border-box;
}

.cf-evt__input:focus {
	outline: none;
	border-color: var( --cf-os-accent );
	box-shadow: 0 0 0 3px rgba( 37, 99, 235, 0.15 );
}

/* v2.22.0 — shared location fieldset (physical/virtual + Places autocomplete). */
.cf-loc {
	border: 0;
	padding: 0;
	margin: 0;
	display: flex;
	flex-direction: column;
	gap: 12px;
}

.cf-loc__toggle {
	display: flex;
	gap: 18px;
	flex-wrap: wrap;
}

.cf-loc__opt {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	font-weight: 600;
	color: var( --cf-os-text );
	cursor: pointer;
}

.cf-loc__panel {
	display: flex;
	flex-direction: column;
	gap: 10px;
}

.cf-loc__field {
	display: flex;
	flex-direction: column;
	gap: 5px;
	font-size: 13px;
	font-weight: 600;
	color: var( --cf-os-text-muted );
}

.cf-loc__field input {
	width: 100%;
	padding: 10px 12px;
	border: 1px solid var( --cf-os-border );
	border-radius: 10px;
	font: inherit;
	font-size: 14px;
	font-weight: 400;
	background: var( --cf-os-surface );
	color: var( --cf-os-text );
	box-sizing: border-box;
}

.cf-loc__field input[readonly] {
	background: var( --cf-os-bg );
	color: var( --cf-os-text-muted );
	cursor: default;
}

.cf-loc__grid {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 10px;
}

/* Two-up rows (dates, capacity/price). */
.cf-evt__grid {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 6px 10px;
}

.cf-evt__hint {
	margin: 4px 0 0;
	font-size: 12px;
	color: var( --cf-os-text-muted );
}

/* Drag-and-drop cover image zone. */
.cf-evt__drop {
	position: relative;
	display: flex;
	align-items: center;
	justify-content: center;
	min-height: 110px;
	margin-top: 4px;
	border: 1.5px dashed var( --cf-os-border );
	border-radius: 12px;
	background: var( --cf-os-bg );
	overflow: hidden;
	transition: border-color 0.15s ease, background 0.15s ease;
}

.cf-evt__drop.is-drag {
	border-color: var( --cf-os-accent );
	background: color-mix( in srgb, var( --cf-os-accent ) 8%, var( --cf-os-bg ) );
}

.cf-evt__file {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	opacity: 0;
	cursor: pointer;
}

.cf-evt__drop-inner {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 8px;
	padding: 16px;
	text-align: center;
	color: var( --cf-os-text-muted );
	pointer-events: none;
}

.cf-evt__drop-text {
	font-size: 13px;
	font-weight: 600;
}

.cf-evt__drop-preview {
	display: block;
	width: 100%;
	max-height: 180px;
	object-fit: cover;
}

.cf-evt__drop.has-image .cf-evt__drop-inner {
	display: none;
}

.cf-evt__form-actions {
	display: flex;
	justify-content: flex-end;
	gap: 10px;
	margin-top: 18px;
}

.cf-evt__btn {
	padding: 10px 18px;
	border: 0;
	border-radius: 10px;
	font-size: 14px;
	font-weight: 700;
	cursor: pointer;
	transition: filter 0.15s ease, background 0.15s ease;
}

.cf-evt__btn--primary {
	background: var( --cf-os-accent );
	color: var( --cf-os-accent-ink );
}

.cf-evt__btn--primary:hover {
	filter: brightness( 0.94 );
}

.cf-evt__btn--primary[disabled] {
	opacity: 0.6;
	cursor: default;
}

.cf-evt__btn--ghost {
	background: var( --cf-os-bg );
	color: var( --cf-os-text );
	border: 1px solid var( --cf-os-border );
}

.cf-evt__btn--ghost:hover {
	background: var( --cf-os-border );
}

@media ( prefers-reduced-motion: reduce ) {
	.cf-evt__card,
	.cf-evt__add,
	.cf-evt__btn {
		transition: none;
	}

	.cf-evt__panel {
		animation: none;
	}
}

/* =========================================================================
 * Reports Hub — One-Click Board Report + Financials overview (v1.67.0).
 * ====================================================================== */

.cf-rep {
	max-width: 860px;
	margin: 0 auto;
}

/* The Dynamic Report Engine hero — header + a row of quick-report buttons. */
.cf-rep__hero {
	display: flex;
	flex-direction: column;
	gap: 18px;
	padding: 24px;
	background: var( --cf-os-surface );
	border: 1px solid var( --cf-os-border );
	border-radius: 18px;
	box-shadow: var( --cf-os-shadow );
}

.cf-rep__hero-title {
	margin: 0 0 6px;
	font-size: 20px;
	font-weight: 800;
	letter-spacing: -0.01em;
	color: var( --cf-os-text );
}

.cf-rep__hero-sub {
	margin: 0;
	max-width: 60ch;
	font-size: 14px;
	line-height: 1.5;
	color: var( --cf-os-text-muted );
}

/* Quick-report buttons: stacked on mobile, a balanced 3-up grid on desktop. */
.cf-rep__quickgrid {
	display: grid;
	grid-template-columns: 1fr;
	gap: 12px;
	width: 100%;
}

@media ( min-width: 720px ) {
	.cf-rep__quickgrid {
		grid-template-columns: repeat( 3, 1fr );
	}
}

.cf-rep__quick {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 6px;
	padding: 16px;
	text-align: left;
	border: 1px solid var( --cf-os-border );
	border-radius: 14px;
	background: var( --cf-os-bg );
	color: var( --cf-os-text );
	cursor: pointer;
	transition: border-color 0.15s ease, transform 0.15s ease, box-shadow 0.15s ease;
}

.cf-rep__quick:hover {
	border-color: var( --cf-os-accent );
	transform: translateY( -2px );
	box-shadow: var( --cf-os-shadow );
}

.cf-rep__quick-icon {
	display: inline-flex;
	color: var( --cf-os-accent );
}

.cf-rep__quick-icon svg {
	flex: 0 0 auto;
}

.cf-rep__quick-label {
	font-size: 15px;
	font-weight: 700;
}

.cf-rep__quick-desc {
	font-size: 12.5px;
	line-height: 1.45;
	color: var( --cf-os-text-muted );
}

.cf-rep__section {
	margin: 24px 0 4px;
	font-size: 15px;
	font-weight: 800;
	color: var( --cf-os-text );
}

.cf-rep__panel {
	margin-top: 14px;
	padding: 16px 18px;
	background: var( --cf-os-surface );
	border: 1px solid var( --cf-os-border );
	border-radius: 14px;
}

.cf-rep__subhead {
	margin: 0 0 10px;
	font-size: 12px;
	font-weight: 800;
	text-transform: uppercase;
	letter-spacing: 0.04em;
	color: var( --cf-os-text-muted );
}

/* ---- Financial Ledger — CFO dashboard layout (v1.74.0) ---- */

/* The Ledger reuses the Reports card vocabulary but runs a touch wider so the
 * two-column split has room to breathe. */
.cf-ledger {
	max-width: 1040px;
}

/* Three at-a-glance stat cards (Active / Past Due / Outstanding $). */
.cf-ledger__stats {
	margin-top: 14px;
}

@media ( min-width: 620px ) {
	.cf-ledger__stats {
		grid-template-columns: repeat( 4, 1fr );
	}
}

/* Hero CTA → stat cards → two-column split (Tier table | Invoices). */
.cf-ledger__split {
	display: grid;
	grid-template-columns: 1fr;
	gap: 16px;
	margin-top: 14px;
	align-items: start;
}

@media ( min-width: 860px ) {
	.cf-ledger__split {
		grid-template-columns: minmax( 0, 5fr ) minmax( 0, 7fr );
	}
}

/* Inside the split the grid gap owns the spacing, so cancel the panel's own
 * top margin and let the table scroll instead of overflowing the column. */
.cf-ledger__col {
	margin-top: 0;
	min-width: 0;
	overflow-x: auto;
}

/* Recent Invoices: fixed layout so the long description wraps cleanly while the
   date / amount / status columns stay tidy on one line — nothing is clipped or
   hidden (v1.84.0). */
.cf-ledger__invtable {
	table-layout: fixed;
	width: 100%;
}

.cf-ledger__invtable th:nth-child( 1 ),
.cf-ledger__invtable td:nth-child( 1 ) {
	width: 22%;
}

.cf-ledger__invtable th:nth-child( 3 ),
.cf-ledger__invtable td:nth-child( 3 ) {
	width: 23%;
}

.cf-ledger__invtable th:nth-child( 4 ),
.cf-ledger__invtable td:nth-child( 4 ) {
	width: 18%;
}

.cf-ledger__invtable td:nth-child( 2 ) {
	white-space: normal;
	word-break: break-word;
	font-weight: 600;
}

.cf-ledger__invtable td:first-child {
	white-space: normal;
	font-weight: 600;
}

/* ---- Board Report modal ---- */

.cf-rep__modal[hidden] {
	display: none;
}

.cf-rep__modal {
	position: fixed;
	inset: 0;
	z-index: 60;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 20px;
}

.cf-rep__backdrop {
	position: absolute;
	inset: 0;
	background: rgba( 15, 23, 42, 0.55 );
}

.cf-rep__dialog {
	position: relative;
	width: min( 680px, 96vw );
	max-height: 90vh;
	overflow: auto;
	background: var( --cf-os-surface );
	border: 1px solid var( --cf-os-border );
	border-radius: 18px;
	box-shadow: 0 24px 60px rgba( 15, 23, 42, 0.42 );
}

.cf-rep__loading {
	display: flex;
	align-items: center;
	justify-content: center;
	min-height: 220px;
}

.cf-rep__modal-actions {
	display: flex;
	justify-content: flex-end;
	gap: 10px;
	padding: 0 24px 22px;
}

.cf-rep__btn {
	padding: 10px 18px;
	border: 0;
	border-radius: 10px;
	font-size: 14px;
	font-weight: 700;
	cursor: pointer;
	transition: filter 0.15s ease;
}

.cf-rep__btn--primary {
	background: var( --cf-os-accent );
	color: var( --cf-os-accent-ink );
}

.cf-rep__btn--primary:hover {
	filter: brightness( 0.94 );
}

.cf-rep__btn--ghost {
	background: var( --cf-os-bg );
	color: var( --cf-os-text );
	border: 1px solid var( --cf-os-border );
}

/* ---- The formal, board-ready report document (a paper sheet) ----
 * Hard-coded paper colors (not theme tokens) so the document reads like a
 * physical, dark-on-white sheet both on screen (over the dark OS) and in print.
 */

.cf-rep__doc {
	padding: 32px 30px 18px;
	background: #ffffff;
	color: #1f2937;
	border-radius: 18px 18px 0 0;
}

.cf-rep__doc-head {
	text-align: center;
	padding-bottom: 16px;
	margin-bottom: 20px;
	border-bottom: 2px solid #1f2937;
}

.cf-rep__doc-title {
	margin: 0 0 6px;
	font-size: 22px;
	font-weight: 800;
	color: #0f172a;
}

.cf-rep__doc-org {
	margin: 0;
	font-size: 14px;
	color: #475569;
}

.cf-rep__doc-section {
	margin: 22px 0 10px;
	font-size: 13px;
	font-weight: 800;
	text-transform: uppercase;
	letter-spacing: 0.06em;
	color: #334155;
}

.cf-rep__doc-table {
	width: 100%;
	border-collapse: collapse;
	margin: 0 0 6px;
	font-size: 13px;
}

.cf-rep__doc-table th,
.cf-rep__doc-table td {
	padding: 8px 10px;
	border: 1px solid #d1d5db;
	text-align: left;
	color: #1f2937;
}

.cf-rep__doc-table th {
	background: #f3f4f6;
	font-weight: 700;
	color: #111827;
}

.cf-rep__doc-amt {
	text-align: right;
	font-variant-numeric: tabular-nums;
	white-space: nowrap;
}

.cf-rep__doc-totalrow td {
	font-weight: 800;
	background: #f8fafc;
	color: #0f172a;
}

.cf-rep__doc-empty {
	margin: 0 0 6px;
	padding: 10px 0;
	font-size: 13px;
	font-style: italic;
	color: #64748b;
}

.cf-rep__doc-note {
	margin: 0 0 14px;
	font-size: 13px;
	line-height: 1.5;
	color: #475569;
}

.cf-rep__doc-foot {
	margin: 24px 0 4px;
	text-align: center;
	font-size: 12px;
	color: #64748b;
}

/* Print: strip the OS chrome and isolate ONLY the document onto a clean page.
 * The .cf-rep__doc already carries its paper colors, so the page prints exactly
 * as it appears in the modal — a professional, board-ready sheet. */
/* v2.47.0 — Attendee roster header layout + buyer email + print affordance. */
.cf-att__head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.cf-att__email { display: block; font-size: 13px; color: var( --cf-accent, #2563eb ); text-decoration: none; }
.cf-att__email:hover { text-decoration: underline; }
.cf-att__print { flex: none; padding: 7px 14px; border: 1px solid #d0d5dd; border-radius: 8px; background: #ffffff; font-weight: 600; font-size: 13px; cursor: pointer; }
.cf-att__print:hover { background: #f8fafc; }

@media print {
	body * {
		visibility: hidden !important;
	}

	.cf-rep__report,
	.cf-rep__report *,
	.cf-att,
	.cf-att * {
		visibility: visible !important;
	}

	.cf-rep__report,
	.cf-att {
		position: absolute;
		left: 0;
		top: 0;
		width: 100%;
		background: #ffffff !important;
	}

	.cf-att__print {
		display: none !important;
	}

	.cf-rep__doc {
		border-radius: 0 !important;
	}

	.cf-rep__noprint {
		display: none !important;
	}
}

@media ( prefers-reduced-motion: reduce ) {
	.cf-rep__quick,
	.cf-rep__btn {
		transition: none;
	}
}

/* =========================================================================
 * Custom Query Builder — Reports Hub (v1.77.0).
 * ====================================================================== */

.cf-cqb {
	max-width: 1040px;
	margin: 0 auto;
}

/* Pinned preset cards. */
.cf-cqb__pinned {
	display: grid;
	grid-template-columns: 1fr;
	gap: 12px;
	margin-bottom: 18px;
}

@media ( min-width: 720px ) {
	.cf-cqb__pinned {
		grid-template-columns: repeat( 3, 1fr );
	}
}

.cf-cqb__pin {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 5px;
	padding: 16px;
	text-align: left;
	border: 1px solid var( --cf-os-border );
	border-radius: 14px;
	background: var( --cf-os-surface );
	color: var( --cf-os-text );
	cursor: pointer;
	transition: border-color 0.15s ease, transform 0.15s ease, box-shadow 0.15s ease;
}

.cf-cqb__pin:hover {
	border-color: var( --cf-os-accent-magenta );
	transform: translateY( -2px );
	box-shadow: var( --cf-os-shadow );
}

.cf-cqb__pin-icon {
	display: inline-flex;
	color: var( --cf-os-accent-magenta );
}

.cf-cqb__pin-icon svg {
	flex: 0 0 auto;
}

.cf-cqb__pin-label {
	font-size: 15px;
	font-weight: 700;
}

.cf-cqb__pin-desc {
	font-size: 12.5px;
	line-height: 1.45;
	color: var( --cf-os-text-muted );
}

/* Inline filter bar. */
.cf-cqb__bar {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-end;
	gap: 12px;
	padding: 16px;
	margin-bottom: 18px;
	background: var( --cf-os-surface );
	border: 1px solid var( --cf-os-border );
	border-radius: 14px;
}

.cf-cqb__field {
	display: flex;
	flex-direction: column;
	gap: 5px;
	flex: 1 1 180px;
	min-width: 0;
}

.cf-cqb__label {
	font-size: 12px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.04em;
	color: var( --cf-os-text-muted );
}

.cf-cqb__select {
	height: 40px;
	padding: 0 12px;
	border: 1px solid var( --cf-os-border );
	border-radius: 10px;
	background: var( --cf-os-bg );
	color: var( --cf-os-text );
	font: inherit;
	font-size: 14px;
	cursor: pointer;
}

.cf-cqb__select:focus {
	outline: none;
	border-color: var( --cf-os-accent );
	box-shadow: 0 0 0 3px rgba( 37, 99, 235, 0.15 );
}

.cf-cqb__run {
	flex: 0 0 auto;
	height: 40px;
	padding: 0 22px;
	border: 0;
	border-radius: 10px;
	background: var( --cf-os-accent-magenta );
	color: var( --cf-brand-on-accent, #0b1220 ); /* v2.55.0 — derived readable text (ink on orange), never white-on-accent. */
	font-size: 14px;
	font-weight: 700;
	cursor: pointer;
	transition: filter 0.15s ease, transform 0.15s ease;
}

.cf-cqb__run:hover {
	filter: brightness( 1.05 );
	transform: translateY( -1px );
}

.cf-cqb__run[disabled] {
	opacity: 0.7;
	cursor: default;
	transform: none;
}

/* Results. */
.cf-cqb__count {
	min-height: 18px;
	margin-bottom: 8px;
	font-size: 13px;
	font-weight: 600;
	color: var( --cf-os-text-muted );
}

.cf-cqb__table {
	width: 100%;
}

.cf-cqb__placeholder td {
	padding: 28px 12px;
	text-align: center;
	font-size: 13px;
	color: var( --cf-os-text-muted );
}

.cf-cqb__placeholder.is-loading td {
	font-style: italic;
}

@media ( prefers-reduced-motion: reduce ) {
	.cf-cqb__pin,
	.cf-cqb__run {
		transition: none;
	}
}

/* =========================================================================
 * Member Portal — Spoke dashboard + serial-entrepreneur switcher (v1.69.0).
 * ====================================================================== */

/* Pushes the bar controls right when the CRM search is hidden (members). */
.cf-os__spacer {
	flex: 1 1 auto;
}

.cf-mp {
	max-width: 900px;
	margin: 0 auto;
}

.cf-mp__empty {
	text-align: center;
	padding: 12vh 16px;
	color: var( --cf-os-text-muted );
}

.cf-mp__empty h2 {
	margin: 0 0 8px;
	color: var( --cf-os-text );
}

.cf-mp__top {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	margin-bottom: 18px;
}

.cf-mp__only-name {
	margin: 0;
	font-size: 20px;
	font-weight: 800;
	color: var( --cf-os-text );
}

/* Business switcher. */
.cf-mp__switcher {
	position: relative;
}

.cf-mp__switch-btn {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: 9px 14px;
	border: 1px solid var( --cf-os-border );
	border-radius: 11px;
	background: var( --cf-os-surface );
	color: var( --cf-os-text );
	font-size: 16px;
	font-weight: 800;
	cursor: pointer;
}

.cf-mp__switch-menu {
	position: absolute;
	top: calc( 100% + 6px );
	left: 0;
	z-index: 20;
	min-width: 220px;
	padding: 6px;
	background: var( --cf-os-surface );
	border: 1px solid var( --cf-os-border );
	border-radius: 12px;
	box-shadow: 0 16px 40px rgba( 15, 23, 42, 0.22 );
}

.cf-mp__switch-menu[hidden] {
	display: none;
}

.cf-mp__switch-item {
	display: block;
	width: 100%;
	padding: 9px 12px;
	border: 0;
	border-radius: 8px;
	background: transparent;
	text-align: left;
	font-size: 14px;
	font-weight: 600;
	color: var( --cf-os-text );
	cursor: pointer;
}

.cf-mp__switch-item:hover {
	background: var( --cf-os-bg );
}

.cf-mp__switch-item.is-active {
	color: var( --cf-os-accent );
}

.cf-mp__install {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	flex: 0 0 auto;
	padding: 10px 16px;
	border: 0;
	border-radius: 11px;
	background: var( --cf-os-accent-magenta );
	color: var( --cf-brand-on-accent, #0b1220 ); /* v2.55.0 — derived readable text (ink on orange). */
	font-size: 14px;
	font-weight: 700;
	cursor: pointer;
	transition: filter 0.15s ease;
}

.cf-mp__install:hover {
	filter: brightness( 0.95 );
}

/* Tabs: Dashboard ⇄ My Profile (v1.78.0). */
.cf-mp__tabs {
	display: flex;
	gap: 6px;
	margin-bottom: 18px;
	border-bottom: 1px solid var( --cf-os-border );
}

.cf-mp__tab {
	padding: 10px 14px;
	border: 0;
	border-bottom: 2px solid transparent;
	margin-bottom: -1px;
	background: transparent;
	color: var( --cf-os-text-muted );
	font: inherit;
	font-size: 14px;
	font-weight: 700;
	cursor: pointer;
	transition: color 0.15s ease, border-color 0.15s ease;
}

.cf-mp__tab:hover {
	color: var( --cf-os-text );
}

.cf-mp__tab.is-active {
	color: var( --cf-os-text );
	border-bottom-color: var( --cf-os-accent );
}

/* My Profile form. */
.cf-mp__profile {
	max-width: 620px;
}

.cf-mp__profile-help {
	margin: 0 0 16px;
	font-size: 13px;
	line-height: 1.5;
	color: var( --cf-os-text-muted );
}

.cf-mp__form {
	display: flex;
	flex-direction: column;
}

.cf-mp__flabel {
	margin-bottom: 6px;
	font-size: 13px;
	font-weight: 700;
	color: var( --cf-os-text );
}

.cf-mp__input {
	margin-bottom: 16px;
	padding: 10px 12px;
	border: 1px solid var( --cf-os-border );
	border-radius: 10px;
	background: var( --cf-os-bg );
	color: var( --cf-os-text );
	font: inherit;
	font-size: 14px;
	box-sizing: border-box;
}

.cf-mp__input:focus {
	outline: none;
	border-color: var( --cf-os-accent );
	background: var( --cf-os-surface );
	box-shadow: 0 0 0 3px rgba( 37, 99, 235, 0.15 );
}

.cf-mp__textarea {
	resize: vertical;
	min-height: 96px;
	line-height: 1.5;
}

.cf-mp__form-actions {
	display: flex;
	justify-content: flex-end;
}

.cf-mp__save {
	padding: 10px 22px;
	border: 0;
	border-radius: 10px;
	background: var( --cf-os-accent );
	color: var( --cf-os-accent-ink );
	font-size: 14px;
	font-weight: 700;
	cursor: pointer;
	transition: filter 0.15s ease;
}

.cf-mp__save:hover {
	filter: brightness( 0.95 );
}

.cf-mp__save[disabled] {
	opacity: 0.6;
	cursor: default;
}

/* Dashboard grid. */
.cf-mp__grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: 16px;
}

@media ( min-width: 760px ) {
	.cf-mp__grid {
		grid-template-columns: 1fr 1fr;
	}

	.cf-mp__invoices {
		grid-column: 1 / -1;
	}
}

.cf-mp__card {
	padding: 18px;
	background: var( --cf-os-surface );
	border: 1px solid var( --cf-os-border );
	border-radius: 16px;
}

.cf-mp__card-title {
	margin: 0 0 12px;
	font-size: 14px;
	font-weight: 800;
	color: var( --cf-os-text );
}

.cf-mp__biz-head {
	display: flex;
	align-items: center;
	gap: 14px;
	margin-bottom: 14px;
}

.cf-mp__biz-avatar {
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 52px;
	height: 52px;
	border-radius: 14px;
	background: var( --cf-app, var( --cf-os-accent ) );
	color: #fff;
	font-size: 20px;
	font-weight: 800;
	overflow: hidden;
}

.cf-mp__biz-avatar img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.cf-mp__biz-name {
	margin: 0 0 5px;
	font-size: 18px;
	font-weight: 800;
	color: var( --cf-os-text );
}

.cf-mp__biz-meta {
	display: flex;
	align-items: center;
	gap: 8px;
	flex-wrap: wrap;
}

.cf-mp__biz-tier {
	padding: 2px 10px;
	border-radius: 999px;
	font-size: 11px;
	font-weight: 800;
	text-transform: uppercase;
	letter-spacing: 0.03em;
	background: #eef2ff;
	color: #4338ca;
}

.cf-mp__fields {
	display: grid;
	grid-template-columns: minmax( 110px, max-content ) 1fr;
	gap: 8px 16px;
	margin: 0;
	font-size: 14px;
}

.cf-mp__fields dt {
	font-weight: 700;
	color: var( --cf-os-text-muted );
}

.cf-mp__fields dd {
	margin: 0;
	color: var( --cf-os-text );
	word-break: break-word;
}

.cf-mp__events {
	list-style: none;
	margin: 0;
	padding: 0;
}

.cf-mp__event {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 10px;
	padding: 10px 0;
	border-bottom: 1px solid var( --cf-os-border );
}

.cf-mp__event:last-child {
	border-bottom: 0;
}

.cf-mp__event-title {
	font-size: 14px;
	font-weight: 600;
	color: var( --cf-os-text );
}

.cf-mp__event-when {
	flex: 0 0 auto;
	font-size: 12.5px;
	color: var( --cf-os-text-muted );
}

@media ( prefers-reduced-motion: reduce ) {
	.cf-mp__install {
		transition: none;
	}
}

/* =========================================================================
 * Icon ↔ text spacing polish (v1.73.0) — consistent gaps so SVG glyphs
 * never crowd adjacent typography.
 * ====================================================================== */

/* Normalize the gap on the icon+label flex buttons across the OS. */
.cf-evt__add,
.cf-mp__install,
.cf-rep__cta,
.cf-crm__btn--call,
.cf-crm__btn--email {
	gap: 8px;
}

/* Inline icon + text rows (event meta, activity feed times, etc.). */
.cf-evt__metaitem {
	gap: 8px;
}

/* An icon should never shrink and overlap the text beside it. */
.cf-os__btn svg,
.cf-evt__btn svg,
.cf-evt__add svg,
.cf-mp__install svg,
.cf-rep__cta svg,
.cf-evt__metaitem svg,
.cf-os__search-icon,
.cf-flab__btn svg,
.cf-crm__field-label svg {
	flex: 0 0 auto;
}

/* =========================================================================
 * Post-demo UX (v1.80.0) — note tags/editing, business editing, mailto
 * polish, dynamic-role settings, and the PWA install modal.
 * ====================================================================== */

/* Ghost button variants (reused by the inline editors + role settings). */
.cf-crm__btn--ghost {
	background: var( --cf-os-bg );
	color: var( --cf-os-text );
	border: 1px solid var( --cf-os-border );
}

.cf-crm__btn--ghost:hover {
	background: var( --cf-os-border );
}

.cf-os__btn--ghost {
	background: var( --cf-os-bg );
	color: var( --cf-os-text );
	border: 1px solid var( --cf-os-border );
}

.cf-os__btn--ghost:hover {
	filter: none;
	background: var( --cf-os-border );
}

/* ---- Activity timeline: tag chip + meta row + inline edit ---- */

.cf-notif__meta {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	flex-wrap: wrap;
}

.cf-notif__tag {
	display: inline-flex;
	align-items: center;
	padding: 1px 8px;
	border-radius: 999px;
	border: 1px solid var( --cf-os-border );
	background: var( --cf-os-bg );
	font-size: 11px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.03em;
	color: var( --cf-os-text-muted );
}

.cf-notif__tag--call    { color: #16a34a; border-color: rgba( 22, 163, 74, 0.35 ); }
.cf-notif__tag--email   { color: #2563eb; border-color: rgba( 37, 99, 235, 0.35 ); }
.cf-notif__tag--meeting { color: #7c3aed; border-color: rgba( 124, 58, 237, 0.35 ); }
.cf-notif__tag--visit   { color: #ca8a04; border-color: rgba( 202, 138, 4, 0.35 ); }

/* @mention note tagging (v2.28.0) */
.cf-notif__tagged {
	display: inline-flex;
	align-items: center;
	gap: 3px;
	padding: 1px 8px;
	border-radius: 999px;
	background: rgba( 37, 99, 235, 0.10 );
	color: var( --cf-acc, #2563eb );
	font-size: 11px;
	font-weight: 700;
}

/* "@you" surfacing in the Notifications feed (v2.28.1) */
.cf-notif__youtag {
	display: inline-flex;
	align-self: flex-start;
	margin-top: 3px;
	padding: 1px 8px;
	border-radius: 999px;
	background: var( --cf-acc, #2563eb );
	color: #fff;
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 0.01em;
}

.cf-notif__item--mention {
	border-left: 3px solid var( --cf-acc, #2563eb );
	background: rgba( 37, 99, 235, 0.05 );
}

.cf-crm__mentionbox {
	position: absolute;
	z-index: 9999;
	max-height: 244px;
	overflow-y: auto;
	background: #fff;
	border: 1px solid #e2e8f0;
	border-radius: 10px;
	box-shadow: 0 12px 28px rgba( 15, 23, 42, 0.18 );
	padding: 6px;
}

.cf-crm__mentionopt {
	display: block;
	width: 100%;
	text-align: left;
	padding: 8px 12px;
	border: 0;
	border-radius: 7px;
	background: transparent;
	color: #1e293b;
	font-size: 14px;
	line-height: 1.2;
	cursor: pointer;
}

.cf-crm__mentionopt:hover,
.cf-crm__mentionopt.is-active {
	background: var( --cf-acc, #2563eb );
	color: #fff;
}

.cf-notif__edit {
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 28px;
	height: 28px;
	border: 0;
	border-radius: 8px;
	background: transparent;
	color: var( --cf-os-text-muted );
	cursor: pointer;
	opacity: 0;
	transition: opacity 0.15s ease, background 0.15s ease, color 0.15s ease;
}

.cf-notif__item:hover .cf-notif__edit,
.cf-notif__edit:focus {
	opacity: 1;
}

.cf-notif__edit:hover {
	background: var( --cf-os-bg );
	color: var( --cf-os-accent );
}

.cf-notif__item.is-editing {
	align-items: stretch;
}

.cf-notif__editor {
	flex: 1 1 auto;
	min-width: 0;
	display: flex;
	flex-direction: column;
	gap: 8px;
}

.cf-notif__editta {
	width: 100%;
	padding: 8px 10px;
	border: 1px solid var( --cf-os-border );
	border-radius: 10px;
	background: var( --cf-os-surface );
	color: var( --cf-os-text );
	font: inherit;
	font-size: 14px;
	resize: vertical;
	box-sizing: border-box;
}

.cf-notif__editta:focus {
	outline: none;
	border-color: var( --cf-os-accent );
	box-shadow: 0 0 0 3px rgba( 37, 99, 235, 0.15 );
}

.cf-notif__editrow {
	display: flex;
	gap: 8px;
	flex-wrap: wrap;
	align-items: center;
}

.cf-notif__edittag {
	padding: 8px 10px;
	border: 1px solid var( --cf-os-border );
	border-radius: 10px;
	background: var( --cf-os-surface );
	color: var( --cf-os-text );
	font: inherit;
	font-size: 13px;
	cursor: pointer;
}

/* ---- Note logger actions row (tag select + Save) ---- */

.cf-crm__note-actions {
	display: flex;
	gap: 8px;
	align-items: center;
}

.cf-crm__note-tag {
	flex: 0 0 auto;
	padding: 10px 12px;
	border: 1px solid var( --cf-os-border );
	border-radius: 10px;
	background: var( --cf-os-surface );
	color: var( --cf-os-text );
	font: inherit;
	font-size: 13px;
	cursor: pointer;
}

.cf-crm__note-tag:focus {
	outline: none;
	border-color: var( --cf-os-accent );
	box-shadow: 0 0 0 3px rgba( 37, 99, 235, 0.15 );
}

.cf-crm__note-actions .cf-crm__btn--save {
	margin-left: auto;
}

/* ---- Business-details editor (hero edit + inline bar) ---- */

.cf-crm__hero-side {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	margin-left: auto;
}

.cf-crm__hero-edit {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 34px;
	height: 34px;
	border: 1px solid rgba( 255, 255, 255, 0.5 );
	border-radius: 9px;
	background: rgba( 255, 255, 255, 0.18 );
	color: #fff;
	cursor: pointer;
	transition: background 0.15s ease;
}

.cf-crm__hero-edit:hover {
	background: rgba( 255, 255, 255, 0.3 );
}

.cf-crm__editbar {
	margin: 14px 0 4px;
	padding: 16px;
	background: var( --cf-os-surface );
	border: 1px solid var( --cf-os-border );
	border-radius: 14px;
	box-shadow: var( --cf-os-shadow );
}

.cf-crm__editrow {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
}

.cf-crm__editrow + .cf-crm__editrow {
	margin-top: 12px;
}

.cf-crm__editlabel {
	display: flex;
	flex-direction: column;
	gap: 5px;
	flex: 1 1 180px;
	min-width: 0;
	font-size: 12px;
	font-weight: 700;
	color: var( --cf-os-text-muted );
}

.cf-crm__editlabel--wide {
	flex: 2 1 260px;
}

.cf-crm__editlabel--sm {
	flex: 0 1 90px;
}

.cf-crm__editinput {
	padding: 9px 12px;
	border: 1px solid var( --cf-os-border );
	border-radius: 10px;
	background: var( --cf-os-bg );
	color: var( --cf-os-text );
	font: inherit;
	font-size: 14px;
	box-sizing: border-box;
}

.cf-crm__editinput:focus {
	outline: none;
	border-color: var( --cf-os-accent );
	box-shadow: 0 0 0 3px rgba( 37, 99, 235, 0.15 );
}

.cf-crm__editactions {
	display: flex;
	justify-content: flex-end;
	gap: 10px;
	margin-top: 14px;
}

/* ---- Email field: copy button + info tooltip ---- */

.cf-crm__email {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	flex-wrap: wrap;
}

.cf-crm__copy {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 26px;
	height: 26px;
	border: 1px solid var( --cf-os-border );
	border-radius: 7px;
	background: var( --cf-os-bg );
	color: var( --cf-os-text-muted );
	cursor: pointer;
	transition: color 0.15s ease, border-color 0.15s ease;
}

.cf-crm__copy:hover {
	color: var( --cf-os-accent );
	border-color: var( --cf-os-accent );
}

.cf-crm__info {
	position: relative;
	display: inline-flex;
	align-items: center;
	color: var( --cf-os-text-muted );
	cursor: help;
}

.cf-crm__info::after {
	content: attr( data-tip );
	position: absolute;
	bottom: calc( 100% + 8px );
	left: 50%;
	transform: translateX( -50% );
	width: max-content;
	max-width: 240px;
	padding: 8px 10px;
	border-radius: 8px;
	background: #0f172a;
	color: #f8fafc;
	font-size: 12px;
	font-weight: 500;
	line-height: 1.4;
	white-space: normal;
	text-align: center;
	box-shadow: 0 8px 20px rgba( 15, 23, 42, 0.3 );
	opacity: 0;
	pointer-events: none;
	transition: opacity 0.15s ease;
	z-index: 20;
}

.cf-crm__info:hover::after,
.cf-crm__info:focus::after {
	opacity: 1;
}

/* ---- Committees & Leadership Roles settings ---- */

.cf-roles__list {
	display: flex;
	flex-direction: column;
	gap: 10px;
	margin-bottom: 14px;
}

.cf-roles__row {
	display: flex;
	align-items: center;
	gap: 10px;
}

.cf-roles__label {
	flex: 1 1 auto;
	margin-bottom: 0;
}

.cf-roles__remove {
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 38px;
	height: 38px;
	border: 1px solid var( --cf-os-border );
	border-radius: 10px;
	background: var( --cf-os-bg );
	color: var( --cf-os-text-muted );
	cursor: pointer;
	transition: color 0.15s ease, border-color 0.15s ease;
}

.cf-roles__remove:hover {
	color: #dc2626;
	border-color: rgba( 220, 38, 38, 0.4 );
}

/* ---- PWA install modal (Task 4b) ---- */

.cf-pwa[hidden] {
	display: none;
}

.cf-pwa {
	position: fixed;
	inset: 0;
	z-index: 80;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 20px;
}

.cf-pwa__backdrop {
	position: absolute;
	inset: 0;
	background: rgba( 15, 23, 42, 0.6 );
}

.cf-pwa__dialog {
	position: relative;
	width: min( 420px, 96vw );
	padding: 30px 26px 26px;
	text-align: center;
	background: var( --cf-os-surface );
	border: 1px solid var( --cf-os-border );
	border-radius: 20px;
	box-shadow: 0 24px 60px rgba( 15, 23, 42, 0.5 );
}

.cf-pwa__x {
	position: absolute;
	top: 12px;
	right: 14px;
	border: 0;
	background: transparent;
	color: var( --cf-os-text-muted );
	font-size: 24px;
	line-height: 1;
	cursor: pointer;
}

.cf-pwa__icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 64px;
	height: 64px;
	margin-bottom: 14px;
	border-radius: 18px;
	background: var( --cf-os-accent );
	color: var( --cf-os-accent-ink );
}

.cf-pwa__title {
	margin: 0 0 8px;
	font-size: 20px;
	font-weight: 800;
	color: var( --cf-os-text );
}

.cf-pwa__text {
	margin: 0 0 20px;
	font-size: 14px;
	line-height: 1.55;
	color: var( --cf-os-text-muted );
}

.cf-pwa__actions {
	display: flex;
	flex-direction: column;
	gap: 10px;
}

.cf-pwa__btn {
	padding: 12px 18px;
	border: 0;
	border-radius: 12px;
	font-size: 15px;
	font-weight: 700;
	cursor: pointer;
	transition: filter 0.15s ease, background 0.15s ease;
}

.cf-pwa__btn--primary {
	background: var( --cf-os-accent );
	color: var( --cf-os-accent-ink );
}

.cf-pwa__btn--primary:hover {
	filter: brightness( 0.95 );
}

.cf-pwa__btn--ghost {
	background: transparent;
	color: var( --cf-os-text-muted );
}

.cf-pwa__btn--ghost:hover {
	background: var( --cf-os-bg );
}

.cf-pwa__ios {
	margin: 16px 0 0;
	padding-top: 14px;
	border-top: 1px solid var( --cf-os-border );
	font-size: 13px;
	line-height: 1.5;
	color: var( --cf-os-text-muted );
}

@media ( prefers-reduced-motion: reduce ) {
	.cf-notif__edit,
	.cf-crm__copy,
	.cf-crm__hero-edit,
	.cf-roles__remove,
	.cf-pwa__btn {
		transition: none;
	}
}

/* =========================================================================
 * Architecture & intelligence (v1.84.0) — Mission-Control settings tabs +
 * toggle switches + brand color picker, and the financial-intelligence
 * blocks (CLV stats + Budget-vs-Actuals bars).
 * ====================================================================== */

/* ---- Settings: tabbed Mission Control ---- */
.cf-set {
	max-width: 920px;
	margin: 0 auto;
}

/* v2.19.5 — unified SPA Springboard (tile grid + stagebar), one visual spec
   shared with the wp-admin Platform Settings. Modern SaaS cards, not tabs. */
.cf-ms-springboard {
	display: grid;
	grid-template-columns: repeat( 2, minmax( 0, 1fr ) );
	gap: 16px;
	margin: 10px 0 4px;
}

@media ( min-width: 768px ) {
	.cf-ms-springboard { grid-template-columns: repeat( 3, minmax( 0, 1fr ) ); }
}

@media ( min-width: 1024px ) {
	.cf-ms-springboard { grid-template-columns: repeat( 4, minmax( 0, 1fr ) ); }
}

.cf-ms-tile {
	aspect-ratio: 1 / 1;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 14px;
	padding: 24px;
	background: var( --cf-os-surface, #fff );
	border: 1px solid var( --cf-os-border, #e5e7eb );
	border-radius: 14px;
	cursor: pointer;
	text-align: center;
	transition: transform 0.15s ease, box-shadow 0.15s ease, border-color 0.15s ease;
}

.cf-ms-tile:hover,
.cf-ms-tile:focus-visible {
	transform: translateY( -3px );
	box-shadow: 0 10px 28px rgba( 15, 23, 42, 0.12 );
	border-color: var( --cf-os-accent, #2563eb );
	outline: none;
}

.cf-ms-tile__icon {
	font-size: 42px;
	width: 42px;
	height: 42px;
	line-height: 1;
	color: var( --cf-os-accent, #2563eb );
}

.cf-ms-tile__label {
	font-size: 14px;
	font-weight: 600;
	color: var( --cf-os-text, #1d2327 );
}

.cf-ms-stagebar {
	display: flex;
	align-items: center;
	gap: 16px;
	margin: 6px 0 16px;
}

.cf-ms-stagebar__title {
	margin: 0;
	font-size: 18px;
	font-weight: 700;
	color: var( --cf-os-text );
}

.cf-ms-back {
	display: inline-flex;
	align-items: center;
	gap: 4px;
}

.cf-ms-back .dashicons {
	line-height: 1;
}

.cf-set__panel .cf-os__panel + .cf-os__panel {
	margin-top: 16px;
}

.cf-set__input {
	display: block;
	width: 100%;
	margin-bottom: 16px;
	box-sizing: border-box;
}

.cf-set__textarea {
	resize: vertical;
	min-height: 80px;
	line-height: 1.5;
}

/* Branding color row. */
.cf-set__colorrow {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 12px;
}

.cf-set__swatch {
	flex: 0 0 auto;
	width: 48px;
	height: 40px;
	padding: 0;
	border: 1px solid var( --cf-os-border );
	border-radius: 10px;
	background: none;
	cursor: pointer;
}

.cf-set__hex {
	flex: 1 1 160px;
	min-width: 0;
	margin-bottom: 0;
	font-family: ui-monospace, "SFMono-Regular", Menlo, monospace;
	text-transform: uppercase;
}

/* v2.23.0 — Branding: AA contrast badge, font selects, live preview. */
.cf-set__aa {
	flex: 0 0 auto;
	font-size: 12px;
	font-weight: 700;
	padding: 4px 9px;
	border-radius: 999px;
	letter-spacing: .02em;
	white-space: nowrap;
}

.cf-set__aa--pass { background: rgba( 16, 185, 129, .15 ); color: #059669; }
.cf-set__aa--fail { background: rgba( 225, 29, 72, .15 ); color: #e11d48; }

.cf-set-font { margin-bottom: 12px; }

.cf-set__preview {
	margin: 16px 0;
	padding: 18px;
	border: 1px solid var( --cf-os-border );
	border-radius: 14px;
	background: var( --cf-os-surface );
}

.cf-set__preview-h {
	font-family: var( --cf-brand-font-heading );
	font-size: 22px;
	font-weight: 700;
	color: var( --cf-os-text );
	margin-bottom: 6px;
}

.cf-set__preview-b {
	font-family: var( --cf-brand-font-body );
	font-size: 14px;
	line-height: 1.6;
	color: var( --cf-os-text-muted );
}

.cf-set__preview-btns { display: flex; gap: 10px; margin-top: 14px; }

.cf-set__preview-btn {
	flex: 0 0 auto;
	padding: 8px 18px;
	border-radius: 10px;
	font-size: 13px;
	font-weight: 600;
	font-family: var( --cf-brand-font-body );
}

#cf-brand-preview-primary { background: var( --cf-brand-primary ); color: var( --cf-brand-on-primary ); }
#cf-brand-preview-accent { background: var( --cf-brand-accent ); color: var( --cf-brand-on-accent ); }

/* v2.26.3 — App Launcher tile builder rows. */
.cf-lt-head,
.cf-lt-row { display: grid; grid-template-columns: 1.4fr 1fr 1.2fr .9fr .9fr; gap: 8px; align-items: center; }
.cf-lt-iconwrap { display: flex; align-items: center; gap: 6px; min-width: 0; }
.cf-lt-iconwrap .cf-lt-prev { flex: 0 0 auto; color: var( --cf-os-text-muted ); }
.cf-lt-iconwrap .cf-lt-icon { margin-bottom: 0; min-width: 0; }
.cf-lt-head { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: var( --cf-os-text-muted ); margin: 8px 0 4px; padding: 0 2px; }
.cf-lt-row { margin-bottom: 8px; }
.cf-lt-row .cf-os__input { margin-bottom: 0; }
@media ( max-width: 680px ) {
	.cf-lt-head { display: none; }
	.cf-lt-row { grid-template-columns: 1fr 1fr; }
}

.cf-set__phase {
	display: inline-block;
	margin-left: 6px;
	padding: 1px 7px;
	border-radius: 999px;
	background: var( --cf-os-bg );
	border: 1px solid var( --cf-os-border );
	font-size: 10px;
	font-weight: 700;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	color: var( --cf-os-text-muted );
	vertical-align: middle;
}

/* ---- Toggle switch ---- */
.cf-toggle {
	display: flex;
	align-items: center;
	gap: 14px;
	padding: 12px 0;
	cursor: pointer;
}

.cf-toggle + .cf-toggle {
	border-top: 1px solid var( --cf-os-border );
}

.cf-toggle__text {
	flex: 1 1 auto;
	min-width: 0;
	display: flex;
	flex-direction: column;
	gap: 2px;
}

.cf-toggle__label {
	font-size: 14px;
	font-weight: 700;
	color: var( --cf-os-text );
}

.cf-toggle__help {
	font-size: 12.5px;
	line-height: 1.45;
	color: var( --cf-os-text-muted );
}

.cf-toggle__input {
	position: absolute;
	opacity: 0;
	width: 0;
	height: 0;
}

.cf-toggle__track {
	flex: 0 0 auto;
	position: relative;
	width: 42px;
	height: 24px;
	border-radius: 999px;
	background: var( --cf-os-border );
	transition: background 0.18s ease;
}

.cf-toggle__knob {
	position: absolute;
	top: 3px;
	left: 3px;
	width: 18px;
	height: 18px;
	border-radius: 50%;
	background: #ffffff;
	box-shadow: 0 1px 3px rgba( 15, 23, 42, 0.35 );
	transition: transform 0.18s ease;
}

.cf-toggle__input:checked + .cf-toggle__track {
	background: var( --cf-os-accent );
}

.cf-toggle__input:checked + .cf-toggle__track .cf-toggle__knob {
	transform: translateX( 18px );
}

.cf-toggle__input:focus-visible + .cf-toggle__track {
	box-shadow: 0 0 0 3px rgba( 37, 99, 235, 0.3 );
}

/* ---- Financial Intelligence (CRM profile) ---- */
.cf-crm__finint {
	margin: 16px 0;
	padding: 16px;
	background: var( --cf-os-surface );
	border: 1px solid var( --cf-os-border );
	border-radius: 14px;
}

.cf-crm__finint-title {
	margin: 0 0 12px;
	font-size: 12px;
	font-weight: 800;
	text-transform: uppercase;
	letter-spacing: 0.04em;
	color: var( --cf-os-text-muted );
}

.cf-crm__finstats {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 12px;
	margin-bottom: 16px;
}

.cf-crm__finstat {
	display: flex;
	flex-direction: column;
	gap: 4px;
	padding: 12px;
	border: 1px solid var( --cf-os-border );
	border-radius: 12px;
	background: var( --cf-os-bg );
}

.cf-crm__finstat-num {
	font-size: 20px;
	font-weight: 800;
	line-height: 1.1;
	color: var( --cf-os-text );
	font-variant-numeric: tabular-nums;
}

.cf-crm__finstat-label {
	font-size: 12px;
	font-weight: 600;
	color: var( --cf-os-text-muted );
}

/* ---- Budget vs Actuals bar (shared) ---- */
.cf-budget__head {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 10px;
	margin-bottom: 6px;
}

.cf-budget__label {
	font-size: 13px;
	font-weight: 600;
	color: var( --cf-os-text-muted );
}

.cf-budget__pct {
	font-size: 14px;
	font-weight: 800;
	color: var( --cf-os-text );
	font-variant-numeric: tabular-nums;
}

.cf-budget__pct--none {
	font-size: 12px;
	font-weight: 600;
	color: var( --cf-os-text-muted );
}

.cf-budget__pct.is-met {
	color: #16a34a;
}

.cf-budget__track {
	height: 10px;
	border-radius: 999px;
	background: var( --cf-os-border );
	overflow: hidden;
}

.cf-budget__fill {
	display: block;
	height: 100%;
	border-radius: 999px;
	background: var( --cf-os-accent );
	transition: width 0.4s ease;
}

.cf-budget__fill.is-met {
	background: #16a34a;
}

.cf-budget__nums {
	margin-top: 6px;
	font-size: 12px;
	color: var( --cf-os-text-muted );
	font-variant-numeric: tabular-nums;
}

.cf-budget__nums span {
	color: var( --cf-os-text-muted );
	opacity: 0.8;
}

/* Ledger chamber-wide budget bar. */
.cf-ledger__budget {
	margin-top: 16px;
	padding: 16px 18px;
	background: var( --cf-os-surface );
	border: 1px solid var( --cf-os-border );
	border-radius: 14px;
}

@media ( max-width: 480px ) {
	.cf-crm__finstats {
		grid-template-columns: 1fr;
	}
}

@media ( prefers-reduced-motion: reduce ) {
	.cf-set__tab,
	.cf-toggle__track,
	.cf-toggle__knob,
	.cf-budget__fill {
		transition: none;
	}
}

/* ---------------------------------------------------------------------------
 * Container-aware in-admin view (v1.84.2)
 *
 * When the OS renders on its dedicated wp-admin page it lives inside
 * #wpcontent, beside the collapsible admin menu and beneath the admin bar.
 * These overrides keep the shell flush within that column instead of
 * behaving like a full-bleed frontend page — and crucially re-scope every
 * fixed-position child (PWA modal, toasts) to the shell so they can never
 * cover the WordPress chrome.
 * ------------------------------------------------------------------------- */

.cf-os-admin-wrap {
	margin-right: 20px;
}

.cf-os--admin {
	position: relative;
	z-index: 1; /* below the admin bar (100100+) and menu. */
	width: auto;
	max-width: 100%;
	margin: 16px 0 24px;
	min-height: calc( 100vh - 160px );
	border-radius: 14px;
}

/* The PWA install modal is fixed on the frontend (covers the viewport); in
 * admin it must stay within the OS shell so it never eclipses the sidebar
 * or admin bar. (Toasts intentionally stay viewport-fixed — they are
 * appended to <body>, transient, and centered, so they never affect the
 * admin chrome's layout.) */
.cf-os--admin .cf-pwa {
	position: absolute;
	z-index: 40;
}

@media screen and ( max-width: 782px ) {
	/* WP collapses the admin menu to icons and stacks the bar on mobile. */
	.cf-os-admin-wrap {
		margin-right: 12px;
	}

	.cf-os--admin {
		margin: 12px 0 20px;
	}
}

/* ====================================================================== */
/* v1.97.0 — CRM Hub toolbar + L2/L3 settings panels.                      */
/* ====================================================================== */

/* CRM Hub: search + filter toolbar. */
.cf-crm__toolbar {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	align-items: center;
	margin-bottom: 14px;
}
.cf-crm__search {
	flex: 1 1 220px;
	min-width: 180px;
	padding: 10px 14px;
	border-radius: 10px;
	/* v1.98.0: theme tokens (not hardcoded dark fallbacks) so the bar tracks
	 * light / dark mode like the rest of the OS. */
	border: 1px solid var( --cf-os-border );
	background: var( --cf-os-surface );
	color: var( --cf-os-text );
	font-size: 14px;
}
.cf-crm__search::placeholder {
	color: var( --cf-os-text-muted );
}
.cf-crm__filter {
	padding: 10px 12px;
	border-radius: 10px;
	border: 1px solid var( --cf-os-border );
	background: var( --cf-os-surface );
	color: var( --cf-os-text );
	font-size: 13px;
}
.cf-crm__export {
	margin-left: auto;
	text-decoration: none;
	white-space: nowrap;
}
.cf-crm__count {
	margin: 0 0 10px;
	font-size: 12px;
	color: var( --cf-os-text-muted );
}
.cf-crm__empty-filtered {
	padding: 24px;
	text-align: center;
	color: var( --cf-os-text-muted );
}

/* Membership Tiers repeater. */
.cf-tiers__row {
	display: flex;
	gap: 8px;
	align-items: center;
	margin-bottom: 8px;
}
.cf-tiers__name { flex: 2 1 0; }
.cf-tiers__price { flex: 1 1 0; max-width: 120px; }
.cf-tiers__period { flex: 1 1 0; }

/* Notification routing fieldsets. */
.cf-route {
	border: 1px solid var( --cf-os-border );
	border-radius: 10px;
	padding: 12px 14px;
	margin: 0 0 12px;
}
.cf-route__opt,
.cf-perm__opt {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	margin: 4px 14px 4px 0;
	font-size: 13px;
	color: var( --cf-os-text );
}

/* Staff permissions. */
.cf-perm {
	border: 1px solid var( --cf-os-border );
	border-radius: 10px;
	padding: 12px 14px;
	margin: 0 0 12px;
}
.cf-perm__head { display: flex; flex-direction: column; margin-bottom: 8px; }
.cf-perm__email { font-size: 12px; color: var( --cf-os-text-muted ); }
.cf-perm__mods { display: flex; flex-wrap: wrap; }

/* v2.31.0 — per-staff "Manage Events" (edit right), set off from the module-open row. */
.cf-perm__extra { margin-top: 8px; padding-top: 8px; border-top: 1px dashed var( --cf-os-border ); }

/* Shared status line for the new settings forms. */
.cf-set__status { min-height: 1em; margin-top: 8px; font-size: 13px; font-weight: 600; }
.cf-set__status.is-error { color: #f87171; }
.cf-set__status.is-ok { color: #4ade80; }

/* ====================================================================== */
/* v1.98.0 — Event Hub category filter + L0/L1 two-column Notifications.   */
/* ====================================================================== */

/* Events Hub category filter dropdown (sits in the head toolbar). */
.cf-evt__filter {
	margin-left: auto;
	padding: 9px 12px;
	border-radius: 10px;
	border: 1px solid var( --cf-os-border );
	background: var( --cf-os-surface );
	color: var( --cf-os-text );
	font-size: 13px;
	font-weight: 600;
	cursor: pointer;
}

/* Notifications: two-column "command center" grid (L0/L1). */
.cf-notif__grid {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 18px;
	align-items: start;
}
.cf-notif__col {
	min-width: 0;
}
.cf-notif__colempty {
	margin: 4px 0 0;
	padding: 16px;
	text-align: center;
	font-size: 13px;
	color: var( --cf-os-text-muted );
	border: 1px dashed var( --cf-os-border );
	border-radius: 12px;
}

/* Support-ticket items in the Help Desk column. */
.cf-notif__ticketexcerpt {
	display: block;
	margin-top: 2px;
	font-size: 12.5px;
	color: var( --cf-os-text-muted );
}
.cf-notif__ticketstatus {
	flex: 0 0 auto;
	align-self: center;
	padding: 2px 9px;
	border-radius: 999px;
	font-size: 11px;
	font-weight: 700;
	text-transform: capitalize;
	background: var( --cf-os-bg );
	border: 1px solid var( --cf-os-border );
	color: var( --cf-os-text-muted );
}
.cf-notif__ticketstatus--open { color: #2563eb; border-color: #2563eb; }
.cf-notif__ticketstatus--resolved,
.cf-notif__ticketstatus--closed { color: #16a34a; border-color: #16a34a; }

/* Collapse to a single column on narrow viewports. */
@media ( max-width: 720px ) {
	.cf-notif__grid {
		grid-template-columns: 1fr;
	}
	.cf-evt__filter {
		margin-left: 0;
	}
}

/* ====================================================================== */
/* v1.99.0 — CRM relational panel, entity status, Add Account modal.       */
/* ====================================================================== */

.cf-crm__addaccount { white-space: nowrap; }
.cf-crm__statusselect {
	padding: 7px 10px;
	border-radius: 8px;
	border: 1px solid var( --cf-os-border );
	background: var( --cf-os-surface );
	color: var( --cf-os-text );
	font-size: 12px;
	font-weight: 700;
}

/* Contacts & Roles relational panel. */
.cf-rel { margin: 18px 0; }
.cf-rel__list { list-style: none; margin: 0 0 12px; padding: 0; border: 1px solid var( --cf-os-border ); border-radius: 12px; overflow: hidden; }
.cf-rel__row { display: flex; align-items: center; gap: 12px; padding: 10px 14px; border-top: 1px solid var( --cf-os-border ); flex-wrap: wrap; }
.cf-rel__row:first-child { border-top: 0; }
.cf-rel__who { display: flex; flex-direction: column; min-width: 0; flex: 1 1 200px; }
.cf-rel__name { font-size: 14px; }
.cf-rel__email { font-size: 12px; color: var( --cf-os-text-muted ); }
.cf-rel__type { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: var( --cf-os-text-muted ); padding: 2px 8px; border: 1px solid var( --cf-os-border ); border-radius: 999px; }
.cf-rel__type--unclaimed { color: #b45309; border-color: #b45309; }
.cf-rel__role,
.cf-rel__assigntype { padding: 7px 10px; border-radius: 8px; border: 1px solid var( --cf-os-border ); background: var( --cf-os-surface ); color: var( --cf-os-text ); font-size: 13px; }
.cf-rel__rolelabel { font-size: 12px; font-weight: 600; color: var( --cf-os-text-muted ); }
.cf-rel__invited { display: inline-flex; align-items: center; gap: 6px; flex: 1 1 100%; margin-top: 6px; }
.cf-rel__url { flex: 1 1 auto; padding: 7px 10px; border-radius: 8px; border: 1px solid var( --cf-os-border ); background: var( --cf-os-bg ); color: var( --cf-os-text ); font-size: 12px; }
.cf-rel__assign { display: flex; align-items: flex-start; gap: 8px; flex-wrap: wrap; }
.cf-rel__search-wrap { position: relative; flex: 1 1 220px; }
.cf-rel__search { width: 100%; padding: 9px 12px; border-radius: 8px; border: 1px solid var( --cf-os-border ); background: var( --cf-os-surface ); color: var( --cf-os-text ); font-size: 13px; }
.cf-rel__results { position: absolute; top: calc( 100% + 4px ); left: 0; right: 0; z-index: 20; max-height: 240px; overflow-y: auto; padding: 6px; background: var( --cf-os-surface ); border: 1px solid var( --cf-os-border ); border-radius: 10px; box-shadow: var( --cf-os-shadow ); }
.cf-rel__results[hidden] { display: none; }
.cf-rel__result { display: flex; flex-direction: column; align-items: flex-start; gap: 1px; width: 100%; padding: 8px 10px; border: 0; border-radius: 8px; background: transparent; color: var( --cf-os-text ); text-align: left; cursor: pointer; }
.cf-rel__result:hover { background: var( --cf-os-bg ); }
.cf-rel__result span { font-size: 12px; color: var( --cf-os-text-muted ); }
.cf-rel__status { font-size: 13px; font-weight: 600; align-self: center; }

/* Add Account modal. */
.cf-acct__modal { position: fixed; inset: 0; z-index: 1000; display: flex; align-items: center; justify-content: center; }
.cf-acct__modal[hidden] { display: none; }
.cf-acct__backdrop { position: absolute; inset: 0; background: rgba( 0, 0, 0, .55 ); }
.cf-acct__panel { position: relative; width: 100%; max-width: 440px; margin: 20px; padding: 22px 24px; background: var( --cf-os-surface ); border: 1px solid var( --cf-os-border ); border-radius: 18px; box-shadow: var( --cf-os-shadow ); }
.cf-acct__head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 14px; }
.cf-acct__title { margin: 0; font-size: 18px; font-weight: 800; color: var( --cf-os-text ); }
.cf-acct__x { border: 0; background: transparent; color: var( --cf-os-text-muted ); font-size: 26px; line-height: 1; cursor: pointer; }
.cf-acct__label { display: block; margin: 10px 0 5px; font-size: 13px; font-weight: 600; color: var( --cf-os-text ); }
.cf-acct__input { width: 100%; box-sizing: border-box; padding: 10px 12px; border-radius: 10px; border: 1px solid var( --cf-os-border ); background: var( --cf-os-bg ); color: var( --cf-os-text ); font-size: 14px; }
.cf-acct__hint { margin: 8px 0 0; font-size: 12px; color: var( --cf-os-text-muted ); }
.cf-acct__actions { display: flex; gap: 8px; margin-top: 16px; }
.cf-acct__status { min-height: 1em; margin-top: 10px; font-size: 13px; font-weight: 600; }

/* ====================================================================== */
/* v2.1.0 — Job Board (OS staff tab + L4 submit modal + public board).     */
/* ====================================================================== */

/* OS staff Job Board tab. */
.cf-jobs__count { display: inline-flex; min-width: 20px; height: 20px; padding: 0 6px; align-items: center; justify-content: center; border-radius: 999px; background: var( --cf-os-accent ); color: var( --cf-os-accent-ink, #fff ); font-size: 11px; font-weight: 800; vertical-align: middle; }
.cf-jobs__list { display: flex; flex-direction: column; gap: 10px; margin: 8px 0 18px; }
.cf-jobs__card { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 14px 16px; border: 1px solid var( --cf-os-border ); border-radius: 12px; background: var( --cf-os-surface ); flex-wrap: wrap; }
.cf-jobs__card-main { min-width: 0; flex: 1 1 240px; }
.cf-jobs__title { margin: 0 0 3px; font-size: 15px; font-weight: 700; color: var( --cf-os-text ); }
.cf-jobs__meta { margin: 0; font-size: 12.5px; color: var( --cf-os-text-muted ); }
.cf-jobs__sync { display: inline-block; margin-top: 6px; padding: 2px 9px; border-radius: 999px; font-size: 11px; font-weight: 700; background: var( --cf-os-bg ); border: 1px solid var( --cf-os-border ); color: var( --cf-os-text-muted ); }
.cf-jobs__sync--pending_sync { color: #b45309; border-color: #b45309; }
.cf-jobs__actions { display: flex; gap: 8px; flex: 0 0 auto; }

/* L4 submit modal + public apply modal share the slide-in pattern. */
.cf-jobs__modal, .cf-jobboard__modal { position: fixed; inset: 0; z-index: 1000; display: flex; align-items: center; justify-content: center; }
.cf-jobs__modal[hidden], .cf-jobboard__modal[hidden] { display: none; }
.cf-jobs__backdrop, .cf-jobboard__backdrop { position: absolute; inset: 0; background: rgba( 0, 0, 0, .55 ); }
.cf-jobs__panel, .cf-jobboard__panel { position: relative; width: 100%; max-width: 480px; margin: 20px; max-height: 90vh; overflow-y: auto; padding: 22px 24px; background: var( --cf-os-surface, #fff ); border: 1px solid var( --cf-os-border, #e2e8f0 ); border-radius: 18px; box-shadow: 0 12px 34px rgba( 0, 0, 0, .35 ); }
.cf-jobs__panel-head, .cf-jobboard__panel-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px; }
.cf-jobs__panel-head h3, .cf-jobboard__panel-head h3 { margin: 0; font-size: 18px; font-weight: 800; color: var( --cf-os-text, #1e293b ); }
.cf-jobs__x, .cf-jobboard__x { border: 0; background: transparent; color: var( --cf-os-text-muted, #64748b ); font-size: 26px; line-height: 1; cursor: pointer; }
.cf-jobs__label, .cf-jobboard__label { display: block; margin: 10px 0 0; font-size: 13px; font-weight: 600; color: var( --cf-os-text, #1e293b ); }
.cf-jobs__input, .cf-jobboard__input, .cf-jobboard__file { width: 100%; box-sizing: border-box; margin-top: 5px; padding: 10px 12px; border-radius: 10px; border: 1px solid var( --cf-os-border, #e2e8f0 ); background: var( --cf-os-bg, #f8fafc ); color: var( --cf-os-text, #1e293b ); font-size: 14px; }
.cf-jobs__row, .cf-jobboard__row { display: flex; gap: 12px; flex-wrap: wrap; }
.cf-jobs__row > .cf-jobs__label, .cf-jobboard__row > .cf-jobboard__label { flex: 1 1 160px; }
.cf-jobs__hint { margin: 10px 0 0; font-size: 12px; color: var( --cf-os-text-muted, #64748b ); }
.cf-jobs__actions, .cf-jobboard__actions { display: flex; gap: 8px; margin-top: 16px; }
.cf-jobs__status, .cf-jobboard__status { min-height: 1em; margin-top: 10px; font-size: 13px; font-weight: 600; }

/* Public [cf_job_board] listing. */
.cf-jobboard { --jb-accent: var( --cf-os-accent, #0d9488 ); margin: 0 auto 28px; color: var( --cf-os-text, #1e293b ); }
.cf-jobboard__empty { padding: 28px; text-align: center; color: var( --cf-os-text-muted, #64748b ); font-style: italic; }
.cf-jobboard__list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 14px; }
.cf-jobboard__item { display: flex; align-items: flex-start; justify-content: space-between; gap: 18px; padding: 18px 20px; border: 1px solid var( --cf-os-border, #e2e8f0 ); border-radius: 14px; background: var( --cf-os-surface, #fff ); flex-wrap: wrap; }
.cf-jobboard__title { margin: 0 0 4px; font-size: 18px; font-weight: 800; }
.cf-jobboard__meta { display: flex; flex-wrap: wrap; gap: 10px; margin: 0 0 8px; font-size: 13px; color: var( --cf-os-text-muted, #64748b ); }
.cf-jobboard__emp { font-weight: 700; color: var( --cf-os-text, #1e293b ); }
.cf-jobboard__type { padding: 2px 9px; border-radius: 999px; background: var( --cf-os-bg, #f1f5f9 ); border: 1px solid var( --cf-os-border, #e2e8f0 ); font-weight: 700; font-size: 11px; text-transform: uppercase; letter-spacing: .04em; }
.cf-jobboard__desc { font-size: 14px; line-height: 1.55; }
.cf-jobboard__apply { flex: 0 0 auto; align-self: center; display: inline-block; padding: 10px 20px; border: 0; border-radius: 10px; background: var( --jb-accent ); color: #fff; font-size: 14px; font-weight: 700; text-decoration: none; cursor: pointer; }
.cf-jobboard__file { padding: 8px 10px; }
@media ( max-width: 640px ) { .cf-jobboard__apply { width: 100%; text-align: center; margin-top: 6px; } }

/* ====================================================================== */
/* v2.4.0 — L2 Payments & Billing (Stripe Connect OAuth).                   */
/* ====================================================================== */
.cf-pay { max-width: 640px; }
.cf-pay__view-head, .cf-os__view-head { margin-bottom: 16px; }
.cf-pay .cf-os__view-title, .cf-pay__view-head h2 { margin: 0 0 4px; }
.cf-os__view-sub { margin: 0; font-size: 13.5px; color: var( --cf-os-text-muted ); }
.cf-pay__card { background: var( --cf-os-surface ); border: 1px solid var( --cf-os-border ); border-radius: 16px; padding: 26px; text-align: center; }
.cf-pay__card--connected { text-align: left; }
.cf-pay__stripe-mark { display: inline-block; padding: 6px 16px; border-radius: 8px; background: #635bff; color: #fff; font-weight: 800; font-size: 15px; letter-spacing: .02em; margin-bottom: 16px; }
.cf-pay__headline { margin: 0 0 8px; font-size: 18px; font-weight: 800; color: var( --cf-os-text ); }
.cf-pay__lede { margin: 0 auto 20px; max-width: 440px; font-size: 14px; line-height: 1.55; color: var( --cf-os-text-muted ); }
.cf-pay__connect { display: inline-block; padding: 12px 26px; border-radius: 11px; background: #635bff; color: #fff; font-size: 15px; font-weight: 700; text-decoration: none; transition: filter .2s, transform .05s; }
.cf-pay__connect:hover { filter: brightness( 1.08 ); }
.cf-pay__connect:active { transform: translateY( 1px ); }
.cf-pay__badge { display: inline-flex; align-items: center; gap: 8px; padding: 6px 14px; border-radius: 999px; background: rgba( 22, 163, 74, .12 ); color: #16a34a; border: 1px solid #16a34a; font-size: 13px; font-weight: 800; }
.cf-pay__dot { width: 8px; height: 8px; border-radius: 50%; background: #16a34a; box-shadow: 0 0 0 3px rgba( 22, 163, 74, .25 ); }
.cf-pay__meta { margin: 18px 0; }
.cf-pay__meta dt { font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: var( --cf-os-text-muted ); margin: 0 0 4px; }
.cf-pay__acct { margin: 0; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 14px; color: var( --cf-os-text ); word-break: break-all; }
.cf-pay__disconnect { padding: 9px 18px; border: 1px solid var( --cf-os-border ); border-radius: 10px; background: transparent; color: #dc2626; font-size: 13.5px; font-weight: 700; cursor: pointer; transition: background .2s, border-color .2s; }
.cf-pay__disconnect:hover { background: rgba( 220, 38, 38, .08 ); border-color: #dc2626; }
.cf-pay__disconnect:disabled { opacity: .6; cursor: progress; }
.cf-pay__status { min-height: 1em; margin: 12px 0 0; font-size: 13px; font-weight: 600; color: var( --cf-os-text-muted ); }

/* ====================================================================== */
/* v2.5.0 — L2 Events app (dashboard + create slide-over).                 */
/* ====================================================================== */
.cf-evt .cf-os__view-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 16px; }
.cf-evt__new { padding: 9px 16px; border: 0; border-radius: 11px; background: var( --cf-os-accent ); color: #fff; font-size: 13.5px; font-weight: 700; cursor: pointer; }
.cf-evt__new:hover { filter: brightness( 1.08 ); }
.cf-evt__list { display: flex; flex-direction: column; gap: 10px; }
.cf-evt__card { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 14px 16px; border: 1px solid var( --cf-os-border ); border-radius: 12px; background: var( --cf-os-surface ); flex-wrap: wrap; }
.cf-evt__card-title { margin: 0 0 3px; font-size: 15px; font-weight: 700; color: var( --cf-os-text ); }
.cf-evt__card-meta { margin: 0 0 4px; font-size: 12.5px; color: var( --cf-os-text-muted ); }
.cf-evt__card-stats { margin: 0; font-size: 12px; color: var( --cf-os-text-muted ); }
.cf-evt__card-link { flex: 0 0 auto; font-size: 13px; font-weight: 700; color: var( --cf-os-accent ); text-decoration: none; white-space: nowrap; }

.cf-evt__modal { position: fixed; inset: 0; z-index: 1000; display: flex; align-items: center; justify-content: center; }
.cf-evt__modal[hidden] { display: none; }
.cf-evt__backdrop { position: absolute; inset: 0; background: rgba( 0, 0, 0, .55 ); }
.cf-evt__panel { position: relative; width: 100%; max-width: 480px; margin: 20px; max-height: 90vh; overflow-y: auto; padding: 22px 24px; background: var( --cf-os-surface, #fff ); border: 1px solid var( --cf-os-border, #e2e8f0 ); border-radius: 18px; box-shadow: 0 12px 34px rgba( 0, 0, 0, .35 ); }
.cf-evt__panel-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px; }
.cf-evt__panel-head h3 { margin: 0; font-size: 18px; font-weight: 800; color: var( --cf-os-text ); }
.cf-evt__x { border: 0; background: transparent; color: var( --cf-os-text-muted ); font-size: 26px; line-height: 1; cursor: pointer; }
.cf-evt__label { display: block; margin: 10px 0 0; font-size: 13px; font-weight: 600; color: var( --cf-os-text ); }
.cf-evt__input { width: 100%; box-sizing: border-box; margin-top: 5px; padding: 10px 12px; border-radius: 10px; border: 1px solid var( --cf-os-border ); background: var( --cf-os-bg ); color: var( --cf-os-text ); font-size: 14px; }
.cf-evt__row { display: flex; gap: 12px; flex-wrap: wrap; }
.cf-evt__row > .cf-evt__label { flex: 1 1 150px; }
.cf-evt__actions { margin-top: 16px; }
.cf-evt__save { width: 100%; padding: 12px; border: 0; border-radius: 11px; background: var( --cf-os-accent ); color: #fff; font-size: 14.5px; font-weight: 800; cursor: pointer; }
.cf-evt__save:disabled { opacity: .6; cursor: progress; }
.cf-evt__status { min-height: 1em; margin: 10px 0 0; font-size: 13px; font-weight: 600; }
