.kc-banner, .kc-overlay, .kc-float, .kc-gate-note {
	font-family: var(--kc-ff, inherit);
	font-size: var(--kc-fs, 13px);
	line-height: 1.5;
	color: var(--kc-text, #111);
	box-sizing: border-box;
}
.kc-banner *, .kc-overlay *, .kc-gate-note * { box-sizing: border-box; font-family: inherit; }
[hidden].kc-banner, [hidden].kc-overlay, [hidden].kc-float { display: none !important; }

/* Banner */
.kc-banner {
	position: fixed;
	z-index: 99998;
	background: var(--kc-bg, #fff);
	border: var(--kc-bw, 2px) solid var(--kc-border, #111);
	border-radius: var(--kc-r, 0);
	box-shadow: var(--kc-shadow, none);
	padding: var(--kc-pad, 14px);
	width: calc(100% - 24px);
	max-width: var(--kc-w, 340px);
}
.kc-pos-bottom-left { left: 12px; bottom: 12px; }
.kc-pos-bottom { left: 0; right: 0; bottom: 0; width: auto; max-width: none; border-width: var(--kc-bw, 2px) 0 0; border-radius: 0; box-shadow: none; padding: var(--kc-pad, 14px) max(var(--kc-pad, 14px), 4vw); }
.kc-pos-center { left: 50%; top: 50%; transform: translate(-50%, -50%); }

.kc-title { margin: 0 0 .5em; padding: 0; font-size: 1.2em; line-height: 1.25; font-weight: 800; letter-spacing: .03em; text-transform: var(--kc-tt, uppercase); color: inherit; }
.kc-text { margin: 0 0 1em; padding: 0; }
.kc-link { color: inherit; font-weight: 700; text-decoration: underline; text-underline-offset: .2em; text-decoration-thickness: 2px; text-decoration-color: var(--kc-accent, #f5a300); }
.kc-link:hover { background: var(--kc-accent, #f5a300); color: var(--kc-accent-text, #111); }

.kc-actions { display: flex; flex-wrap: wrap; gap: .5em; }
.kc-pos-bottom .kc-actions { flex-wrap: nowrap; max-width: 560px; }
.kc-btn {
	flex: 1 1 auto;
	margin: 0;
	font: inherit;
	font-size: .9em;
	font-weight: 800;
	letter-spacing: .05em;
	text-transform: var(--kc-tt, uppercase);
	padding: .7em .9em;
	border: var(--kc-bw, 2px) solid var(--kc-border, #111);
	border-radius: var(--kc-r, 0);
	background: var(--kc-accent, #f5a300);
	color: var(--kc-accent-text, #111);
	cursor: pointer;
	line-height: 1.2;
	box-shadow: none;
}
.kc-btn:hover { background: var(--kc-text, #111); color: var(--kc-bg, #fff); }
.kc-btn--ghost { background: transparent; color: var(--kc-text, #111); }
.kc-btn--ghost:hover { background: var(--kc-text, #111); color: var(--kc-bg, #fff); }
.kc-banner :focus-visible, .kc-overlay :focus-visible, .kc-float:focus-visible, .kc-gate-note :focus-visible {
	outline: 3px solid var(--kc-text, #111);
	outline-offset: 2px;
}

/* Preferences window */
.kc-overlay { position: fixed; inset: 0; z-index: 99999; background: var(--kc-overlay, rgba(0, 0, 0, .55)); display: flex; align-items: center; justify-content: center; padding: 12px; }
.kc-modal {
	background: var(--kc-bg, #fff);
	border: var(--kc-bw, 2px) solid var(--kc-border, #111);
	border-radius: var(--kc-r, 0);
	box-shadow: var(--kc-shadow, none);
	width: 100%;
	max-width: var(--kc-mw, 440px);
	max-height: calc(100vh - 24px);
	overflow-y: auto;
	padding: var(--kc-pad, 14px);
}
.kc-modal-head { display: flex; align-items: flex-start; justify-content: space-between; gap: .75em; margin-bottom: .25em; }
.kc-modal-head .kc-title { margin-bottom: 0; }
.kc-close { margin: 0; font: inherit; font-size: 1.8em; line-height: 1; width: 1.4em; height: 1.4em; padding: 0; background: transparent; color: inherit; border: var(--kc-bw, 2px) solid var(--kc-border, #111); border-radius: var(--kc-r, 0); cursor: pointer; flex: none; }
.kc-close:hover { background: var(--kc-text, #111); color: var(--kc-bg, #fff); }
.kc-cat { padding: .9em 0; border-top: var(--kc-bw, 2px) solid var(--kc-border, #111); }
.kc-modal .kc-actions { border-top: var(--kc-bw, 2px) solid var(--kc-border, #111); padding-top: 1em; }
.kc-cat-head { display: flex; align-items: center; gap: .75em; font-weight: 800; cursor: pointer; margin: 0; }
.kc-cat-head input { width: 1.5em; height: 1.5em; margin: 0; accent-color: var(--kc-accent, #f5a300); flex: none; }
.kc-cat-name { font-size: 1.05em; }
.kc-cat-desc { margin: .4em 0 0 2.25em; padding: 0; font-size: .95em; }

/* Small reopen button */
.kc-float {
	position: fixed; left: 10px; bottom: 10px; z-index: 99997;
	margin: 0; font: inherit; font-size: .85em; font-weight: 800; letter-spacing: .05em; text-transform: var(--kc-tt, uppercase);
	padding: .5em .8em; background: var(--kc-bg, #fff); color: var(--kc-text, #111);
	border: var(--kc-bw, 2px) solid var(--kc-border, #111); border-radius: var(--kc-r, 0); cursor: pointer; box-shadow: none;
}
.kc-float:hover { background: var(--kc-accent, #f5a300); color: var(--kc-accent-text, #111); }

/* Held-back embeds */
.kc-gate-note { border: var(--kc-bw, 2px) solid var(--kc-border, #111); border-radius: var(--kc-r, 0); background: var(--kc-bg, #fff); padding: var(--kc-pad, 14px); text-align: center; }
.kc-gate-note p { margin: 0 0 .75em; }
.kc-gate-note .kc-btn { flex: none; }

@media (max-width: 520px) {
	.kc-banner { left: 6px; right: 6px; bottom: 6px; width: auto; max-width: none; }
	.kc-pos-center { left: 6px; right: 6px; top: auto; bottom: 6px; transform: none; }
	.kc-btn { flex: 1 1 100%; }
	.kc-pos-bottom .kc-actions { flex-wrap: wrap; }
	.kc-cat-desc { margin-left: 0; }
}
@media (prefers-reduced-motion: no-preference) {
	.kc-pos-bottom-left, .kc-pos-bottom { animation: kc-in .25s ease-out; }
	@keyframes kc-in { from { opacity: 0; } }
}
