/*
 * KG Preview Cards — Frontend Styles
 *
 * Position: fixed and appended to <body>, so CLS stays at 0.
 * Five themes are class-toggled on .kgpc-card: minimal / editorial / dark /
 * compact / wikipedia. Animation variants are class-toggled on .kgpc-card:
 * fade_scale / fade / slide_up / none. State class `is-visible` triggers the
 * entry animation; transitions run for 250ms.
 */

.kgpc-card {
	position: fixed;
	z-index: 999999;
	box-sizing: border-box;
	width: 360px;
	max-width: calc(100vw - 16px);
	background: #fff;
	color: #1d2327;
	border: 1px solid rgba(0, 0, 0, 0.08);
	border-radius: 8px;
	box-shadow: 0 12px 32px rgba(15, 23, 42, 0.12), 0 2px 6px rgba(15, 23, 42, 0.08);
	font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
	font-size: 13px;
	line-height: 1.5;
	overflow: hidden;
	opacity: 0;
	pointer-events: none;
	transform: translateY(8px) scale(0.97);
	transition: opacity 250ms ease, transform 250ms ease;
	will-change: transform, opacity;
}

.kgpc-card.is-visible {
	opacity: 1;
	pointer-events: auto;
	transform: translateY(0) scale(1);
}

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

.kgpc-card-image {
	display: block;
	width: 100%;
	height: 160px;
	overflow: hidden;
	background: #f6f7f7;
}

.kgpc-card-image img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	border: 0;
}

.kgpc-card-body {
	padding: 14px 16px 10px;
}

.kgpc-card-category {
	display: inline-block;
	font-size: 10px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	color: #2271b1;
	background: rgba(34, 113, 177, 0.08);
	padding: 3px 8px;
	border-radius: 999px;
	margin-bottom: 8px;
}

.kgpc-card-title {
	margin: 0 0 6px;
	font-size: 15px;
	font-weight: 600;
	line-height: 1.35;
	color: inherit;
}

.kgpc-card-excerpt {
	margin: 0;
	font-size: 13px;
	color: #50575e;
	display: -webkit-box;
	-webkit-line-clamp: 3;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

.kgpc-card-footer {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	padding: 10px 16px 14px;
	border-top: 1px solid rgba(0, 0, 0, 0.06);
	font-size: 12px;
	color: #646970;
}

.kgpc-card-meta {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	flex-wrap: wrap;
}

.kgpc-card-time,
.kgpc-card-author {
	color: #646970;
}

.kgpc-card-freshness {
	display: inline-block;
	padding: 1px 7px;
	border-radius: 999px;
	font-size: 11px;
	font-weight: 600;
}

.kgpc-fresh-fresh   { color: #006908; background: rgba(0, 105, 8, 0.10); }
.kgpc-fresh-recent  { color: #8a5a00; background: rgba(138, 90, 0, 0.10); }
.kgpc-fresh-stale   { color: #8a2a2a; background: rgba(138, 42, 42, 0.10); }
.kgpc-fresh-unknown { color: #50575e; background: rgba(80, 87, 94, 0.08); }

.kgpc-card-cta {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	color: #2271b1;
	text-decoration: none;
	font-weight: 600;
	white-space: nowrap;
}
.kgpc-card-cta:hover,
.kgpc-card-cta:focus {
	text-decoration: underline;
}

/* --- Theme: Minimal (default — uses base styles) -------------------------- */
.kgpc-theme-minimal {}

/* --- Theme: Editorial ----------------------------------------------------- */
.kgpc-theme-editorial .kgpc-card-image {
	height: 200px;
}
.kgpc-theme-editorial .kgpc-card-body {
	padding: 20px 22px 12px;
}
.kgpc-theme-editorial .kgpc-card-title {
	font-family: Georgia, "Times New Roman", serif;
	font-size: 18px;
	letter-spacing: -0.01em;
}
.kgpc-theme-editorial .kgpc-card-footer {
	padding: 12px 22px 18px;
}

/* --- Theme: Dark ---------------------------------------------------------- */
.kgpc-theme-dark {
	background: #1d2327;
	color: #f0f0f1;
	border-color: rgba(255, 255, 255, 0.10);
	box-shadow: 0 12px 32px rgba(0, 0, 0, 0.45), 0 0 0 1px rgba(255, 255, 255, 0.05);
}
.kgpc-theme-dark .kgpc-card-category {
	color: #72aee6;
	background: rgba(114, 174, 230, 0.12);
}
.kgpc-theme-dark .kgpc-card-excerpt,
.kgpc-theme-dark .kgpc-card-footer,
.kgpc-theme-dark .kgpc-card-time,
.kgpc-theme-dark .kgpc-card-author {
	color: #c3c4c7;
}
.kgpc-theme-dark .kgpc-card-footer {
	border-top-color: rgba(255, 255, 255, 0.08);
}
.kgpc-theme-dark .kgpc-card-cta { color: #72aee6; }

@media (prefers-color-scheme: dark) {
	.kgpc-theme-dark .kgpc-card-image { background: #2c3338; }
}

/* --- Theme: Compact ------------------------------------------------------- */
.kgpc-theme-compact {
	width: 280px;
}
.kgpc-theme-compact .kgpc-card-image { display: none; }
.kgpc-theme-compact .kgpc-card-body { padding: 12px 14px 8px; }
.kgpc-theme-compact .kgpc-card-title { font-size: 14px; }
.kgpc-theme-compact .kgpc-card-excerpt {
	-webkit-line-clamp: 1;
	font-size: 12px;
}
.kgpc-theme-compact .kgpc-card-footer { padding: 8px 14px 12px; }

/* --- Theme: Wikipedia (horizontal layout) --------------------------------- */
.kgpc-theme-wikipedia {
	width: 420px;
	border-radius: 4px;
	box-shadow: 0 6px 16px rgba(0, 0, 0, 0.12);
}
.kgpc-theme-wikipedia .kgpc-card-image {
	float: left;
	width: 120px;
	height: 120px;
}
.kgpc-theme-wikipedia .kgpc-card-body {
	margin-left: 120px;
	padding: 12px 14px 6px;
}
.kgpc-theme-wikipedia .kgpc-card-footer {
	margin-left: 120px;
	padding: 6px 14px 12px;
	border-top: 0;
}

/* --- Animation variants --------------------------------------------------- */
.kgpc-anim-fade {
	transform: none;
}
.kgpc-anim-fade.is-visible {
	transform: none;
}

.kgpc-anim-slide_up {
	transform: translateY(16px);
}
.kgpc-anim-slide_up.is-visible {
	transform: translateY(0);
}

.kgpc-anim-none {
	transition: none;
	transform: none;
}
.kgpc-anim-none.is-visible {
	transform: none;
}

/* --- Reduced motion support ----------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
	.kgpc-card {
		transition: opacity 120ms ease;
		transform: none;
	}
	.kgpc-card.is-visible {
		transform: none;
	}
}

/* ---------------------------------------------------------------------------
 * Glossary terms + tooltip
 * ---------------------------------------------------------------------------*/

.kgpc-glossary-term {
	background-image: linear-gradient(transparent calc(100% - 1px), rgba(34, 113, 177, 0.35) 1px);
	background-size: 100% 100%;
	cursor: help;
	border-radius: 2px;
}

.kgpc-glossary-term:hover,
.kgpc-glossary-term:focus {
	background-image: linear-gradient(transparent calc(100% - 1px), rgba(34, 113, 177, 0.85) 1px);
	outline: none;
}

.kgpc-glossary-tooltip {
	position: fixed;
	z-index: 999998;
	max-width: 280px;
	background: #1d2327;
	color: #f0f0f1;
	padding: 10px 12px;
	border-radius: 6px;
	font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
	font-size: 12px;
	line-height: 1.45;
	box-shadow: 0 8px 22px rgba(15, 23, 42, 0.22);
	opacity: 0;
	transform: translateY(4px);
	transition: opacity 180ms ease, transform 180ms ease;
	pointer-events: none;
}

.kgpc-glossary-tooltip.is-visible {
	opacity: 1;
	transform: translateY(0);
	pointer-events: auto;
}

.kgpc-glossary-tooltip-term {
	display: block;
	font-size: 11px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.05em;
	color: #72aee6;
	margin-bottom: 4px;
}

.kgpc-glossary-tooltip-body {
	margin: 0;
	color: inherit;
}

.kgpc-glossary-tooltip-link {
	display: inline-block;
	margin-top: 8px;
	color: #72aee6;
	font-weight: 600;
	text-decoration: none;
}

.kgpc-glossary-tooltip-link:hover,
.kgpc-glossary-tooltip-link:focus {
	text-decoration: underline;
}

/* ---------------------------------------------------------------------------
 * Author entity card
 * ---------------------------------------------------------------------------*/

.kgpc-author-card {
	position: fixed;
	z-index: 999999;
	width: 320px;
	max-width: calc(100vw - 16px);
	background: #fff;
	color: #1d2327;
	border: 1px solid rgba(0, 0, 0, 0.08);
	border-radius: 8px;
	box-shadow: 0 12px 32px rgba(15, 23, 42, 0.12), 0 2px 6px rgba(15, 23, 42, 0.08);
	font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
	font-size: 13px;
	line-height: 1.5;
	overflow: hidden;
	opacity: 0;
	pointer-events: none;
	transform: translateY(6px);
	transition: opacity 200ms ease, transform 200ms ease;
}

.kgpc-author-card.is-visible {
	opacity: 1;
	pointer-events: auto;
	transform: translateY(0);
}

.kgpc-author-card-inner {
	display: flex;
	gap: 12px;
	padding: 14px 16px;
}

.kgpc-author-card-avatar {
	width: 56px;
	height: 56px;
	border-radius: 50%;
	flex-shrink: 0;
	object-fit: cover;
	background: #f6f7f7;
}

.kgpc-author-card-body {
	flex: 1;
	min-width: 0;
}

.kgpc-author-card-name {
	font-weight: 600;
	font-size: 14px;
	color: #1d2327;
	margin-bottom: 2px;
}

.kgpc-author-card-meta {
	font-size: 11px;
	color: #646970;
	margin-bottom: 6px;
}

.kgpc-author-card-bio {
	margin: 0 0 8px;
	font-size: 12px;
	color: #50575e;
	display: -webkit-box;
	-webkit-line-clamp: 3;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

.kgpc-author-card-cta {
	color: #2271b1;
	text-decoration: none;
	font-size: 12px;
	font-weight: 600;
}

.kgpc-author-card-cta:hover,
.kgpc-author-card-cta:focus {
	text-decoration: underline;
}

@media (prefers-color-scheme: dark) {
	.kgpc-author-card-avatar {
		background: #2c3338;
	}
}

@media (prefers-reduced-motion: reduce) {
	.kgpc-glossary-tooltip,
	.kgpc-author-card {
		transition: opacity 120ms ease;
		transform: none;
	}
}

/* ---------------------------------------------------------------------------
 * Comparison mode — pin button + bottom dock
 * ---------------------------------------------------------------------------*/

.kgpc-card-pin {
	position: absolute;
	top: 8px;
	right: 8px;
	z-index: 2;
	width: 28px;
	height: 28px;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: rgba(255, 255, 255, 0.92);
	color: #1d2327;
	font-size: 13px;
	line-height: 1;
	cursor: pointer;
	box-shadow: 0 2px 6px rgba(15, 23, 42, 0.18);
	transition: transform 150ms ease, background 150ms ease;
}

.kgpc-card-pin:hover,
.kgpc-card-pin:focus {
	transform: scale(1.08);
	outline: none;
}

.kgpc-card-pin.is-pinned {
	background: #2271b1;
	color: #fff;
}

.kgpc-theme-dark .kgpc-card-pin {
	background: rgba(29, 35, 39, 0.92);
	color: #f0f0f1;
}

.kgpc-compare-dock {
	position: fixed;
	left: 0;
	right: 0;
	bottom: 0;
	z-index: 999997;
	background: #fff;
	border-top: 1px solid #dcdcde;
	box-shadow: 0 -8px 24px rgba(15, 23, 42, 0.12);
	transform: translateY(110%);
	transition: transform 280ms cubic-bezier(0.4, 0, 0.2, 1);
	font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
	font-size: 13px;
}

.kgpc-compare-dock.is-open {
	transform: translateY(0);
}

.kgpc-compare-header {
	display: flex;
	justify-content: space-between;
	align-items: center;
	padding: 8px 16px;
	border-bottom: 1px solid #f0f0f1;
}

.kgpc-compare-title {
	font-weight: 700;
	font-size: 12px;
	text-transform: uppercase;
	letter-spacing: 0.06em;
	color: #50575e;
}

.kgpc-compare-clear {
	background: transparent;
	border: 1px solid #dcdcde;
	border-radius: 4px;
	color: #50575e;
	padding: 4px 10px;
	cursor: pointer;
	font-size: 12px;
}
.kgpc-compare-clear:hover {
	color: #b32d2e;
	border-color: #b32d2e;
}

.kgpc-compare-list {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 10px;
	padding: 12px 16px 14px;
	max-width: 1200px;
	margin: 0 auto;
}

.kgpc-compare-card {
	position: relative;
	border: 1px solid #dcdcde;
	border-radius: 6px;
	overflow: hidden;
	background: #fff;
	display: flex;
	flex-direction: column;
}

.kgpc-compare-unpin {
	position: absolute;
	top: 4px;
	right: 4px;
	z-index: 2;
	width: 22px;
	height: 22px;
	border: 0;
	border-radius: 50%;
	background: rgba(255, 255, 255, 0.92);
	color: #1d2327;
	font-size: 16px;
	line-height: 1;
	cursor: pointer;
	padding: 0;
}
.kgpc-compare-unpin:hover { color: #b32d2e; }

.kgpc-compare-image {
	display: block;
	width: 100%;
	height: 80px;
	object-fit: cover;
	background: #f6f7f7;
}

.kgpc-compare-body {
	padding: 8px 12px 10px;
	display: flex;
	flex-direction: column;
	gap: 4px;
	flex: 1;
}

.kgpc-compare-category {
	font-size: 10px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.06em;
	color: #2271b1;
}

.kgpc-compare-title-link {
	color: #1d2327;
	font-weight: 600;
	text-decoration: none;
	font-size: 13px;
	line-height: 1.3;
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}
.kgpc-compare-title-link:hover { color: #2271b1; }

.kgpc-compare-excerpt {
	margin: 0;
	font-size: 12px;
	color: #50575e;
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

.kgpc-compare-meta {
	display: flex;
	align-items: center;
	gap: 8px;
	font-size: 11px;
	color: #646970;
	margin-top: auto;
}

.kgpc-compare-score {
	margin-left: auto;
	padding: 1px 7px;
	border-radius: 999px;
	font-weight: 700;
	font-size: 10px;
}
.kgpc-compare-score-good { background: rgba(0, 138, 32, 0.12); color: #006908; }
.kgpc-compare-score-fair { background: rgba(178, 105, 0, 0.12); color: #8a5a00; }
.kgpc-compare-score-poor { background: rgba(179, 45, 46, 0.12); color: #8a2a2a; }

@media (max-width: 720px) {
	.kgpc-compare-list {
		grid-template-columns: 1fr;
	}
	.kgpc-compare-image { display: none; }
}

@media (prefers-reduced-motion: reduce) {
	.kgpc-compare-dock {
		transition: opacity 120ms ease;
	}
}

/* ---------------------------------------------------------------------------
 * External link preview card
 * ---------------------------------------------------------------------------*/

.kgpc-external-card {
	position: fixed;
	z-index: 999999;
	width: 360px;
	max-width: calc(100vw - 16px);
	background: #fff;
	color: #1d2327;
	border: 1px solid rgba(0, 0, 0, 0.08);
	border-radius: 8px;
	box-shadow: 0 12px 32px rgba(15, 23, 42, 0.12), 0 2px 6px rgba(15, 23, 42, 0.08);
	font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
	font-size: 13px;
	line-height: 1.5;
	overflow: hidden;
	opacity: 0;
	pointer-events: none;
	transform: translateY(6px);
	transition: opacity 220ms ease, transform 220ms ease;
}

.kgpc-external-card.is-visible {
	opacity: 1;
	pointer-events: auto;
	transform: translateY(0);
}

.kgpc-external-card-image {
	width: 100%;
	height: 140px;
	overflow: hidden;
	background: #f6f7f7;
}

.kgpc-external-card-image img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.kgpc-external-card-body {
	padding: 12px 14px 14px;
	display: flex;
	flex-direction: column;
	gap: 6px;
}

.kgpc-external-card-badges {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 6px;
}

.kgpc-external-card-badge {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	font-size: 10px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.05em;
	color: #2271b1;
	background: rgba(34, 113, 177, 0.08);
	padding: 3px 8px;
	border-radius: 999px;
}

.kgpc-external-card-favicon {
	width: 12px;
	height: 12px;
	border-radius: 2px;
	background: #fff;
}

.kgpc-external-card-nofollow {
	font-size: 10px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.05em;
	color: #8a5a00;
	background: rgba(178, 105, 0, 0.10);
	padding: 3px 8px;
	border-radius: 999px;
}

.kgpc-external-card-title {
	margin: 2px 0 0;
	font-size: 14px;
	font-weight: 600;
	line-height: 1.35;
	color: inherit;
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

.kgpc-external-card-desc {
	margin: 0;
	font-size: 12px;
	color: #50575e;
	display: -webkit-box;
	-webkit-line-clamp: 3;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

.kgpc-external-card-site {
	font-size: 11px;
	color: #646970;
}

@media (prefers-reduced-motion: reduce) {
	.kgpc-external-card {
		transition: opacity 120ms ease;
		transform: none;
	}
}

/* ---------------------------------------------------------------------------
 * WooCommerce product preview card
 * ---------------------------------------------------------------------------*/

.kgpc-product-card { width: 380px; }

.kgpc-product-image {
	position: relative;
}

.kgpc-product-sale-badge {
	position: absolute;
	top: 8px;
	left: 8px;
	background: #b32d2e;
	color: #fff;
	font-size: 10px;
	font-weight: 700;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	padding: 3px 8px;
	border-radius: 999px;
}

.kgpc-product-price-row {
	display: flex;
	align-items: baseline;
	gap: 8px;
	margin: 6px 0 4px;
}

.kgpc-product-price,
.kgpc-product-price-sale {
	font-size: 17px;
	font-weight: 700;
	color: #1d2327;
}

.kgpc-product-price-regular del {
	color: #8c8f94;
	font-size: 13px;
	text-decoration: line-through;
}

.kgpc-product-price-sale {
	color: #b32d2e;
}

.kgpc-product-rating {
	display: flex;
	align-items: center;
	gap: 8px;
	font-size: 12px;
	color: #646970;
	margin-bottom: 6px;
}

.kgpc-product-stars {
	display: inline-flex;
	gap: 1px;
}

.kgpc-product-star {
	color: #dcdcde;
	font-size: 14px;
	line-height: 1;
	position: relative;
}
.kgpc-product-star.is-full { color: #d99a00; }
.kgpc-product-star.is-half {
	background: linear-gradient(90deg, #d99a00 50%, #dcdcde 50%);
	-webkit-background-clip: text;
	background-clip: text;
	color: transparent;
}

.kgpc-product-stock {
	display: inline-block;
	font-size: 11px;
	font-weight: 700;
	padding: 2px 8px;
	border-radius: 999px;
	margin-bottom: 8px;
}
.kgpc-stock-instock      { background: rgba(0, 138, 32, 0.12);  color: #006908; }
.kgpc-stock-outofstock   { background: rgba(179, 45, 46, 0.12); color: #8a2a2a; }
.kgpc-stock-onbackorder  { background: rgba(178, 105, 0, 0.12); color: #8a5a00; }
.kgpc-stock-unknown      { background: #f6f7f7; color: #50575e; }

.kgpc-product-desc {
	margin: 0;
	font-size: 13px;
	color: #50575e;
	display: -webkit-box;
	-webkit-line-clamp: 3;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

.kgpc-product-footer {
	display: flex;
	gap: 8px;
	align-items: center;
	justify-content: space-between;
	padding: 10px 16px 14px;
}

.kgpc-product-add-to-cart {
	display: inline-block;
	background: #2271b1;
	color: #fff !important;
	padding: 6px 12px;
	border-radius: 4px;
	font-size: 12px;
	font-weight: 600;
	text-decoration: none;
}
.kgpc-product-add-to-cart:hover { background: #135e96; }
.kgpc-product-add-to-cart.kgpc-is-disabled {
	background: #dcdcde;
	color: #50575e !important;
	cursor: not-allowed;
	pointer-events: none;
}
