/* NxtOrigin Knowledge Base — floating help launcher + assistant card. Global --nx-* tokens. */

/* Launcher (bottom-right, above everything incl. the themed header z-index:10000).
   position/offsets are !important so a theme's `.elementor button` / generic
   `button` rule can't restyle it to static and let it float up to the top. */
button.nxkbw__launch[data-nxkbw-open] {
	-webkit-appearance: none !important;
	appearance: none !important;
	position: fixed !important;
	right: 22px !important;
	bottom: 22px !important;
	top: auto !important;
	left: auto !important;
	z-index: 100000 !important;
	display: inline-flex !important;
	align-items: center !important;
	justify-content: center !important;
	box-sizing: border-box !important;
	width: 58px !important;
	min-width: 58px !important;
	max-width: 58px !important;
	height: 58px !important;
	min-height: 58px !important;
	max-height: 58px !important;
	margin: 0 !important;
	padding: 0 !important;
	border: 1px solid color-mix(in srgb, var(--nx-cyan) 48%, var(--nx-border)) !important;
	border-radius: 15px !important;
	background: linear-gradient(145deg, var(--nx-cyan), var(--nx-sky)) !important;
	color: var(--nx-btn-text) !important;
	box-shadow: 0 14px 34px color-mix(in srgb, var(--nx-bg) 62%, transparent) !important;
	font: 700 16px/1 var(--nx-font-family, "Outfit", Inter, system-ui, sans-serif) !important;
	letter-spacing: normal !important;
	text-align: center !important;
	text-decoration: none !important;
	text-indent: 0 !important;
	text-shadow: none !important;
	text-transform: none !important;
	opacity: 1 !important;
	visibility: visible !important;
	cursor: pointer !important;
	transition: transform 0.15s ease, filter 0.15s ease;
}
button.nxkbw__launch[data-nxkbw-open]:hover { filter: brightness(1.06); transform: translateY(-2px); }
button.nxkbw__launch[data-nxkbw-open]:focus { outline: 0 !important; }
button.nxkbw__launch[data-nxkbw-open]:focus-visible {
	outline: 2px solid var(--nx-text) !important;
	outline-offset: 2px !important;
}
button.nxkbw__launch[data-nxkbw-open] svg {
	display: block !important;
	flex: 0 0 auto !important;
	width: 24px !important;
	height: 24px !important;
	margin: 0 !important;
	padding: 0 !important;
	color: inherit !important;
}
button.nxkbw__launch[data-nxkbw-open] .nxkbw__launch-icon,
button.nxkbw__launch[data-nxkbw-open] .nxkbw__launch-fallback {
	display: inline-flex !important;
	align-items: center !important;
	justify-content: center !important;
	width: 24px !important;
	height: 24px !important;
}
button.nxkbw__launch[data-nxkbw-open] .nxkbw__launch-fallback {
	font-size: 21px;
	font-weight: 850;
}
button.nxkbw__launch[data-nxkbw-open] .nxkbw__launch-label {
	position: absolute !important;
	width: 1px !important;
	height: 1px !important;
	padding: 0 !important;
	margin: -1px !important;
	overflow: hidden !important;
	clip: rect(0, 0, 0, 0) !important;
	white-space: nowrap !important;
	border: 0 !important;
}

.nxkbw.is-open button.nxkbw__launch[data-nxkbw-open] {
	z-index: 2147483002 !important;
}

/*
 * Native event pages: sit the launcher INSIDE the fixed footer band, not above
 * it.
 *
 * It used to float at bottom:100px to stay clear of the footer pill — but 100px
 * up is where page content lives, so on the Central Hub it landed squarely on
 * the message composer, and on booth and hall surfaces it covered whatever was
 * at the bottom of the scroll. Avoiding one overlap created a worse one, on
 * every page rather than one strip.
 *
 * The footer pill is fixed at bottom:10px with a 68px body, so it occupies
 * 10–78px. The launcher at bottom:22px reads as part of that same control band.
 * Horizontally it tucks just inside the pill's right edge — the pill is centred
 * and capped at 1320px, so on a wide screen its edge is (100vw − 1320px)/2 and
 * on a narrow one the 12px gutter. It therefore reads as part of the footer
 * instead of hovering beside it.
 *
 * Override without editing this file by setting --nxkbw-launch-bottom on <body>
 * (for example, a surface with its own fixed bar can raise it).
 */
body.nxtorigin-native-event-shell-page button.nxkbw__launch[data-nxkbw-open] {
	bottom: var(--nxkbw-launch-bottom, 22px) !important;
	right: 22px !important;
	/* Above the footer pill (z-index 50) so it stays clickable. */
	z-index: 100000 !important;
}

/*
 * Embedded booth actions can render their own copy of the global launcher.
 * Hide only that duplicate; the parent Hall/page launcher remains available.
 */
body.nxtorigin-exhibitor-booth-embed.nxtorigin-exhibitor-panel-open .nxkbw {
	display: none !important;
}

/* Overlay + assistant card. The launcher sits two layers above this while open,
   so it remains the familiar minimize control beneath the card. */
.nxkbw { --nxkbw-safe-top: 18px; }
body.nxtorigin-native-event-shell-page .nxkbw { --nxkbw-safe-top: 100px; }
.nxkbw__overlay { position: fixed; inset: 0; z-index: 2147483000; }
.nxkbw__overlay[hidden] { display: none !important; } /* JS also toggles inline display */
.nxkbw__backdrop {
	position: fixed;
	inset: 0;
	z-index: 0;
	background: color-mix(in srgb, var(--nx-bg) 42%, transparent);
	backdrop-filter: blur(2px);
}
.nxkbw__panel {
	--nxkbw-card-bottom: 96px;
	position: fixed;
	top: auto;
	right: 18px;
	bottom: var(--nxkbw-card-bottom);
	z-index: 1;
	box-sizing: border-box;
	width: min(410px, calc(100vw - 32px));
	height: min(690px, calc(100vh - var(--nxkbw-card-bottom) - var(--nxkbw-safe-top)));
	height: min(690px, calc(100dvh - var(--nxkbw-card-bottom) - var(--nxkbw-safe-top)));
	max-height: calc(100vh - var(--nxkbw-card-bottom) - var(--nxkbw-safe-top));
	max-height: calc(100dvh - var(--nxkbw-card-bottom) - var(--nxkbw-safe-top));
	display: flex;
	flex-direction: column;
	min-height: 0;
	overflow: hidden;
	overscroll-behavior: contain;
	background: var(--nx-panel);
	border: 1px solid color-mix(in srgb, var(--nx-cyan) 24%, var(--nx-border));
	border-radius: 18px;
	box-shadow: 0 24px 70px color-mix(in srgb, var(--nx-shadow) 58%, transparent);
	animation: nxkbw-enter 0.2s ease-out;
}

/* Native event pages already place the launcher inside the footer band. The
   card remains immediately above it and never covers footer navigation. */
body.nxtorigin-native-event-shell-page .nxkbw__panel {
	--nxkbw-card-bottom: 96px;
}

@keyframes nxkbw-enter {
	from { transform: translateY(12px) scale(0.985); opacity: 0; }
	to { transform: none; opacity: 1; }
}

.nxkbw__head {
	position: relative;
	padding: 18px 18px 14px;
	border-bottom: 1px solid color-mix(in srgb, var(--nx-cyan) 28%, var(--nx-border));
	background:
		radial-gradient(circle at 92% 8%, color-mix(in srgb, var(--nx-sky) 24%, transparent), transparent 48%),
		linear-gradient(135deg, color-mix(in srgb, var(--nx-cyan) 18%, var(--nx-panel)), color-mix(in srgb, var(--nx-sky) 12%, var(--nx-bg)));
	color: var(--nx-text);
	flex: 0 0 auto;
}
.nxkbw__head-row {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 14px;
}
.nxkbw__head h2 {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 7px;
	margin: 0;
	color: var(--nx-text);
	font: 800 1.12rem/1.2 var(--nx-font-family, "Outfit", Inter, system-ui, sans-serif);
}
.nxkbw__head h2 span {
	display: inline-flex;
	align-items: center;
	min-height: 20px;
	padding: 2px 7px;
	border: 1px solid color-mix(in srgb, var(--nx-cyan) 42%, var(--nx-border));
	border-radius: 999px;
	background: color-mix(in srgb, var(--nx-bg) 42%, transparent);
	color: var(--nx-cyan-soft);
	font-size: 0.68rem;
	font-weight: 750;
	letter-spacing: 0.02em;
}
.nxkbw__head > p:not(.nxkbw__prompt-status) {
	margin: 13px 0 12px;
	color: var(--nx-text-soft);
	font: 500 0.86rem/1.45 var(--nx-font-family, "Outfit", Inter, system-ui, sans-serif);
}
/* !important throughout because the site theme styles every <button> (size,
   border, min-height, red focus ring) and those rules were overriding this
   minimize control, leaving it a tall outlined box that overflowed the header. */
.nxkbw__x {
	position: relative;
	z-index: 1;
	display: inline-flex !important;
	align-items: center;
	justify-content: center;
	flex: 0 0 auto;
	width: 30px !important;
	min-width: 30px !important;
	height: 30px !important;
	min-height: 0 !important;
	margin: 0 -4px 0 0 !important; /* sit inline with the title, not sticking above it */
	padding: 0 !important;
	background: color-mix(in srgb, var(--nx-bg) 26%, transparent) !important;
	border: 1px solid color-mix(in srgb, var(--nx-text) 18%, transparent) !important;
	border-radius: 8px !important;
	color: var(--nx-text-soft) !important;
	font-size: 1.45rem !important;
	line-height: 1 !important;
	box-shadow: none !important;
	cursor: pointer;
}
.nxkbw__x:hover { border-color: var(--nx-cyan) !important; color: var(--nx-text) !important; }
/* Kill the red mouse-focus ring the theme paints on the button; keep a clean
   keyboard-only focus outline for accessibility. */
.nxkbw__x:focus { outline: 0 !important; box-shadow: none !important; }
.nxkbw__x:focus-visible { outline: 2px solid var(--nx-cyan) !important; outline-offset: 2px; }
.nxkbw__prompt {
	display: grid;
	grid-template-columns: minmax(0, 1fr) 34px;
	align-items: center;
	gap: 6px;
	box-sizing: border-box;
	width: 100%;
	min-height: 44px;
	margin: 0;
	padding: 5px 5px 5px 12px;
	border: 1px solid color-mix(in srgb, var(--nx-cyan) 22%, var(--nx-border));
	border-radius: 11px;
	background: var(--nx-text);
	box-shadow: 0 9px 24px color-mix(in srgb, var(--nx-shadow) 24%, transparent);
}
.nxkbw__prompt:focus-within {
	border-color: var(--nx-cyan);
	box-shadow: 0 0 0 3px color-mix(in srgb, var(--nx-cyan) 18%, transparent);
}
.nxkbw__prompt input[type="search"] {
	-webkit-appearance: none;
	appearance: none;
	box-sizing: border-box;
	width: 100%;
	min-width: 0;
	min-height: 32px;
	margin: 0;
	padding: 0;
	border: 0;
	border-radius: 0;
	outline: 0;
	background: transparent;
	color: var(--nx-bg);
	box-shadow: none;
	font: 550 0.9rem/1.3 var(--nx-font-family, "Outfit", Inter, system-ui, sans-serif);
}
.nxkbw__prompt input[type="search"]::placeholder {
	color: color-mix(in srgb, var(--nx-bg) 64%, transparent);
	opacity: 1;
}
.nxkbw__prompt button[type="submit"] {
	-webkit-appearance: none !important;
	appearance: none !important;
	display: inline-flex !important;
	align-items: center !important;
	justify-content: center !important;
	box-sizing: border-box !important;
	width: 34px !important;
	min-width: 34px !important;
	height: 34px !important;
	min-height: 34px !important;
	margin: 0 !important;
	padding: 0 !important;
	border: 0 !important;
	border-radius: 9px !important;
	background: linear-gradient(145deg, var(--nx-cyan), var(--nx-sky)) !important;
	color: var(--nx-btn-text) !important;
	box-shadow: none !important;
	cursor: pointer;
}
.nxkbw__prompt button[type="submit"]:hover { filter: brightness(1.05); }
.nxkbw__prompt button[type="submit"]:focus { outline: 0 !important; }
.nxkbw__prompt button[type="submit"]:focus-visible { outline: 2px solid var(--nx-bg) !important; outline-offset: -4px; }
.nxkbw__prompt-icon,
.nxkbw__prompt button[type="submit"] svg { width: 17px; height: 17px; }
.nxkbw__prompt-status {
	min-height: 18px;
	margin: 6px 2px -5px !important;
	color: var(--nx-text-soft) !important;
	font: 500 0.75rem/1.35 var(--nx-font-family, "Outfit", Inter, system-ui, sans-serif) !important;
}
.nxkbw__body {
	flex: 1 1 auto;
	min-height: 0;
	overflow-y: auto;
	overscroll-behavior: contain;
	-webkit-overflow-scrolling: touch;
	padding: 0 12px max(16px, env(safe-area-inset-bottom));
	background: var(--nx-panel);
	scrollbar-color: var(--nx-border) transparent;
}
.nxkbw__loading, .nxkbw__err { color: var(--nx-text-muted); padding: 1.5rem; }
.nxkbw__err { color: var(--nx-danger); }

/* Flush the reader card inside the panel (no double card / no full-page margins) */
.nxkbw__body .nxtorigin-kb {
	margin: 0;
	border: 0;
	background: transparent;
	padding: 0.5rem 0.25rem;
	max-width: none;
}

/* Keep the search box reachable while the article list scrolls: pin it to the
   top of the panel's scroll container (.nxkbw__body). Zero out the top padding
   above it so it sits flush at top:0 and its solid background fully masks the
   content sliding underneath. Scoped to the widget — the full-page reader is
   untouched. */
.nxkbw__body { padding-top: 0; }
.nxkbw__body .nxtorigin-kb { padding-top: 0; }
.nxkbw__body .nxtorigin-kb__search {
	position: sticky;
	top: 57px;
	z-index: 5;
	margin: 0 0 1rem;
	padding: 0.75rem 0;
	background: var(--nx-panel);
}
.nxkbw__workspace.is-widget .nxtorigin-kb__search {
	display: none !important;
}

/* Help workspace: article browser and grounded AI share the same surface. */
.nxkbw__workspace { min-height: 100%; }
.nxkbw__workspace.is-widget {
	display: flex;
	flex-direction: column;
}
.nxkbw__starter {
	padding: 18px 5px 8px;
	color: var(--nx-text);
}
.nxkbw__starter[hidden] { display: none !important; }
.nxkbw__starter h3 {
	margin: 0;
	color: var(--nx-text);
	font: 750 0.98rem/1.3 var(--nx-font-family, "Outfit", Inter, system-ui, sans-serif);
}
.nxkbw__starter > p {
	margin: 5px 0 12px;
	color: var(--nx-text-muted);
	font-size: 0.82rem;
	line-height: 1.4;
}
.nxkbw__suggestions {
	display: grid;
	gap: 7px;
}
.nxkbw__suggestions > span {
	color: var(--nx-text-muted);
	font-size: 0.8rem;
}
button.nxkbw__suggestion {
	-webkit-appearance: none !important;
	appearance: none !important;
	display: block !important;
	box-sizing: border-box !important;
	width: 100% !important;
	min-height: 40px !important;
	margin: 0 !important;
	padding: 9px 11px !important;
	border: 1px solid color-mix(in srgb, var(--nx-cyan) 34%, var(--nx-border)) !important;
	border-radius: 9px !important;
	background: color-mix(in srgb, var(--nx-panel-soft) 72%, transparent) !important;
	color: var(--nx-text) !important;
	box-shadow: none !important;
	font: 600 0.83rem/1.35 var(--nx-font-family, "Outfit", Inter, system-ui, sans-serif) !important;
	text-align: left !important;
	white-space: normal !important;
	cursor: pointer;
}
button.nxkbw__suggestion:hover {
	border-color: var(--nx-cyan) !important;
	background: color-mix(in srgb, var(--nx-cyan) 9%, var(--nx-panel-soft)) !important;
}
button.nxkbw__suggestion:focus { outline: 0 !important; }
button.nxkbw__suggestion:focus-visible { outline: 2px solid var(--nx-cyan) !important; outline-offset: 2px; }
.nxkbw__mode-actions {
	display: flex;
	align-items: center;
	justify-content: flex-start;
	padding: 0 5px 14px;
}
.nxkbw__mode-actions[hidden] { display: none !important; }
button.nxkbw__browse {
	-webkit-appearance: none !important;
	appearance: none !important;
	display: inline-flex !important;
	align-items: center !important;
	justify-content: center !important;
	min-height: 34px !important;
	margin: 0 !important;
	padding: 6px 0 !important;
	border: 0 !important;
	border-bottom: 1px solid transparent !important;
	border-radius: 0 !important;
	background: transparent !important;
	color: var(--nx-cyan) !important;
	box-shadow: none !important;
	font: 700 0.8rem/1.3 var(--nx-font-family, "Outfit", Inter, system-ui, sans-serif) !important;
	text-align: left !important;
	text-decoration: none !important;
	cursor: pointer;
}
button.nxkbw__browse:hover { border-bottom-color: var(--nx-cyan) !important; }
button.nxkbw__browse:focus { outline: 0 !important; }
button.nxkbw__browse:focus-visible { outline: 2px solid var(--nx-cyan) !important; outline-offset: 2px; }
.nxkbw__tabs {
	position: sticky;
	top: 0;
	z-index: 8;
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 6px;
	padding: 9px 4px;
	background: color-mix(in srgb, var(--nx-panel) 96%, transparent);
	border-bottom: 1px solid var(--nx-border);
	backdrop-filter: blur(8px);
}
button.nxkbw__tab {
	appearance: none !important;
	display: inline-flex !important;
	align-items: center !important;
	justify-content: center !important;
	min-width: 0 !important;
	min-height: 38px !important;
	margin: 0 !important;
	padding: 8px 12px !important;
	border: 1px solid transparent !important;
	border-radius: 8px !important;
	background: transparent !important;
	color: var(--nx-text-muted) !important;
	box-shadow: none !important;
	font: 700 0.9rem/1.2 var(--nx-font-family, "Outfit", Inter, system-ui, sans-serif) !important;
	cursor: pointer;
}
button.nxkbw__tab:hover { color: var(--nx-text) !important; }
button.nxkbw__tab.is-active {
	border-color: color-mix(in srgb, var(--nx-cyan) 56%, var(--nx-border)) !important;
	background: color-mix(in srgb, var(--nx-cyan) 10%, transparent) !important;
	color: var(--nx-cyan) !important;
}
button.nxkbw__tab:focus { outline: 0 !important; }
button.nxkbw__tab:focus-visible { outline: 2px solid var(--nx-cyan) !important; outline-offset: 2px; }
.nxkbw__view[hidden] { display: none !important; }

.nxkbw__ai { padding: 18px 4px 22px; color: var(--nx-text); }
.nxkbw__workspace.is-widget .nxkbw__ai { padding: 2px 4px 20px; }
.nxkbw__ai-form[hidden] { display: none !important; }
.nxkbw__ai-intro,
.nxkbw__ai-notice,
.nxkbw__ai-form,
.nxkbw__answer,
.nxkbw__ai-sources,
.nxkbw__feedback {
	box-sizing: border-box;
	border: 1px solid var(--nx-border);
	border-radius: 10px;
	background: color-mix(in srgb, var(--nx-panel-soft) 74%, transparent);
}
.nxkbw__ai-intro { padding: 14px; margin-bottom: 12px; }
.nxkbw__ai-intro strong,
.nxkbw__answer strong,
.nxkbw__ai-sources strong { display: block; color: var(--nx-text); }
.nxkbw__ai-intro p,
.nxkbw__ai-notice p,
.nxkbw__answer p {
	margin: 6px 0 0;
	color: var(--nx-text-muted);
	font-size: 0.88rem;
	line-height: 1.5;
}
.nxkbw__ai-notice { padding: 14px; }
.nxkbw__ai-notice .nxkbw__button { margin-top: 12px !important; }
.nxkbw__ai-form { padding: 14px; }
.nxkbw__ai-form label { display: block; margin-bottom: 7px; color: var(--nx-text); font-weight: 700; }
.nxkbw__ai-form textarea {
	box-sizing: border-box;
	display: block;
	width: 100%;
	min-height: 104px;
	margin: 0;
	padding: 11px 12px;
	resize: vertical;
	border: 1px solid var(--nx-border);
	border-radius: 8px;
	background: var(--nx-bg);
	color: var(--nx-text);
	font: 400 0.92rem/1.45 var(--nx-font-family, "Outfit", Inter, system-ui, sans-serif);
}
.nxkbw__ai-form textarea:focus { border-color: var(--nx-cyan); outline: 2px solid color-mix(in srgb, var(--nx-cyan) 18%, transparent); }
.nxkbw__ai-actions { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-top: 12px; }
.nxkbw__ai-limit { color: var(--nx-text-muted); font-size: 0.78rem; }
.nxkbw__ai-status { min-height: 21px; margin: 10px 2px 0; color: var(--nx-text-muted); font-size: 0.84rem; }
.nxkbw__ai-result { margin-top: 10px; }
.nxkbw__answer { padding: 14px; border-color: color-mix(in srgb, var(--nx-cyan) 40%, var(--nx-border)); }
.nxkbw__answer p { white-space: pre-wrap; color: var(--nx-text); }
.nxkbw__answer--handoff { border-color: var(--nx-warning); }

.nxkbw__ai-sources { margin-top: 10px; padding: 12px; }
.nxkbw__ai-sources strong { margin-bottom: 8px; font-size: 0.82rem; text-transform: uppercase; letter-spacing: 0.06em; }
button.nxkbw__source {
	appearance: none !important;
	display: block !important;
	width: 100% !important;
	min-height: 0 !important;
	margin: 6px 0 0 !important;
	padding: 8px 10px !important;
	border: 1px solid var(--nx-border) !important;
	border-radius: 7px !important;
	background: var(--nx-bg) !important;
	color: var(--nx-cyan) !important;
	box-shadow: none !important;
	font: 600 0.84rem/1.35 var(--nx-font-family, "Outfit", Inter, system-ui, sans-serif) !important;
	text-align: left !important;
	cursor: pointer;
}
button.nxkbw__source:hover { border-color: var(--nx-cyan) !important; }

.nxkbw__feedback { display: flex; flex-wrap: wrap; align-items: center; gap: 7px; margin-top: 10px; padding: 10px 12px; }
.nxkbw__feedback > span:first-child { margin-right: auto; color: var(--nx-text-muted); font-size: 0.82rem; }
button.nxkbw__feedback-button {
	appearance: none !important;
	min-height: 30px !important;
	margin: 0 !important;
	padding: 5px 9px !important;
	border: 1px solid var(--nx-border) !important;
	border-radius: 7px !important;
	background: transparent !important;
	color: var(--nx-text) !important;
	box-shadow: none !important;
	font: 600 0.78rem/1.2 var(--nx-font-family, "Outfit", Inter, system-ui, sans-serif) !important;
	cursor: pointer;
}
button.nxkbw__feedback-button:hover { border-color: var(--nx-cyan) !important; }
button.nxkbw__feedback-button:disabled { opacity: 0.5; cursor: default; }
.nxkbw__feedback-note { flex-basis: 100%; color: var(--nx-success); font-size: 0.78rem; }

.nxkbw__handoff {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	margin: 14px 4px 4px;
	padding: 14px 0 2px;
	border-top: 1px solid var(--nx-border);
}
.nxkbw__workspace.is-widget .nxkbw__handoff { margin-top: auto; }
.nxkbw__handoff strong { display: block; color: var(--nx-text); font-size: 0.88rem; }
.nxkbw__handoff span { display: block; margin-top: 3px; color: var(--nx-text-muted); font-size: 0.75rem; line-height: 1.35; }
.nxkbw__button,
button.nxkbw__button,
a.nxkbw__button {
	appearance: none !important;
	display: inline-flex !important;
	align-items: center !important;
	justify-content: center !important;
	box-sizing: border-box !important;
	min-height: 38px !important;
	margin: 0 !important;
	padding: 8px 12px !important;
	border: 1px solid var(--nx-border) !important;
	border-radius: 8px !important;
	background: transparent !important;
	color: var(--nx-text) !important;
	box-shadow: none !important;
	font: 700 0.82rem/1.2 var(--nx-font-family, "Outfit", Inter, system-ui, sans-serif) !important;
	text-align: center !important;
	text-decoration: none !important;
	white-space: nowrap;
	cursor: pointer;
}
.nxkbw__button--primary,
button.nxkbw__button--primary,
a.nxkbw__button--primary {
	border-color: var(--nx-cyan) !important;
	background: linear-gradient(135deg, var(--nx-cyan), var(--nx-sky)) !important;
	color: var(--nx-btn-text) !important;
}
.nxkbw__button:disabled { opacity: 0.55; cursor: wait; }
.nxkbw__assurance {
	margin: 12px 4px 4px;
	color: var(--nx-text-muted);
	font-size: 0.7rem;
	line-height: 1.45;
	text-align: center;
}

@media (max-width: 420px) {
	.nxkbw__handoff { align-items: flex-start; flex-direction: column; }
	.nxkbw__handoff .nxkbw__button { width: 100% !important; }
}

@media (max-width: 700px) {
	body.nxtorigin-native-event-shell-page button.nxkbw__launch[data-nxkbw-open],
	button.nxkbw__launch[data-nxkbw-open] {
		position: fixed !important;
		bottom: 86px !important;
		right: 14px !important;
		z-index: 100000 !important;
		display: inline-flex !important;
		visibility: visible !important;
		opacity: 1 !important;
	}
	.nxkbw__panel {
		--nxkbw-card-bottom: 156px;
		right: 12px;
		width: min(410px, calc(100vw - 24px));
		height: min(690px, calc(100vh - var(--nxkbw-card-bottom) - var(--nxkbw-safe-top)));
		height: min(690px, calc(100dvh - var(--nxkbw-card-bottom) - var(--nxkbw-safe-top)));
		max-height: calc(100vh - var(--nxkbw-card-bottom) - var(--nxkbw-safe-top));
		max-height: calc(100dvh - var(--nxkbw-card-bottom) - var(--nxkbw-safe-top));
	}
	body.nxtorigin-native-event-shell-page .nxkbw__panel { --nxkbw-card-bottom: 156px; }
	.nxkbw__backdrop { backdrop-filter: none; }
}
@media (max-width: 480px) {
	.nxkbw__panel {
		right: 10px;
		width: calc(100vw - 20px);
		border-radius: 16px;
	}
	.nxkbw__head { padding: 16px 15px 12px; }
	.nxkbw__body { padding-right: 10px; padding-left: 10px; }
	body.nxtorigin-native-event-shell-page button.nxkbw__launch[data-nxkbw-open] {
		bottom: 86px !important;
		right: 12px !important;
	}
}

@media (prefers-reduced-motion: reduce) {
	button.nxkbw__launch[data-nxkbw-open],
	.nxkbw__panel { animation: none; transition: none; }
}
