/*
 * JoomForge Manager — customer-facing design system.
 * Scoped entirely under .joomforge so it never leaks into the host site's
 * own template styles.
 */

.joomforge {
	--jf-color-primary: #2563eb;
	--jf-color-primary-hover: #1d4ed8;
	--jf-color-on-primary: #ffffff;
	--jf-color-secondary: #3b82f6;
	--jf-color-accent: #ea580c;
	--jf-color-accent-hover: #c2410c;
	--jf-color-on-accent: #14110d;
	--jf-color-background: #f8fafc;
	--jf-color-foreground: #1e293b;
	--jf-color-card: #ffffff;
	--jf-color-card-foreground: #1e293b;
	--jf-color-muted: #e9eff8;
	--jf-color-muted-foreground: #475569;
	--jf-color-border: #e2e8f0;
	--jf-color-ring: #2563eb;
	--jf-color-success: #16a34a;
	--jf-color-on-success: #ffffff;
	--jf-color-warning: #d97706;
	--jf-color-on-warning: #14110d;
	--jf-color-danger: #dc2626;
	--jf-color-on-danger: #ffffff;
	--jf-color-info: #0284c7;
	--jf-color-on-info: #ffffff;
	--jf-color-neutral: #64748b;
	--jf-color-on-neutral: #ffffff;

	--jf-font-sans: "Plus Jakarta Sans", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
	--jf-font-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;

	--jf-space-1: 4px;
	--jf-space-2: 8px;
	--jf-space-3: 12px;
	--jf-space-4: 16px;
	--jf-space-5: 20px;
	--jf-space-6: 24px;
	--jf-space-8: 32px;
	--jf-space-12: 48px;
	--jf-space-16: 64px;

	--jf-radius-sm: 8px;
	--jf-radius-md: 12px;
	--jf-radius-lg: 20px;
	--jf-radius-pill: 999px;

	--jf-shadow-sm: 0 1px 2px rgba(15, 23, 42, 0.06), 0 1px 1px rgba(15, 23, 42, 0.04);
	--jf-shadow-md: 0 8px 24px rgba(15, 23, 42, 0.08), 0 2px 6px rgba(15, 23, 42, 0.06);
	--jf-shadow-lg: 0 20px 48px rgba(15, 23, 42, 0.14), 0 4px 12px rgba(15, 23, 42, 0.08);

	--jf-duration-fast: 120ms;
	--jf-duration-base: 200ms;
	--jf-ease: cubic-bezier(0.4, 0, 0.2, 1);

	font-family: var(--jf-font-sans);
	color: var(--jf-color-foreground);
	line-height: 1.5;
	font-size: 16px;
}

/*
 * Deliberately no @media (prefers-color-scheme: dark) block: this component
 * renders inside an arbitrary, permanently-light third-party site template
 * (no dark theme of its own), so auto-switching to a dark palette on the
 * visitor's OS preference produced a broken split-personality page — dark
 * cards next to the template's own light chrome, with several elements
 * (bare headings, button text) never designed against a dark ground losing
 * contrast entirely. Matching the host template's fixed light theme
 * consistently matters more here than honouring OS dark-mode preference.
 */

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

/*
 * This site's active template (Shaper Helix Ultimate) renders a bare
 * component route inside #sp-component > .sp-column with no Bootstrap
 * .container and no horizontal padding of its own — every page was
 * rendering flush against the viewport edge. This is the page-level
 * safety margin; it's additive with whatever padding the host page
 * elsewhere provides, so it's harmless on templates that already add their
 * own gutter.
 */
.joomforge {
	display: block;
	padding-inline: clamp(16px, 4vw, 32px);
	padding-block: var(--jf-space-6);
}

/*
 * Baseline icon size: an inline <svg> with no width/height attributes and no
 * CSS constraint renders at the browser's unconstrained default (often
 * huge — this is what produced the oversized broken-looking icons in
 * Downloads/My Subscriptions). Every inline icon in these templates relies
 * on this rule; more specific selectors below (each two classes deep, so
 * higher specificity) override it for icons that are deliberately larger,
 * like empty-state icons.
 */
.joomforge svg {
	width: 1.15em;
	height: 1.15em;
	flex-shrink: 0;
}

.joomforge h2,
.joomforge h3,
.joomforge h4 {
	font-family: var(--jf-font-sans);
	font-weight: 700;
	text-wrap: balance;
	color: var(--jf-color-foreground);
}

.joomforge h2 {
	font-size: 1.75rem;
	margin-top: var(--jf-space-8);
	margin-bottom: var(--jf-space-6);
}

.joomforge h2:first-child {
	margin-top: 0;
}

.joomforge h3 {
	font-size: 1.125rem;
	margin-top: 0;
	margin-bottom: var(--jf-space-2);
}

.joomforge .jf-eyebrow {
	text-transform: uppercase;
	letter-spacing: 0.08em;
	font-size: 0.75rem;
	font-weight: 700;
	color: var(--jf-color-primary);
}

.joomforge a {
	color: var(--jf-color-primary);
}

.joomforge .jf-muted {
	color: var(--jf-color-muted-foreground);
}

/* ---- Buttons ---------------------------------------------------------- */

.joomforge .btn {
	font-family: var(--jf-font-sans);
	font-weight: 600;
	font-size: 0.9375rem;
	border-radius: var(--jf-radius-sm);
	min-height: 38px;
	line-height: 1.2;
	padding-inline: var(--jf-space-3);
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: var(--jf-space-2);
	cursor: pointer;
	transition: background-color var(--jf-duration-base) var(--jf-ease),
		border-color var(--jf-duration-base) var(--jf-ease),
		transform var(--jf-duration-fast) var(--jf-ease),
		box-shadow var(--jf-duration-base) var(--jf-ease);
}

.joomforge .btn:active {
	transform: translateY(1px);
}

.joomforge .btn:focus-visible {
	outline: 2px solid var(--jf-color-ring);
	outline-offset: 2px;
}

.joomforge .btn-primary {
	background-color: var(--jf-color-primary);
	border-color: var(--jf-color-primary);
	color: var(--jf-color-on-primary);
}

.joomforge .btn-primary:hover {
	background-color: var(--jf-color-primary-hover);
	border-color: var(--jf-color-primary-hover);
	color: var(--jf-color-on-primary);
}

.joomforge .btn-secondary {
	background-color: var(--jf-color-muted);
	border-color: var(--jf-color-border);
	color: var(--jf-color-foreground);
}

.joomforge .btn-secondary:hover {
	background-color: var(--jf-color-border);
	color: var(--jf-color-foreground);
}

.joomforge .btn-outline-primary {
	background-color: transparent;
	border: 1.5px solid var(--jf-color-primary);
	color: var(--jf-color-primary);
}

.joomforge .btn-outline-primary:hover {
	background-color: var(--jf-color-primary);
	color: var(--jf-color-on-primary);
}

.joomforge .btn-outline-secondary {
	background-color: transparent;
	border: 1.5px solid var(--jf-color-border);
	color: var(--jf-color-muted-foreground);
}

.joomforge .btn-outline-secondary:hover {
	background-color: var(--jf-color-muted);
	color: var(--jf-color-foreground);
}

.joomforge .btn-outline-danger {
	background-color: transparent;
	border: 1.5px solid var(--jf-color-danger);
	color: var(--jf-color-danger);
	min-height: 36px;
}

.joomforge .btn-outline-danger:hover {
	background-color: var(--jf-color-danger);
	color: var(--jf-color-on-danger);
}

.joomforge .btn-sm {
	min-height: 36px;
	font-size: 0.875rem;
	padding-inline: var(--jf-space-3);
}

.joomforge .jf-btn-accent {
	background-color: var(--jf-color-accent);
	border-color: var(--jf-color-accent);
	color: var(--jf-color-on-accent);
}

.joomforge .jf-btn-accent:hover {
	background-color: var(--jf-color-accent-hover);
	border-color: var(--jf-color-accent-hover);
	color: var(--jf-color-on-accent);
}

@media (prefers-reduced-motion: reduce) {
	.joomforge * {
		transition-duration: 0.01ms !important;
		animation-duration: 0.01ms !important;
	}
}

/* ---- Cards ------------------------------------------------------------- */

.joomforge .card {
	background-color: var(--jf-color-card);
	color: var(--jf-color-card-foreground);
	border: 1px solid var(--jf-color-border);
	border-radius: var(--jf-radius-lg);
	box-shadow: var(--jf-shadow-sm);
	transition: box-shadow var(--jf-duration-base) var(--jf-ease), transform var(--jf-duration-base) var(--jf-ease);
}

.joomforge .card-header {
	background-color: transparent;
	border-bottom: 1px solid var(--jf-color-border);
	font-weight: 600;
}

.joomforge .jf-card-interactive:hover,
.joomforge a.list-group-item-action:hover {
	box-shadow: var(--jf-shadow-md);
	transform: translateY(-2px);
}

/* ---- Badges / status pills ---------------------------------------------- */

.joomforge .jf-badge {
	display: inline-flex;
	align-items: center;
	gap: var(--jf-space-1);
	padding: var(--jf-space-1) var(--jf-space-3);
	border-radius: var(--jf-radius-pill);
	font-size: 0.75rem;
	font-weight: 700;
	letter-spacing: 0.02em;
	white-space: nowrap;
}

.joomforge .jf-badge::before {
	content: "";
	width: 6px;
	height: 6px;
	border-radius: 50%;
	background-color: currentColor;
	flex-shrink: 0;
}

.joomforge .jf-badge-success {
	background-color: color-mix(in srgb, var(--jf-color-success) 16%, transparent);
	color: var(--jf-color-success);
}

.joomforge .jf-badge-warning {
	background-color: color-mix(in srgb, var(--jf-color-warning) 18%, transparent);
	color: var(--jf-color-warning);
}

.joomforge .jf-badge-danger {
	background-color: color-mix(in srgb, var(--jf-color-danger) 16%, transparent);
	color: var(--jf-color-danger);
}

.joomforge .jf-badge-info {
	background-color: color-mix(in srgb, var(--jf-color-info) 16%, transparent);
	color: var(--jf-color-info);
}

.joomforge .jf-badge-neutral {
	background-color: var(--jf-color-muted);
	color: var(--jf-color-muted-foreground);
}

/* ---- Empty states -------------------------------------------------------- */

.joomforge .jf-empty-state {
	display: flex;
	flex-direction: column;
	align-items: center;
	text-align: center;
	gap: var(--jf-space-3);
	padding: var(--jf-space-12) var(--jf-space-6);
	border: 1px dashed var(--jf-color-border);
	border-radius: var(--jf-radius-lg);
	background-color: var(--jf-color-muted);
}

.joomforge .jf-empty-state__icon {
	width: 56px;
	height: 56px;
	border-radius: 50%;
	background-color: var(--jf-color-card);
	color: var(--jf-color-primary);
	display: flex;
	align-items: center;
	justify-content: center;
	box-shadow: var(--jf-shadow-sm);
}

.joomforge .jf-empty-state__icon svg {
	width: 26px;
	height: 26px;
}

.joomforge .jf-empty-state p {
	max-width: 42ch;
	color: var(--jf-color-muted-foreground);
	margin: 0;
}

/* ---- Back link (detail pages reached from a list) ------------------------ */

.joomforge .jf-back-link {
	display: inline-flex;
	align-items: center;
	gap: var(--jf-space-1);
	font-size: 0.875rem;
	font-weight: 600;
	color: var(--jf-color-muted-foreground);
}

.joomforge .jf-back-link:hover {
	color: var(--jf-color-primary);
}

.joomforge .jf-back-link svg {
	width: 16px;
	height: 16px;
}

.joomforge .jf-back-link + h2 {
	margin-top: var(--jf-space-3);
}

/* ---- Forms --------------------------------------------------------------- */

.joomforge .form-label {
	font-weight: 600;
	font-size: 0.875rem;
	margin-bottom: var(--jf-space-1);
	display: inline-block;
}

.joomforge .form-control,
.joomforge .form-select {
	border: 1.5px solid var(--jf-color-border);
	border-radius: var(--jf-radius-sm);
	min-height: 44px;
	background-color: var(--jf-color-card);
	color: var(--jf-color-foreground);
	transition: border-color var(--jf-duration-base) var(--jf-ease), box-shadow var(--jf-duration-base) var(--jf-ease);
}

.joomforge .form-control:focus,
.joomforge .form-select:focus {
	border-color: var(--jf-color-ring);
	box-shadow: 0 0 0 3px color-mix(in srgb, var(--jf-color-ring) 25%, transparent);
}

.joomforge .jf-help-text {
	font-size: 0.8125rem;
	color: var(--jf-color-muted-foreground);
	margin-top: var(--jf-space-1);
}

.joomforge .font-monospace,
.joomforge .jf-mono {
	font-family: var(--jf-font-mono);
}

/* ---- Pricing hero + plan cards -------------------------------------------- */

.joomforge .jf-pricing-hero {
	text-align: center;
	padding: var(--jf-space-12) var(--jf-space-4) var(--jf-space-8);
	border-radius: var(--jf-radius-lg);
	background: linear-gradient(135deg, color-mix(in srgb, var(--jf-color-primary) 10%, var(--jf-color-background)), color-mix(in srgb, var(--jf-color-secondary) 6%, var(--jf-color-background)));
	margin-bottom: var(--jf-space-8);
}

.joomforge .jf-pricing-hero h1 {
	font-family: var(--jf-font-sans);
	font-weight: 800;
	font-size: clamp(1.75rem, 3vw, 2.5rem);
	text-wrap: balance;
	margin-bottom: var(--jf-space-2);
}

.joomforge .jf-pricing-hero p {
	color: var(--jf-color-muted-foreground);
	max-width: 56ch;
	margin: 0 auto;
}

.joomforge .jf-plan-card {
	position: relative;
	overflow: hidden;
}

.joomforge .jf-plan-card--recommended {
	border-color: var(--jf-color-primary);
	background-color: color-mix(in srgb, var(--jf-color-card) 78%, transparent);
	backdrop-filter: blur(16px);
	-webkit-backdrop-filter: blur(16px);
	box-shadow: var(--jf-shadow-lg);
}

.joomforge .jf-plan-card--free .jf-plan-price {
	color: var(--jf-color-success);
}

.joomforge .jf-plan-badge {
	position: absolute;
	top: var(--jf-space-4);
	right: var(--jf-space-4);
}

.joomforge .jf-plan-price {
	font-size: 2.25rem;
	font-weight: 800;
	font-variant-numeric: tabular-nums;
	display: flex;
	align-items: baseline;
	gap: var(--jf-space-1);
}

.joomforge .jf-plan-price small {
	font-size: 0.9375rem;
	font-weight: 500;
	color: var(--jf-color-muted-foreground);
}

.joomforge .jf-plan-price__tax-note {
	flex-basis: 100%;
	font-size: 0.75rem;
	font-weight: 500;
}

.joomforge .jf-feature-list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: var(--jf-space-2);
}

.joomforge .jf-feature-list li {
	display: flex;
	align-items: flex-start;
	gap: var(--jf-space-2);
}

.joomforge .jf-feature-list svg {
	flex-shrink: 0;
	width: 18px;
	height: 18px;
	margin-top: 3px;
	color: var(--jf-color-success);
}

/* ---- Plans module (mod_joomforge_plans) --------------------------------- */

.joomforge .jf-plans-module__heading {
	font-family: var(--jf-font-sans);
	font-weight: 800;
	font-size: 1.375rem;
	text-wrap: balance;
	margin-bottom: var(--jf-space-5);
}

.joomforge .jf-plans-module__grid {
	display: grid;
	grid-template-columns: repeat(var(--jf-plans-columns, 3), minmax(0, 1fr));
	gap: var(--jf-space-5);
	align-items: stretch;
}

.joomforge .jf-plan-tile {
	position: relative;
	overflow: hidden;
}

.joomforge .jf-plan-tile--recommended {
	background-color: var(--jf-color-foreground);
	border-color: var(--jf-color-foreground);
	box-shadow: var(--jf-shadow-lg);
}

.joomforge .jf-plan-tile--recommended::before {
	content: "";
	position: absolute;
	top: -20px;
	right: -20px;
	width: 110px;
	height: 110px;
	background: color-mix(in srgb, var(--jf-color-foreground) 70%, var(--jf-color-primary) 30%);
	clip-path: polygon(30% 0, 100% 0, 70% 100%, 0% 100%);
}

.joomforge .jf-plan-tile__badge {
	position: relative;
	z-index: 1;
	display: inline-flex;
	align-self: flex-start;
	background-color: var(--jf-color-accent);
	color: var(--jf-color-on-accent);
	font-size: 0.75rem;
	font-weight: 700;
	padding: var(--jf-space-1) var(--jf-space-3);
	border-radius: var(--jf-radius-pill);
	margin-bottom: var(--jf-space-3);
}

.joomforge .jf-plan-tile__title {
	position: relative;
	z-index: 1;
	font-family: var(--jf-font-sans);
	font-weight: 700;
	font-size: 1.125rem;
	margin-bottom: var(--jf-space-2);
}

.joomforge .jf-plan-tile--recommended .jf-plan-tile__title {
	color: var(--jf-color-on-primary);
}

.joomforge .jf-plan-tile__price {
	position: relative;
	z-index: 1;
	font-size: 2rem;
	font-weight: 800;
	font-variant-numeric: tabular-nums;
	display: flex;
	align-items: baseline;
	gap: var(--jf-space-1);
	margin-bottom: var(--jf-space-1);
}

.joomforge .jf-plan-tile--recommended .jf-plan-tile__price {
	color: var(--jf-color-on-primary);
}

.joomforge .jf-plan-tile__price small {
	font-size: 0.875rem;
	font-weight: 500;
	color: var(--jf-color-muted-foreground);
}

.joomforge .jf-plan-tile--recommended .jf-plan-tile__price small {
	color: color-mix(in srgb, var(--jf-color-on-primary) 70%, transparent);
}

.joomforge .jf-plan-tile__meta {
	position: relative;
	z-index: 1;
	font-size: 0.8125rem;
	color: var(--jf-color-muted-foreground);
	margin-bottom: var(--jf-space-4);
}

.joomforge .jf-plan-tile--recommended .jf-plan-tile__meta {
	color: color-mix(in srgb, var(--jf-color-on-primary) 70%, transparent);
}

.joomforge .jf-plan-tile__divider {
	position: relative;
	z-index: 1;
	height: 1px;
	background-color: var(--jf-color-border);
	margin-bottom: var(--jf-space-4);
}

.joomforge .jf-plan-tile--recommended .jf-plan-tile__divider {
	background-color: color-mix(in srgb, var(--jf-color-on-primary) 20%, transparent);
}

.joomforge .jf-plan-tile__features {
	position: relative;
	z-index: 1;
	list-style: none;
	margin: 0 0 var(--jf-space-5);
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: var(--jf-space-3);
}

.joomforge .jf-plan-tile__features li {
	display: flex;
	align-items: flex-start;
	gap: var(--jf-space-2);
	font-size: 0.9375rem;
}

.joomforge .jf-plan-tile--recommended .jf-plan-tile__features li {
	color: color-mix(in srgb, var(--jf-color-on-primary) 90%, transparent);
}

.joomforge .jf-plan-tile__marker {
	flex-shrink: 0;
	width: 10px;
	height: 10px;
	margin-top: 5px;
	background-color: var(--jf-color-accent);
	clip-path: polygon(20% 0, 100% 0, 80% 100%, 0% 100%);
}

.joomforge .jf-plan-tile__cta {
	position: relative;
	z-index: 1;
	width: 100%;
	background-color: var(--jf-color-accent);
	border-color: var(--jf-color-accent);
	color: var(--jf-color-on-accent);
}

.joomforge .jf-plan-tile__cta:hover {
	background-color: var(--jf-color-accent-hover);
	border-color: var(--jf-color-accent-hover);
	color: var(--jf-color-on-accent);
}

.joomforge .jf-plan-tile__cta--outline {
	background-color: transparent;
	border: 1.5px solid var(--jf-color-foreground);
	color: var(--jf-color-foreground);
}

.joomforge .jf-plan-tile--recommended .jf-plan-tile__cta--outline {
	border-color: var(--jf-color-on-primary);
	color: var(--jf-color-on-primary);
}

.joomforge .jf-plan-tile__cta--outline:hover {
	background-color: var(--jf-color-foreground);
	color: var(--jf-color-on-primary);
}

/* ---- Slot usage (My Sites) ------------------------------------------------ */

.joomforge .jf-slot-meter {
	width: 120px;
	height: 6px;
	border-radius: var(--jf-radius-pill);
	background-color: var(--jf-color-border);
	overflow: hidden;
}

.joomforge .jf-slot-meter__fill {
	height: 100%;
	background-color: var(--jf-color-primary);
	border-radius: var(--jf-radius-pill);
	transition: width var(--jf-duration-base) var(--jf-ease);
}

.joomforge .jf-slot-meter__fill.jf-slot-meter__fill--full {
	background-color: var(--jf-color-warning);
}

/* ---- Accordion (Downloads) ------------------------------------------------ */

.joomforge .accordion-item {
	border: 1px solid var(--jf-color-border);
	border-radius: var(--jf-radius-md) !important;
	overflow: hidden;
	margin-bottom: var(--jf-space-3);
}

.joomforge .accordion-button {
	font-weight: 600;
	background-color: var(--jf-color-card);
	color: var(--jf-color-foreground);
}

.joomforge .accordion-button:not(.collapsed) {
	background-color: var(--jf-color-muted);
	color: var(--jf-color-foreground);
	box-shadow: none;
}

.joomforge .accordion-button:focus {
	box-shadow: 0 0 0 3px color-mix(in srgb, var(--jf-color-ring) 25%, transparent);
}

/* ---- Ticket list ------------------------------------------------------------ */

.joomforge .jf-ticket-row {
	display: flex;
	flex-direction: row;
	align-items: center;
	gap: var(--jf-space-4);
	padding: var(--jf-space-4) var(--jf-space-5);
	color: var(--jf-color-foreground);
}

.joomforge .jf-ticket-row:hover {
	color: var(--jf-color-foreground);
}

.joomforge .jf-ticket-row__icon {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 40px;
	height: 40px;
	border-radius: var(--jf-radius-md);
	background-color: var(--jf-color-muted);
	color: var(--jf-color-muted-foreground);
	flex-shrink: 0;
}

.joomforge .jf-ticket-row__icon svg {
	width: 20px;
	height: 20px;
}

.joomforge .jf-ticket-row__main {
	display: flex;
	flex-direction: column;
	gap: var(--jf-space-1);
	flex: 1 1 auto;
	min-width: 0;
}

.joomforge .jf-ticket-row__subject {
	font-weight: 700;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.joomforge .jf-ticket-row__meta {
	display: flex;
	flex-direction: column;
	align-items: flex-end;
	gap: var(--jf-space-1);
	flex-shrink: 0;
}

.joomforge .jf-ticket-row__date {
	font-size: 0.8125rem;
	white-space: nowrap;
}

/* ---- Ticket thread --------------------------------------------------------- */

.joomforge .jf-ticket-header {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	flex-wrap: wrap;
	gap: var(--jf-space-3);
	margin-bottom: var(--jf-space-6);
}

.joomforge .jf-chat {
	display: flex;
	flex-direction: column;
	gap: var(--jf-space-4);
	margin-bottom: var(--jf-space-4);
	max-width: 760px;
}

.joomforge .jf-chat__msg {
	display: flex;
	align-items: flex-start;
	gap: var(--jf-space-3);
	max-width: 85%;
}

.joomforge .jf-chat__msg--mine {
	flex-direction: row-reverse;
	align-self: flex-end;
}

.joomforge .jf-chat__avatar {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 36px;
	height: 36px;
	border-radius: 50%;
	background-color: var(--jf-color-muted);
	color: var(--jf-color-muted-foreground);
	font-weight: 700;
	font-size: 0.875rem;
	flex-shrink: 0;
	overflow: hidden;
}

.joomforge .jf-chat__avatar img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.joomforge .jf-chat__msg--mine .jf-chat__avatar {
	background-color: var(--jf-color-primary);
	color: var(--jf-color-on-primary);
}

.joomforge .jf-chat__bubble {
	border-radius: var(--jf-radius-lg);
	border: 1px solid var(--jf-color-border);
	background-color: var(--jf-color-card);
	padding: var(--jf-space-3) var(--jf-space-4);
	min-width: 0;
}

.joomforge .jf-chat__msg--mine .jf-chat__bubble {
	border-color: var(--jf-color-primary);
	background-color: var(--jf-color-primary);
	color: var(--jf-color-on-primary);
}

.joomforge .jf-chat__bubble-header {
	display: flex;
	align-items: baseline;
	gap: var(--jf-space-2);
	margin-bottom: var(--jf-space-1);
	font-size: 0.8125rem;
}

.joomforge .jf-chat__author {
	font-weight: 700;
}

.joomforge .jf-chat__time {
	color: var(--jf-color-muted-foreground);
}

.joomforge .jf-chat__msg--mine .jf-chat__time {
	color: color-mix(in srgb, var(--jf-color-on-primary) 75%, transparent);
}

.joomforge .jf-chat__text {
	margin: 0;
	white-space: pre-wrap;
	overflow-wrap: break-word;
}

.joomforge .jf-attachment {
	display: inline-flex;
	align-items: center;
	gap: var(--jf-space-1);
	font-size: 0.875rem;
	margin-top: var(--jf-space-2);
}

.joomforge .jf-attachment svg {
	width: 16px;
	height: 16px;
	color: var(--jf-color-muted-foreground);
}

.joomforge .jf-chat__msg--mine .jf-attachment,
.joomforge .jf-chat__msg--mine .jf-attachment a {
	color: var(--jf-color-on-primary);
}

.joomforge .jf-chat__msg--mine .jf-attachment svg {
	color: color-mix(in srgb, var(--jf-color-on-primary) 80%, transparent);
}

/* ---- Chat composer ---------------------------------------------------------- */

.joomforge .jf-chat-composer {
	border: 1px solid var(--jf-color-border);
	border-radius: var(--jf-radius-lg);
	background-color: var(--jf-color-card);
	padding: var(--jf-space-3);
	max-width: 760px;
}

.joomforge .jf-chat-composer__input {
	border: none;
	resize: vertical;
	padding: var(--jf-space-2) var(--jf-space-2) 0;
}

.joomforge .jf-chat-composer__input:focus {
	box-shadow: none;
}

.joomforge .jf-chat-composer__toolbar {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--jf-space-3);
	padding-top: var(--jf-space-2);
}

.joomforge .jf-chat-composer__attach {
	display: inline-flex;
	align-items: center;
	gap: var(--jf-space-1);
	font-size: 0.8125rem;
	font-weight: 600;
	color: var(--jf-color-muted-foreground);
	cursor: pointer;
	min-width: 0;
}

.joomforge .jf-chat-composer__attach:hover {
	color: var(--jf-color-primary);
}

.joomforge .jf-chat-composer__attach svg {
	width: 16px;
	height: 16px;
	flex-shrink: 0;
}

.joomforge .jf-chat-composer__attach span {
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
	max-width: 22ch;
}

/* ---- Checkout result -------------------------------------------------------- */

.joomforge .jf-result-panel {
	max-width: 480px;
	margin: 0 auto;
	text-align: center;
	padding: var(--jf-space-12) var(--jf-space-6);
}

.joomforge .jf-result-panel__icon {
	width: 72px;
	height: 72px;
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	margin: 0 auto var(--jf-space-4);
}

.joomforge .jf-result-panel__icon svg {
	width: 36px;
	height: 36px;
}

.joomforge .jf-result-panel__icon--success {
	background-color: color-mix(in srgb, var(--jf-color-success) 14%, transparent);
	color: var(--jf-color-success);
}

.joomforge .jf-result-panel__icon--pending {
	background-color: var(--jf-color-muted);
	color: var(--jf-color-muted-foreground);
}

/* ---- Dashboard hero ----------------------------------------------------------- */

.joomforge .jf-dashboard-hero {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--jf-space-8);
	padding: var(--jf-space-8);
	border-radius: var(--jf-radius-lg);
	background-color: var(--jf-color-card);
	border: 1px solid var(--jf-color-border);
	box-shadow: var(--jf-shadow-sm);
	margin-bottom: var(--jf-space-8);
}

.joomforge .jf-dashboard-hero__greeting h1 {
	font-family: var(--jf-font-sans);
	font-weight: 800;
	font-size: clamp(1.375rem, 2.4vw, 1.75rem);
	margin-bottom: var(--jf-space-2);
}

.joomforge .jf-dashboard-hero__greeting p {
	color: var(--jf-color-muted-foreground);
	margin: 0;
	font-size: 0.9375rem;
}

.joomforge .jf-dashboard-hero__art {
	flex-shrink: 0;
	width: 168px;
	height: 120px;
}

@media (max-width: 640px) {
	.joomforge .jf-dashboard-hero__art {
		display: none;
	}
}

/* ---- Subscription cards (dashboard) -------------------------------------------- */

.joomforge .jf-sub-card {
	overflow: hidden;
}

.joomforge .jf-sub-card__top {
	display: flex;
	align-items: center;
	justify-content: space-between;
	flex-wrap: wrap;
	gap: var(--jf-space-3);
	padding: var(--jf-space-4) var(--jf-space-5);
}

.joomforge .jf-sub-card__title {
	display: flex;
	align-items: center;
	gap: var(--jf-space-3);
	flex-wrap: wrap;
}

.joomforge .jf-sub-card__title h3 {
	margin: 0;
}

.joomforge .jf-sub-card__actions {
	display: flex;
	align-items: center;
	gap: var(--jf-space-2);
	flex-wrap: wrap;
}

.joomforge .jf-sub-card__row {
	display: flex;
	align-items: center;
	justify-content: space-between;
	flex-wrap: wrap;
	gap: var(--jf-space-3);
	padding: var(--jf-space-4) var(--jf-space-5);
	border-top: 1px solid var(--jf-color-border);
}

.joomforge .jf-sub-card__license {
	display: flex;
	align-items: center;
	gap: var(--jf-space-2);
	font-size: 0.875rem;
}

.joomforge .jf-sub-card__license code {
	background-color: var(--jf-color-muted);
	color: var(--jf-color-foreground);
	padding: var(--jf-space-1) var(--jf-space-2);
	border-radius: var(--jf-radius-sm);
	font-family: var(--jf-font-mono);
}

.joomforge .jf-btn-ghost {
	background-color: transparent;
	border: 1.5px solid var(--jf-color-border);
	color: var(--jf-color-muted-foreground);
	min-height: 36px;
	font-size: 0.875rem;
	padding-inline: var(--jf-space-3);
}

.joomforge .jf-btn-ghost:hover {
	background-color: var(--jf-color-muted);
	color: var(--jf-color-foreground);
}

/* ---- Dropdowns & modals (Bootstrap, restyled) ---------------------------------- */

.joomforge .dropdown-menu {
	border: 1px solid var(--jf-color-border);
	border-radius: var(--jf-radius-md);
	box-shadow: var(--jf-shadow-md);
	padding: var(--jf-space-2);
}

.joomforge .dropdown-item {
	border-radius: var(--jf-radius-sm);
	padding: var(--jf-space-2) var(--jf-space-3);
	font-size: 0.9375rem;
}

.joomforge .dropdown-item:hover,
.joomforge .dropdown-item:focus {
	background-color: var(--jf-color-muted);
	color: var(--jf-color-foreground);
}

.joomforge .dropdown-item-text .small {
	color: var(--jf-color-muted-foreground);
}

.joomforge .modal-content {
	border: none;
	border-radius: var(--jf-radius-lg);
	box-shadow: var(--jf-shadow-lg);
}

.joomforge .modal-header,
.joomforge .modal-footer {
	border-color: var(--jf-color-border);
}

.joomforge .modal-title {
	font-weight: 700;
}

.joomforge .jf-domain-row {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--jf-space-2);
	padding: var(--jf-space-2) 0;
	border-bottom: 1px solid var(--jf-color-border);
}

.joomforge .jf-domain-row:last-child {
	border-bottom: none;
}

/* ---- Site module widgets (mod_joomforge_status/licenses/tickets) -------------- */

.joomforge .jf-status-banner {
	display: flex;
	align-items: center;
	gap: var(--jf-space-3);
	padding: var(--jf-space-4);
	border-radius: var(--jf-radius-md);
}

.joomforge .jf-status-banner svg {
	width: 24px;
	height: 24px;
}

.joomforge .jf-status-banner__body {
	flex: 1 1 auto;
}

.joomforge .jf-status-banner__body p {
	margin: 0;
}

.joomforge .jf-status-banner--warning {
	background-color: color-mix(in srgb, var(--jf-color-warning) 12%, var(--jf-color-card));
	border: 1px solid color-mix(in srgb, var(--jf-color-warning) 35%, transparent);
}

.joomforge .jf-status-banner--warning svg {
	color: var(--jf-color-warning);
}

.joomforge .jf-status-banner--urgent {
	background-color: color-mix(in srgb, var(--jf-color-danger) 10%, var(--jf-color-card));
	border: 1px solid color-mix(in srgb, var(--jf-color-danger) 35%, transparent);
}

.joomforge .jf-status-banner--urgent svg {
	color: var(--jf-color-danger);
}

.joomforge .jf-module-list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: var(--jf-space-3);
}

.joomforge .jf-module-list li {
	padding-bottom: var(--jf-space-3);
	border-bottom: 1px solid var(--jf-color-border);
}

.joomforge .jf-module-list li:last-child {
	padding-bottom: 0;
	border-bottom: none;
}

.joomforge .jf-module-list__row {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--jf-space-2);
}

/* ---- Responsive ------------------------------------------------------------- */

.joomforge .jf-lead {
	color: var(--jf-color-muted-foreground);
	font-size: 1.0625rem;
}

/* Products catalog — download-center list layout */

.joomforge .jf-products-header {
	margin-bottom: var(--jf-space-4);
}

.joomforge .jf-products-filterbar {
	display: flex;
	align-items: center;
	justify-content: space-between;
	flex-wrap: wrap;
	gap: var(--jf-space-3);
	margin-bottom: var(--jf-space-5);
}

.joomforge .jf-products-filterbar__pills {
	display: flex;
	flex-wrap: wrap;
	gap: var(--jf-space-2);
}

.joomforge .jf-pill {
	display: inline-flex;
	align-items: center;
	padding: var(--jf-space-1) var(--jf-space-3);
	border-radius: var(--jf-radius-pill);
	border: 1px solid var(--jf-color-border);
	color: var(--jf-color-muted-foreground);
	font-size: 0.875rem;
	font-weight: 600;
}

.joomforge .jf-pill:hover {
	color: var(--jf-color-foreground);
	border-color: var(--jf-color-primary);
}

.joomforge .jf-pill--active {
	background-color: var(--jf-color-primary);
	border-color: var(--jf-color-primary);
	color: #fff;
}

.joomforge .jf-products-filterbar__category select {
	width: auto;
}

.joomforge .jf-product-list {
	display: flex;
	flex-direction: column;
	gap: var(--jf-space-3);
}

.joomforge .jf-product-row {
	flex-direction: row;
	align-items: center;
	gap: var(--jf-space-4);
	padding: var(--jf-space-4) var(--jf-space-5);
}

.joomforge .jf-product-row__icon,
.joomforge .jf-product-header__icon {
	display: flex;
	align-items: center;
	justify-content: center;
	border-radius: var(--jf-radius-md);
	background-color: var(--jf-color-background);
	color: var(--jf-color-muted-foreground);
	overflow: hidden;
	flex-shrink: 0;
}

.joomforge .jf-product-row__icon {
	width: 44px;
	height: 44px;
}

.joomforge .jf-product-row__icon svg {
	width: 22px;
	height: 22px;
	opacity: 0.6;
}

.joomforge .jf-product-row__icon img,
.joomforge .jf-product-header__icon img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.joomforge .jf-product-row__main {
	display: flex;
	flex-direction: column;
	gap: var(--jf-space-1);
	flex: 1 1 auto;
	min-width: 0;
	color: var(--jf-color-foreground);
}

.joomforge .jf-product-row__main:hover {
	color: var(--jf-color-primary);
}

.joomforge .jf-product-row__title {
	font-weight: 700;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.joomforge .jf-product-row__actions {
	display: flex;
	align-items: center;
	gap: var(--jf-space-4);
	flex-shrink: 0;
}

.joomforge .jf-link {
	color: var(--jf-color-primary);
	font-weight: 600;
	font-size: 0.875rem;
	white-space: nowrap;
}

/* Product detail page — download-center header */

.joomforge .jf-product-header {
	display: flex;
	flex-direction: row;
	align-items: center;
	flex-wrap: wrap;
	gap: var(--jf-space-4);
	padding: var(--jf-space-5);
	margin-bottom: var(--jf-space-5);
}

.joomforge .jf-product-header__icon {
	width: 56px;
	height: 56px;
}

.joomforge .jf-product-header__icon svg {
	width: 28px;
	height: 28px;
	opacity: 0.6;
}

.joomforge .jf-product-header__info {
	flex: 1 1 auto;
	min-width: 0;
}

.joomforge .jf-product-header__info h1 {
	font-family: var(--jf-font-sans);
	font-weight: 800;
	font-size: 1.375rem;
	margin-bottom: var(--jf-space-1);
}

.joomforge .jf-product-header__actions {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: var(--jf-space-2);
	flex-shrink: 0;
}

.joomforge .jf-product-about {
	max-width: 72ch;
	margin-bottom: var(--jf-space-8);
}

.joomforge .jf-product-description {
	line-height: 1.7;
}

.joomforge .jf-product-description :is(h2, h3, h4) {
	font-family: var(--jf-font-sans);
	margin-top: var(--jf-space-6);
}

/* Addons (products with a parent_product_id) */

.joomforge .jf-product-addons {
	margin-bottom: var(--jf-space-8);
}

.joomforge .jf-product-addons h2 {
	margin-bottom: var(--jf-space-2);
}

.joomforge .jf-product-addons .jf-muted {
	display: block;
	margin-bottom: var(--jf-space-4);
}

.joomforge .jf-product-addons .jf-product-row + .jf-product-row {
	margin-top: var(--jf-space-3);
}

/* Changelog */

.joomforge .jf-changelog h2 {
	margin-bottom: var(--jf-space-4);
}

.joomforge .jf-version-block {
	padding: var(--jf-space-5);
	border: 1px solid var(--jf-color-border);
	border-radius: var(--jf-radius-lg);
	margin-bottom: var(--jf-space-4);
	scroll-margin-top: var(--jf-space-8);
}

.joomforge .jf-version-block__header {
	display: flex;
	align-items: center;
	gap: var(--jf-space-3);
	margin-bottom: var(--jf-space-4);
	padding-bottom: var(--jf-space-3);
	border-bottom: 1px solid var(--jf-color-border);
}

.joomforge .jf-version-block__header .jf-mono {
	font-size: 1.125rem;
	font-weight: 700;
}

.joomforge .jf-changelog-group {
	margin-bottom: var(--jf-space-4);
}

.joomforge .jf-changelog-group:last-child {
	margin-bottom: 0;
}

.joomforge .jf-changelog-group h3 {
	display: flex;
	align-items: center;
	gap: var(--jf-space-2);
	font-size: 0.9375rem;
	font-weight: 700;
	margin-bottom: var(--jf-space-2);
}

.joomforge .jf-changelog-group__dot {
	width: 10px;
	height: 10px;
	border-radius: 50%;
	flex-shrink: 0;
}

.joomforge .jf-changelog-group--feature .jf-changelog-group__dot { background-color: var(--jf-color-success); }
.joomforge .jf-changelog-group--improvement .jf-changelog-group__dot { background-color: var(--jf-color-info); }
.joomforge .jf-changelog-group--fix .jf-changelog-group__dot { background-color: var(--jf-color-primary); }
.joomforge .jf-changelog-group--security .jf-changelog-group__dot { background-color: var(--jf-color-danger); }
.joomforge .jf-changelog-group--breaking .jf-changelog-group__dot { background-color: var(--jf-color-warning); }
.joomforge .jf-changelog-group--deprecated .jf-changelog-group__dot { background-color: var(--jf-color-muted-foreground); }

.joomforge .jf-changelog-group ul {
	margin: 0;
	padding-left: calc(10px + var(--jf-space-2));
	display: flex;
	flex-direction: column;
	gap: var(--jf-space-1);
}

/* My Account (Edit Profile) */

.joomforge .jf-account-layout {
	display: flex;
	align-items: flex-start;
	gap: var(--jf-space-5);
}

.joomforge .jf-account-side {
	flex: 0 0 320px;
	text-align: center;
}

.joomforge .jf-account-main {
	flex: 1 1 auto;
	min-width: 0;
}

.joomforge .jf-account-avatar {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 96px;
	height: 96px;
	margin: 0 auto var(--jf-space-3);
	border-radius: 50%;
	overflow: hidden;
	background-color: var(--jf-color-background);
	color: var(--jf-color-muted-foreground);
}

.joomforge .jf-account-avatar img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.joomforge .jf-account-avatar svg {
	width: 44%;
	height: 44%;
	opacity: 0.5;
}

.joomforge .jf-account-side__name {
	font-family: var(--jf-font-sans);
	font-weight: 700;
	font-size: 1.125rem;
	margin-bottom: var(--jf-space-1);
}

.joomforge .jf-account-side__username {
	margin-bottom: var(--jf-space-4);
}

.joomforge .jf-account-upload {
	text-align: left;
}

.joomforge .jf-account-main h1 {
	font-family: var(--jf-font-sans);
	font-weight: 800;
	font-size: 1.375rem;
	margin-bottom: var(--jf-space-4);
}

@media (max-width: 767px) {
	.joomforge .jf-account-layout {
		flex-direction: column;
	}

	.joomforge .jf-account-side {
		flex-basis: auto;
		width: 100%;
	}


	.joomforge .jf-pricing-hero {
		padding: var(--jf-space-8) var(--jf-space-4);
	}

	.joomforge .jf-product-row {
		flex-wrap: wrap;
	}

	.joomforge .jf-product-row__actions {
		flex-basis: 100%;
		justify-content: flex-end;
	}

	.joomforge .jf-product-header {
		flex-direction: column;
		align-items: flex-start;
	}

	.joomforge .jf-product-header__actions {
		flex-basis: 100%;
	}

	.joomforge .jf-dashboard-hero {
		flex-direction: column;
		text-align: center;
		padding: var(--jf-space-6);
	}

	.joomforge .jf-sub-card__top,
	.joomforge .jf-sub-card__row {
		flex-direction: column;
		align-items: flex-start;
	}

	.joomforge .jf-ticket-row {
		align-items: flex-start;
	}

	.joomforge .jf-ticket-row__meta {
		align-items: flex-start;
	}

	.joomforge .jf-plans-module__grid {
		grid-template-columns: 1fr;
	}
}
