/**
 * CaptenAMZ Amazon Listing Score — front-end styles.
 *
 * Everything is scoped under .captenamz-ls and sets its own box-sizing,
 * typography and colour, so the component renders identically regardless of
 * what the active theme (Hello Elementor, in this case) imposes on it.
 */

/*
 * The palette is declared for the component AND for the dialog. The dialog is
 * appended to <body> so it can sit above everything on the page, which also
 * puts it outside .captenamz-ls — where every var() in its styles would
 * resolve to nothing and silently fall back to transparent backgrounds and
 * square corners.
 */
.captenamz-ls,
.cap-modal {
	--cap-teal: #45b8a7;
	--cap-teal-dark: #2f8d80;
	--cap-teal-soft: #e7f6f3;
	--cap-gold: #f9be02;
	--cap-gold-soft: #fef6e0;

	--cap-ink: #16232b;
	--cap-body: #46606e;
	--cap-muted: #7b8f9b;
	--cap-line: #e3ebef;
	--cap-bg: #ffffff;
	--cap-bg-alt: #f6f9fa;

	--cap-critical: #d94b4b;
	--cap-high: #e8833a;
	--cap-medium: #d9a520;
	--cap-low: #6b90a8;
	--cap-good: #45b8a7;

	--cap-radius: 16px;
	--cap-radius-sm: 10px;
	--cap-shadow: 0 1px 2px rgba(22, 35, 43, .05), 0 8px 24px -12px rgba(22, 35, 43, .18);
	--cap-shadow-lg: 0 2px 4px rgba(22, 35, 43, .05), 0 24px 48px -24px rgba(22, 35, 43, .28);
}

.captenamz-ls {
	box-sizing: border-box;
	max-width: 980px;
	margin: 0 auto;
	color: var(--cap-body);
	font-size: 16px;
	line-height: 1.6;
	-webkit-font-smoothing: antialiased;
}

.captenamz-ls *,
.captenamz-ls *::before,
.captenamz-ls *::after {
	box-sizing: inherit;
}

/**
 * The hidden attribute must always win.
 *
 * The browser's own [hidden] rule is only `display: none` at user-agent
 * specificity, so ANY class rule that sets display beats it. Because the
 * loading block and the error box are flex containers, setting el.hidden = true
 * on them did nothing at all: the spinner kept turning underneath a finished
 * report, and an empty error bar sat on the page permanently.
 */
.captenamz-ls [hidden],
.captenamz-ls[hidden] {
	display: none !important;
}

.captenamz-ls h1,
.captenamz-ls h2,
.captenamz-ls h3,
.captenamz-ls h4 {
	color: var(--cap-ink);
	margin: 0;
	line-height: 1.25;
	font-weight: 700;
	letter-spacing: -.01em;
}

.captenamz-ls p {
	margin: 0;
}

/* ---------------------------------------------------------------- Intro -- */

.captenamz-ls__intro {
	text-align: center;
	margin-bottom: 28px;
}

.captenamz-ls__title {
	font-size: clamp(1.75rem, 4vw, 2.5rem);
	margin-bottom: 10px;
}

.captenamz-ls__subtitle {
	font-size: 1.0625rem;
	color: var(--cap-muted);
	max-width: 60ch;
	margin: 0 auto;
}

/* ---------------------------------------------------------------- Steps -- */

.captenamz-ls__steps {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 8px;
	list-style: none;
	margin: 0 0 24px;
	padding: 0;
	counter-reset: none;
}

.captenamz-ls__step {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 8px;
	padding: 14px 6px;
	text-align: center;
	border-radius: var(--cap-radius-sm);
	background: var(--cap-bg-alt);
	border: 1px solid var(--cap-line);
	transition: background .3s ease, border-color .3s ease;
}

.captenamz-ls__step-num {
	display: grid;
	place-items: center;
	width: 30px;
	height: 30px;
	border-radius: 50%;
	background: #fff;
	border: 1.5px solid var(--cap-line);
	color: var(--cap-muted);
	font-weight: 700;
	font-size: .875rem;
	transition: background .3s ease, color .3s ease, border-color .3s ease;
}

.captenamz-ls__step-label {
	font-size: .78rem;
	font-weight: 600;
	color: var(--cap-muted);
	line-height: 1.35;
}

.captenamz-ls__step.is-active {
	background: var(--cap-teal-soft);
	border-color: var(--cap-teal);
}

.captenamz-ls__step.is-active .captenamz-ls__step-num {
	background: var(--cap-teal);
	border-color: var(--cap-teal);
	color: #fff;
}

.captenamz-ls__step.is-active .captenamz-ls__step-label {
	color: var(--cap-teal-dark);
}

.captenamz-ls__step.is-done .captenamz-ls__step-num {
	background: var(--cap-teal-dark);
	border-color: var(--cap-teal-dark);
	color: #fff;
}

/* ----------------------------------------------------------------- Form -- */

.captenamz-ls__form {
	display: grid;
	grid-template-columns: 1fr 240px;
	gap: 16px;
	align-items: start;
	padding: 24px;
	background: var(--cap-bg);
	border: 1px solid var(--cap-line);
	border-radius: var(--cap-radius);
	box-shadow: var(--cap-shadow);
}

.captenamz-ls__field {
	display: flex;
	flex-direction: column;
	gap: 6px;
	min-width: 0;
}

.captenamz-ls__label {
	font-size: .8125rem;
	font-weight: 700;
	color: var(--cap-ink);
	letter-spacing: .01em;
}

.captenamz-ls__input,
.captenamz-ls__select {
	width: 100%;
	padding: 13px 15px;
	font-size: 1rem;
	font-family: inherit;
	color: var(--cap-ink);
	background: #fff;
	border: 1.5px solid var(--cap-line);
	border-radius: var(--cap-radius-sm);
	transition: border-color .2s ease, box-shadow .2s ease;
	appearance: none;
}

.captenamz-ls__select {
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='9' viewBox='0 0 14 9'%3E%3Cpath fill='%237b8f9b' d='M1.4 0 7 5.6 12.6 0 14 1.4 7 8.4 0 1.4z'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right 15px center;
	padding-right: 40px;
}

.captenamz-ls__input:focus,
.captenamz-ls__select:focus {
	outline: none;
	border-color: var(--cap-teal);
	box-shadow: 0 0 0 4px rgba(69, 184, 167, .16);
}

.captenamz-ls__input[aria-invalid="true"] {
	border-color: var(--cap-critical);
}

.captenamz-ls__hint {
	font-size: .8125rem;
	color: var(--cap-muted);
}

.captenamz-ls .captenamz-ls__submit {
	grid-column: 1 / -1;
	position: relative;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 10px;
	padding: 15px 28px;
	font-size: 1rem;
	font-weight: 700;
	font-family: inherit;
	color: #fff;
	background: linear-gradient(135deg, var(--cap-teal) 0%, var(--cap-teal-dark) 100%);
	border: none;
	border-radius: var(--cap-radius-sm);
	cursor: pointer;
	transition: transform .15s ease, box-shadow .2s ease, opacity .2s ease;
	box-shadow: 0 4px 14px -4px rgba(69, 184, 167, .55);
}

.captenamz-ls .captenamz-ls__submit:hover:not(:disabled) {
	transform: translateY(-1px);
	box-shadow: 0 8px 22px -6px rgba(69, 184, 167, .6);
}

.captenamz-ls .captenamz-ls__submit:focus-visible {
	outline: 3px solid var(--cap-gold);
	outline-offset: 2px;
}

.captenamz-ls .captenamz-ls__submit:disabled {
	opacity: .65;
	cursor: not-allowed;
	transform: none;
}

.captenamz-ls__spinner {
	display: none;
	width: 17px;
	height: 17px;
	border: 2.5px solid rgba(255, 255, 255, .4);
	border-top-color: #fff;
	border-radius: 50%;
	animation: captenamz-spin .7s linear infinite;
}

.captenamz-ls__submit.is-busy .captenamz-ls__spinner {
	display: block;
}

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

/* --------------------------------------------------------- Alerts/errors -- */

.captenamz-ls__alert,
.captenamz-ls__error {
	display: flex;
	flex-direction: column;
	gap: 4px;
	padding: 14px 18px;
	margin-bottom: 20px;
	border-radius: var(--cap-radius-sm);
	font-size: .9375rem;
	border: 1px solid;
}

.captenamz-ls__alert--warning {
	background: var(--cap-gold-soft);
	border-color: #f3d98a;
	color: #7a5b00;
}

.captenamz-ls__error {
	margin: 20px 0 0;
	background: #fdf0f0;
	border-color: #f2c4c4;
	color: #9c2f2f;
}

.captenamz-ls__error strong {
	display: block;
	color: #7f2222;
}

/* --------------------------------------------------------------- Loading -- */

.captenamz-ls__loading {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 16px;
	padding: 56px 20px;
	text-align: center;
}

.captenamz-ls__loading-ring {
	width: 52px;
	height: 52px;
	border: 4px solid var(--cap-teal-soft);
	border-top-color: var(--cap-teal);
	border-radius: 50%;
	animation: captenamz-spin .9s linear infinite;
}

.captenamz-ls__loading-text {
	font-weight: 600;
	color: var(--cap-body);
}

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

.captenamz-ls__report {
	margin-top: 28px;
}

.cap-card {
	background: var(--cap-bg);
	border: 1px solid var(--cap-line);
	border-radius: var(--cap-radius);
	box-shadow: var(--cap-shadow);
	padding: 26px;
	margin-bottom: 20px;
	opacity: 0;
	transform: translateY(14px);
	animation: captenamz-rise .5s cubic-bezier(.22, .8, .3, 1) forwards;
}

@keyframes captenamz-rise {
	to { opacity: 1; transform: none; }
}

@media (prefers-reduced-motion: reduce) {
	.cap-card {
		animation: none;
		opacity: 1;
		transform: none;
	}
	.captenamz-ls__loading-ring,
	.captenamz-ls__spinner {
		animation-duration: 2s;
	}
	.cap-bar__fill,
	.cap-meter__value {
		transition: none !important;
	}
}

.cap-card__title {
	font-size: 1.1875rem;
	margin-bottom: 4px;
}

.cap-card__lede {
	font-size: .9375rem;
	color: var(--cap-muted);
	margin-bottom: 18px;
}

/* -------------------------------------------------------------- Product -- */

.cap-product {
	display: grid;
	grid-template-columns: 132px 1fr;
	gap: 22px;
	align-items: start;
}

.cap-product__media {
	display: grid;
	place-items: center;
	aspect-ratio: 1;
	background: var(--cap-bg-alt);
	border: 1px solid var(--cap-line);
	border-radius: var(--cap-radius-sm);
	overflow: hidden;
}

.cap-product__media img {
	width: 100%;
	height: 100%;
	object-fit: contain;
	display: block;
}

.cap-product__none {
	font-size: .75rem;
	color: var(--cap-muted);
	text-align: center;
	padding: 10px;
}

.cap-product__name {
	font-size: 1.0625rem;
	font-weight: 700;
	color: var(--cap-ink);
	margin-bottom: 12px;
	line-height: 1.4;
}

.cap-product__meta {
	display: flex;
	flex-wrap: wrap;
	gap: 8px 10px;
	margin-bottom: 14px;
}

.cap-chip {
	display: inline-flex;
	align-items: baseline;
	gap: 6px;
	padding: 5px 11px;
	background: var(--cap-bg-alt);
	border: 1px solid var(--cap-line);
	border-radius: 999px;
	font-size: .8125rem;
	line-height: 1.4;
}

.cap-chip__key {
	color: var(--cap-muted);
	font-weight: 600;
}

.cap-chip__val {
	color: var(--cap-ink);
	font-weight: 600;
}

.cap-chip--na .cap-chip__val {
	color: var(--cap-muted);
	font-weight: 500;
	font-style: italic;
}

.cap-product__link {
	font-size: .875rem;
	font-weight: 600;
	color: var(--cap-teal-dark);
	text-decoration: none;
	border-bottom: 1px solid rgba(47, 141, 128, .35);
}

.cap-product__link:hover {
	border-bottom-color: var(--cap-teal-dark);
}

/* ---------------------------------------------------------------- Score -- */

.cap-score {
	display: grid;
	grid-template-columns: auto 1fr;
	gap: 32px;
	align-items: center;
	background: linear-gradient(135deg, #f9fdfc 0%, #f3faf8 100%);
	border-color: #cfe9e3;
}

.cap-meter {
	position: relative;
	width: 180px;
	height: 180px;
	flex: none;
}

.cap-meter svg {
	width: 100%;
	height: 100%;
	transform: rotate(-90deg);
	display: block;
}

.cap-meter__track {
	fill: none;
	stroke: #e0efec;
	stroke-width: 13;
}

.cap-meter__value {
	fill: none;
	stroke: var(--cap-teal);
	stroke-width: 13;
	stroke-linecap: round;
	transition: stroke-dashoffset 1.4s cubic-bezier(.16, 1, .3, 1);
}

.cap-meter__readout {
	position: absolute;
	inset: 0;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 0;
}

.cap-meter__number {
	font-size: 3.25rem;
	font-weight: 800;
	color: var(--cap-ink);
	line-height: 1;
	letter-spacing: -.03em;
	font-variant-numeric: tabular-nums;
}

.cap-meter__outof {
	font-size: .75rem;
	font-weight: 600;
	color: var(--cap-muted);
	margin-top: 5px;
}

.cap-score__body {
	min-width: 0;
}

.cap-score__band {
	display: inline-block;
	padding: 6px 16px;
	border-radius: 999px;
	font-size: .875rem;
	font-weight: 700;
	margin-bottom: 12px;
	background: var(--cap-teal);
	color: #fff;
}

.cap-score__band[data-band="excellent"] { background: #2f8d80; }
.cap-score__band[data-band="strong"] { background: var(--cap-teal); }
.cap-score__band[data-band="needs-improvement"] { background: var(--cap-gold); color: #5c4600; }
.cap-score__band[data-band="poor"] { background: var(--cap-high); }
.cap-score__band[data-band="critical"] { background: var(--cap-critical); }

.cap-score__note {
	font-size: .875rem;
	color: var(--cap-body);
	margin-bottom: 14px;
}

.cap-score__actions {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
}

/**
 * Buttons are declared with the component scope and with !important on the
 * properties themes fight hardest over.
 *
 * Hello Elementor plus Jeg Kit style bare `button` and `a` elements with rules
 * more specific than a single class, which rendered these as solid brand-yellow
 * blocks whose label was yellow-on-yellow and therefore invisible. A component
 * that has to survive an unknown host theme cannot rely on politeness here.
 */
.captenamz-ls .cap-btn,
.captenamz-ls button.cap-btn,
.captenamz-ls a.cap-btn,
.cap-modal .cap-btn,
.cap-modal button.cap-btn,
.cap-modal a.cap-btn {
	display: inline-flex !important;
	align-items: center;
	justify-content: center;
	gap: 8px;
	width: auto;
	min-height: 0;
	margin: 0;
	padding: 11px 20px !important;
	font-size: .9375rem !important;
	font-weight: 700 !important;
	font-family: inherit !important;
	line-height: 1.3 !important;
	letter-spacing: normal !important;
	text-transform: none !important;
	text-decoration: none !important;
	text-shadow: none !important;
	border-radius: var(--cap-radius-sm) !important;
	border: 1.5px solid var(--cap-teal) !important;
	background: #fff !important;
	background-image: none !important;
	color: var(--cap-teal-dark) !important;
	cursor: pointer;
	appearance: none;
	-webkit-appearance: none;
	box-shadow: none;
	transition: background-color .2s ease, color .2s ease, transform .15s ease;
}

.captenamz-ls .cap-btn:hover,
.captenamz-ls button.cap-btn:hover,
.captenamz-ls a.cap-btn:hover,
.cap-modal .cap-btn:hover,
.cap-modal button.cap-btn:hover,
.cap-modal a.cap-btn:hover {
	background: var(--cap-teal-soft) !important;
	color: var(--cap-teal-dark) !important;
	transform: translateY(-1px);
}

.captenamz-ls .cap-btn--primary,
.captenamz-ls button.cap-btn--primary,
.captenamz-ls a.cap-btn--primary,
.cap-modal .cap-btn--primary,
.cap-modal button.cap-btn--primary,
.cap-modal a.cap-btn--primary {
	background: var(--cap-gold) !important;
	border-color: var(--cap-gold) !important;
	color: #4a3800 !important;
	box-shadow: 0 4px 14px -4px rgba(249, 190, 2, .6);
}

.captenamz-ls .cap-btn--primary:hover,
.captenamz-ls button.cap-btn--primary:hover,
.captenamz-ls a.cap-btn--primary:hover,
.cap-modal .cap-btn--primary:hover,
.cap-modal button.cap-btn--primary:hover,
.cap-modal a.cap-btn--primary:hover {
	background: #ffcb26 !important;
	border-color: #ffcb26 !important;
	color: #4a3800 !important;
}

.captenamz-ls .cap-btn:focus-visible,
.cap-modal .cap-btn:focus-visible {
	outline: 3px solid var(--cap-teal-dark) !important;
	outline-offset: 2px;
}

/* ------------------------------------------------------------ Breakdown -- */

.cap-bars {
	display: flex;
	flex-direction: column;
	gap: 15px;
}

.cap-bar__head {
	display: flex;
	justify-content: space-between;
	align-items: baseline;
	gap: 12px;
	margin-bottom: 6px;
}

.cap-bar__name {
	font-size: .9375rem;
	font-weight: 700;
	color: var(--cap-ink);
}

.cap-bar__score {
	font-size: .8125rem;
	font-weight: 700;
	color: var(--cap-body);
	font-variant-numeric: tabular-nums;
	white-space: nowrap;
}

.cap-bar__track {
	height: 9px;
	background: var(--cap-bg-alt);
	border-radius: 999px;
	overflow: hidden;
}

.cap-bar__fill {
	height: 100%;
	width: 0;
	border-radius: 999px;
	background: linear-gradient(90deg, var(--cap-teal) 0%, #5fd0be 100%);
	transition: width 1.1s cubic-bezier(.16, 1, .3, 1);
}

.cap-bar__fill[data-tier="mid"] { background: linear-gradient(90deg, var(--cap-gold) 0%, #ffd449 100%); }
.cap-bar__fill[data-tier="low"] { background: linear-gradient(90deg, var(--cap-critical) 0%, #e87070 100%); }

.cap-bar__detail {
	font-size: .8125rem;
	color: var(--cap-muted);
	margin-top: 6px;
}

.cap-bar--excluded .cap-bar__track {
	background: repeating-linear-gradient(45deg, #f0f4f6, #f0f4f6 6px, #e6ecef 6px, #e6ecef 12px);
}

.cap-bar--excluded .cap-bar__name,
.cap-bar--excluded .cap-bar__score {
	color: var(--cap-muted);
}

.cap-tag-na {
	display: inline-block;
	padding: 2px 9px;
	border-radius: 999px;
	background: var(--cap-bg-alt);
	border: 1px solid var(--cap-line);
	color: var(--cap-muted);
	font-size: .6875rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: .04em;
	vertical-align: middle;
}

/* --------------------------------------------------------------- Issues -- */

.cap-issues {
	display: flex;
	flex-direction: column;
	gap: 14px;
}

.cap-issue {
	border: 1px solid var(--cap-line);
	border-left: 4px solid var(--cap-low);
	border-radius: var(--cap-radius-sm);
	padding: 18px 20px;
	background: #fff;
}

.cap-issue[data-priority="critical"] { border-left-color: var(--cap-critical); }
.cap-issue[data-priority="high"] { border-left-color: var(--cap-high); }
.cap-issue[data-priority="medium"] { border-left-color: var(--cap-medium); }
.cap-issue[data-priority="low"] { border-left-color: var(--cap-low); }

.cap-issue__head {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 10px;
	margin-bottom: 12px;
}

.cap-issue__title {
	font-size: 1rem;
	font-weight: 700;
	color: var(--cap-ink);
	margin: 0;
	flex: 1 1 auto;
	min-width: 220px;
}

.cap-badge {
	display: inline-block;
	padding: 3px 11px;
	border-radius: 999px;
	font-size: .6875rem;
	font-weight: 800;
	text-transform: uppercase;
	letter-spacing: .05em;
	color: #fff;
	white-space: nowrap;
}

.cap-badge[data-priority="critical"] { background: var(--cap-critical); }
.cap-badge[data-priority="high"] { background: var(--cap-high); }
.cap-badge[data-priority="medium"] { background: var(--cap-medium); color: #4a3800; }
.cap-badge[data-priority="low"] { background: var(--cap-low); }

.cap-badge--section {
	background: var(--cap-bg-alt);
	color: var(--cap-muted);
	border: 1px solid var(--cap-line);
}

.cap-issue__row {
	margin-bottom: 10px;
}

.cap-issue__row:last-child {
	margin-bottom: 0;
}

.cap-issue__label {
	display: block;
	font-size: .6875rem;
	font-weight: 800;
	text-transform: uppercase;
	letter-spacing: .06em;
	color: var(--cap-muted);
	margin-bottom: 3px;
}

.cap-issue__text {
	font-size: .9375rem;
	color: var(--cap-body);
	line-height: 1.6;
}

.cap-empty {
	display: flex;
	align-items: center;
	gap: 10px;
	padding: 18px;
	background: var(--cap-teal-soft);
	border-radius: var(--cap-radius-sm);
	color: var(--cap-teal-dark);
	font-weight: 600;
	font-size: .9375rem;
}

/* ------------------------------------------------------------- Keywords -- */

.cap-keywords {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
}

.cap-kw {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	padding: 6px 13px;
	border-radius: 999px;
	background: var(--cap-teal-soft);
	border: 1px solid #c9e8e2;
	font-size: .875rem;
	color: var(--cap-teal-dark);
	font-weight: 600;
}

.cap-kw__n {
	font-size: .75rem;
	font-weight: 700;
	color: #fff;
	background: var(--cap-teal);
	border-radius: 999px;
	padding: 1px 7px;
	font-variant-numeric: tabular-nums;
}

.cap-subhead {
	font-size: .8125rem;
	font-weight: 800;
	text-transform: uppercase;
	letter-spacing: .05em;
	color: var(--cap-muted);
	margin: 20px 0 10px;
}

/* ------------------------------------------------------------- Coverage -- */

.cap-coverage {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
	gap: 18px;
}

.cap-coverage__col h4 {
	font-size: .8125rem;
	text-transform: uppercase;
	letter-spacing: .05em;
	margin-bottom: 10px;
	display: flex;
	align-items: center;
	gap: 7px;
}

.cap-dot {
	width: 9px;
	height: 9px;
	border-radius: 50%;
	flex: none;
}

.cap-dot--ok { background: var(--cap-good); }
.cap-dot--missing { background: var(--cap-high); }
.cap-dot--na { background: var(--cap-muted); }

.cap-coverage__list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 5px;
}

.cap-coverage__list li {
	font-size: .875rem;
	color: var(--cap-body);
	padding-left: 16px;
	position: relative;
}

.cap-coverage__list li::before {
	content: "";
	position: absolute;
	left: 0;
	top: .55em;
	width: 6px;
	height: 6px;
	border-radius: 50%;
	background: var(--cap-line);
}

.cap-notes {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 9px;
}

.cap-notes li {
	font-size: .8438rem;
	color: var(--cap-muted);
	line-height: 1.55;
	padding-left: 20px;
	position: relative;
}

.cap-notes li::before {
	content: "i";
	position: absolute;
	left: 0;
	top: 1px;
	width: 14px;
	height: 14px;
	border-radius: 50%;
	background: var(--cap-bg-alt);
	border: 1px solid var(--cap-line);
	color: var(--cap-muted);
	font-size: .625rem;
	font-weight: 800;
	font-style: italic;
	text-align: center;
	line-height: 13px;
}

/* ------------------------------------------------------------------ CTA -- */

.cap-cta {
	text-align: center;
	background: linear-gradient(135deg, var(--cap-ink) 0%, #24404e 100%);
	border: none;
	color: #d7e5ec;
	padding: 38px 30px;
}

.cap-cta h2 {
	color: #fff;
	font-size: 1.5rem;
	margin-bottom: 10px;
}

.cap-cta p {
	max-width: 60ch;
	margin: 0 auto 22px;
	font-size: .9375rem;
	line-height: 1.65;
}

.captenamz-ls .cap-cta .cap-btn {
	background: var(--cap-gold);
	border-color: var(--cap-gold);
	color: #4d3b00;
	padding: 14px 30px;
	font-size: 1rem;
}

.captenamz-ls .cap-cta .cap-btn:hover {
	background: #ffcb26;
	border-color: #ffcb26;
}

/* ------------------------------------------------------------------ FAQ -- */

.captenamz-ls-faq {
	margin-top: 40px;
}

.captenamz-ls-faq__heading {
	font-size: 1.625rem;
	margin-bottom: 18px;
}

.captenamz-ls-faq__list {
	display: flex;
	flex-direction: column;
	gap: 10px;
}

.captenamz-ls-faq__item {
	border: 1px solid var(--cap-line);
	border-radius: var(--cap-radius-sm);
	background: #fff;
	overflow: hidden;
}

.captenamz-ls-faq__question {
	padding: 16px 20px;
	font-weight: 700;
	color: var(--cap-ink);
	cursor: pointer;
	list-style: none;
	position: relative;
	padding-right: 46px;
	font-size: .9688rem;
}

.captenamz-ls-faq__question::-webkit-details-marker {
	display: none;
}

.captenamz-ls-faq__question::after {
	content: "+";
	position: absolute;
	right: 20px;
	top: 50%;
	transform: translateY(-50%);
	font-size: 1.375rem;
	font-weight: 400;
	color: var(--cap-teal);
	line-height: 1;
}

.captenamz-ls-faq__item[open] .captenamz-ls-faq__question::after {
	content: "\2212";
}

.captenamz-ls-faq__item[open] .captenamz-ls-faq__question {
	background: var(--cap-teal-soft);
}

.captenamz-ls-faq__answer {
	padding: 16px 20px 20px;
	font-size: .9375rem;
	line-height: 1.65;
	border-top: 1px solid var(--cap-line);
}

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

@media (max-width: 782px) {
	.captenamz-ls__form {
		grid-template-columns: 1fr;
		padding: 20px;
	}

	.cap-score {
		grid-template-columns: 1fr;
		justify-items: center;
		text-align: center;
		gap: 22px;
	}

	.cap-score__actions {
		justify-content: center;
	}

	.cap-product {
		grid-template-columns: 1fr;
	}

	.cap-product__media {
		max-width: 180px;
	}

	.captenamz-ls__steps {
		grid-template-columns: repeat(2, 1fr);
	}

	.cap-card {
		padding: 20px;
	}
}

@media (max-width: 480px) {
	.captenamz-ls {
		font-size: 15px;
	}

	.cap-meter {
		width: 152px;
		height: 152px;
	}

	.cap-meter__number {
		font-size: 2.75rem;
	}

	.captenamz-ls__step-label {
		font-size: .7rem;
	}
}

/* ---------------------------------------------------------------- Print -- */

@media print {
	.captenamz-ls {
		max-width: none;
		font-size: 11pt;
		color: #000;
	}

	.captenamz-ls__form,
	.captenamz-ls__steps,
	.captenamz-ls__loading,
	.captenamz-ls__error,
	.cap-score__actions,
	.cap-cta,
	.captenamz-ls-faq {
		display: none !important;
	}

	.cap-card {
		box-shadow: none;
		border: 1px solid #bbb;
		break-inside: avoid;
		page-break-inside: avoid;
		animation: none;
		opacity: 1;
		transform: none;
		margin-bottom: 14px;
		padding: 16px;
	}

	.cap-issue {
		break-inside: avoid;
		page-break-inside: avoid;
	}

	.cap-bar__fill {
		transition: none;
		print-color-adjust: exact;
		-webkit-print-color-adjust: exact;
	}

	.cap-meter__value,
	.cap-badge,
	.cap-score__band,
	.cap-kw {
		print-color-adjust: exact;
		-webkit-print-color-adjust: exact;
	}

	.cap-print-brand {
		display: block !important;
		margin-bottom: 14px;
		padding-bottom: 10px;
		border-bottom: 2px solid var(--cap-teal);
	}
}

.cap-print-brand {
	display: none;
}

/* ============================================================ Report v2 == */

/**
 * Section headings with an icon, so a long report reads as distinct chapters
 * rather than one undifferentiated column of cards.
 */
.cap-head {
	display: flex;
	align-items: flex-start;
	gap: 14px;
	margin-bottom: 20px;
}

.cap-head__icon {
	display: grid;
	place-items: center;
	flex: none;
	width: 40px;
	height: 40px;
	border-radius: 12px;
	background: var(--cap-teal-soft);
	color: var(--cap-teal-dark);
}

.cap-head__text {
	min-width: 0;
}

.cap-head .cap-card__title {
	margin-bottom: 3px;
}

.cap-head .cap-card__lede {
	margin-bottom: 0;
}

.cap-ico {
	display: inline-flex;
	width: 20px;
	height: 20px;
	flex: none;
}

.cap-ico svg {
	width: 100%;
	height: 100%;
	display: block;
}

.cap-card--accent {
	border-color: #f3d3d3;
	background: linear-gradient(180deg, #fffafa 0%, #fff 62%);
}

.cap-card--accent .cap-head__icon {
	background: #fdecec;
	color: var(--cap-critical);
}

/* ------------------------------------------------------- Severity tiles -- */

.cap-tiles {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 10px;
	margin: 16px 0 18px;
}

.cap-tile {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 2px;
	padding: 12px 6px;
	border-radius: var(--cap-radius-sm);
	background: #fff;
	border: 1px solid var(--cap-line);
	border-top: 3px solid var(--cap-line);
}

.cap-tile[data-priority="critical"] { border-top-color: var(--cap-critical); }
.cap-tile[data-priority="high"]     { border-top-color: var(--cap-high); }
.cap-tile[data-priority="medium"]   { border-top-color: var(--cap-medium); }
.cap-tile[data-priority="low"]      { border-top-color: var(--cap-low); }

.cap-tile__n {
	font-size: 1.5rem;
	font-weight: 800;
	line-height: 1;
	color: var(--cap-ink);
	font-variant-numeric: tabular-nums;
}

.cap-tile__label {
	font-size: .6875rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: .05em;
	color: var(--cap-muted);
}

/* ------------------------------------------------------------- Gating --- */

/**
 * Locked cards carry placeholder text only: the real finding is redacted on
 * the server and never reaches the browser. The blur is presentation, not the
 * security boundary, so a reader who disables CSS still learns nothing.
 */
.cap-issue--locked {
	position: relative;
	overflow: hidden;
	user-select: none;
}

.cap-issue--locked .cap-issue__title,
.cap-issue--locked .cap-issue__body {
	filter: blur(5px);
	opacity: .55;
	pointer-events: none;
}

.cap-blur {
	filter: blur(4.5px);
	opacity: .55;
	user-select: none;
	pointer-events: none;
}

.cap-lock {
	position: absolute;
	inset: 0;
	display: grid;
	place-items: center;
	background: linear-gradient(180deg, rgba(255, 255, 255, .34) 0%, rgba(255, 255, 255, .72) 100%);
}

.cap-lock__pill {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: 8px 16px;
	border-radius: 999px;
	background: var(--cap-ink);
	color: #fff;
	font-size: .8125rem;
	font-weight: 700;
	box-shadow: 0 6px 18px -6px rgba(22, 35, 43, .5);
}

.cap-lock__pill .cap-ico {
	width: 15px;
	height: 15px;
}

/*
 * The badge opens the capture form, so it has to read as a control.
 *
 * It is written as element+class inside the plugin root on purpose. Turning the
 * badge from a <span> into a <button> put it inside the reach of the theme's
 * own button styling — Elementor's kit sets "background-color", "color",
 * padding and radius on a bare "button" from a rule carrying a class, which
 * outranks a single class of ours. The result was a yellow lozenge with yellow
 * text in it, i.e. no text at all. Every property the theme sets is therefore
 * restated here at a weight that wins, rather than left to be inherited.
 */
.captenamz-ls .cap-lock button.cap-lock__pill,
.captenamz-ls .cap-lock a.cap-lock__pill {
	appearance: none;
	-webkit-appearance: none;
	display: inline-flex !important;
	align-items: center;
	justify-content: center;
	gap: 8px;
	width: auto !important;
	min-width: 0 !important;
	margin: 0 !important;
	padding: 8px 16px !important;
	border: 1px solid transparent !important;
	border-radius: 999px !important;
	background: var(--cap-ink) !important;
	background-image: none !important;
	color: #fff !important;
	font-family: inherit !important;
	font-size: .8125rem !important;
	font-weight: 700 !important;
	line-height: 1.2 !important;
	letter-spacing: normal !important;
	text-align: center;
	text-decoration: none !important;
	text-transform: none !important;
	text-shadow: none !important;
	box-shadow: 0 6px 18px -6px rgba(22, 35, 43, .5);
	cursor: pointer;
	transition: background-color .15s ease, color .15s ease, box-shadow .15s ease;
}

/*
 * Hover and keyboard focus invert the badge: white face, gold label. The lock
 * icon follows because it is drawn in currentColor, and the hairline border
 * keeps the white state from dissolving into the card behind it.
 */
.captenamz-ls .cap-lock button.cap-lock__pill:hover,
.captenamz-ls .cap-lock button.cap-lock__pill:focus-visible,
.captenamz-ls .cap-lock a.cap-lock__pill:hover,
.captenamz-ls .cap-lock a.cap-lock__pill:focus-visible {
	background: #fff !important;
	background-image: none !important;
	border-color: rgba(22, 35, 43, .14) !important;
	color: var(--cap-gold) !important;
	box-shadow: 0 10px 24px -8px rgba(22, 35, 43, .45);
}

.captenamz-ls .cap-lock button.cap-lock__pill:focus-visible,
.captenamz-ls .cap-lock a.cap-lock__pill:focus-visible {
	outline: 3px solid var(--cap-ink) !important;
	outline-offset: 2px;
}

.captenamz-ls .cap-lock button.cap-lock__pill .cap-ico,
.captenamz-ls .cap-lock a.cap-lock__pill .cap-ico {
	width: 15px;
	height: 15px;
	color: inherit;
}

@media (prefers-reduced-motion: reduce) {
	.captenamz-ls .cap-lock button.cap-lock__pill,
	.captenamz-ls .cap-lock a.cap-lock__pill {
		transition: none;
	}
}

.cap-kw--locked {
	filter: blur(4px);
	opacity: .5;
	user-select: none;
	pointer-events: none;
}

.cap-unlock {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 14px;
	margin-top: 18px;
	padding: 18px 20px;
	border-radius: var(--cap-radius-sm);
	background: linear-gradient(135deg, var(--cap-ink) 0%, #24404e 100%);
	color: #d7e5ec;
}

.cap-unlock__text {
	display: flex;
	flex-direction: column;
	gap: 3px;
	min-width: 0;
}

.cap-unlock__text strong {
	color: #fff;
	font-size: 1rem;
}

.cap-unlock__text span {
	font-size: .8438rem;
	line-height: 1.5;
}

/* --------------------------------------------------- Catalog coherence -- */

.cap-card--coherence .cap-head__icon {
	background: var(--cap-gold-soft);
	color: #8a6a00;
}

.cap-coherence-status {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 12px;
	margin-bottom: 16px;
}

.cap-coherence-chip {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: 9px 18px;
	border-radius: 999px;
	font-size: .9375rem;
	font-weight: 700;
	border: 1.5px solid;
}

.cap-coherence-chip .cap-ico {
	width: 17px;
	height: 17px;
}

.cap-coherence-chip[data-state="good"]    { background: var(--cap-teal-soft); border-color: var(--cap-teal); color: var(--cap-teal-dark); }
.cap-coherence-chip[data-state="warn"]    { background: var(--cap-gold-soft); border-color: #e8c765; color: #7a5b00; }
.cap-coherence-chip[data-state="bad"]     { background: #fdecec; border-color: #f0b8b8; color: #9c2f2f; }
.cap-coherence-chip[data-state="unknown"] { background: var(--cap-bg-alt); border-color: var(--cap-line); color: var(--cap-muted); }
.cap-coherence-chip[data-state="locked"]  { background: var(--cap-ink); border-color: var(--cap-ink); color: #fff; }

.cap-coherence-score {
	font-size: .875rem;
	font-weight: 700;
	color: var(--cap-body);
	font-variant-numeric: tabular-nums;
}

.cap-coh-list {
	display: flex;
	flex-direction: column;
	border: 1px solid var(--cap-line);
	border-radius: var(--cap-radius-sm);
	overflow: hidden;
}

.cap-coh-row {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: 6px 14px;
	padding: 12px 16px;
	border-bottom: 1px solid var(--cap-line);
}

.cap-coh-row:last-child {
	border-bottom: none;
}

.cap-coh-row:nth-child(odd) {
	background: var(--cap-bg-alt);
}

.cap-coh-row__name {
	font-size: .875rem;
	font-weight: 700;
	color: var(--cap-ink);
	flex: none;
	min-width: 190px;
}

.cap-coh-row__detail {
	font-size: .8438rem;
	color: var(--cap-body);
	flex: 1 1 200px;
	min-width: 0;
}

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

@media (max-width: 782px) {
	.cap-tiles {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.cap-unlock {
		flex-direction: column;
		align-items: stretch;
		text-align: center;
	}

	.cap-unlock .cap-btn {
		justify-content: center;
	}

	.cap-coh-row__name {
		min-width: 0;
		flex: 1 1 100%;
	}

	.cap-head {
		gap: 11px;
	}
}

/* -------------------------------------------------------------- Print --- */

@media print {
	.cap-unlock,
	.cap-lock {
		display: none !important;
	}

	/* A locked finding stays locked in the PDF; unblurring it here would hand
	   over exactly what the gate is holding back. */
	.cap-issue--locked {
		display: none !important;
	}

	.cap-kw--locked {
		display: none !important;
	}

	.cap-blur {
		filter: none;
		opacity: 1;
	}

	.cap-tiles {
		break-inside: avoid;
	}
}

/* ============================================================ Report v3 == */

/**
 * UI polish layer. Presentation only: nothing here changes what the report
 * contains, how it is gated, or how it is fetched.
 *
 * Every text/background pair below was checked against WCAG 2.1 AA (4.5:1 for
 * small text), so severity colours stay readable at label size, not only for
 * the big numbers.
 */
.captenamz-ls {
	/* Solid fills (white text on these is >= 5:1, dark text on gold >= 7:1). */
	--cap-sev-critical: #c42b36;
	--cap-sev-critical-2: #9f1d24;
	--cap-sev-high: #c2410c;
	--cap-sev-high-2: #9a3412;
	--cap-sev-medium: #f5b700;
	--cap-sev-medium-2: #e39f00;
	--cap-sev-medium-ink: #3b2a00;
	--cap-sev-low: #2f6f8f;
	--cap-sev-low-2: #1f5670;

	/* Coloured text on white (all >= 4.5:1). */
	--cap-txt-good: #1f7a6d;
	--cap-txt-mid: #9a6b00;
	--cap-txt-high: #b54708;
	--cap-txt-bad: #b42318;

	/* Tints for backgrounds behind dark text. */
	--cap-tint-critical: #fef3f2;
	--cap-tint-high: #fff6ed;
	--cap-tint-medium: #fffaeb;
	--cap-tint-low: #f0f7fb;
}

/* ------------------------------------------------ Severity tiles (full) -- */

.captenamz-ls .cap-tiles {
	gap: 12px;
	margin: 18px 0 20px;
}

.captenamz-ls .cap-tile {
	position: relative;
	overflow: hidden;
	gap: 6px;
	padding: 16px 8px 14px;
	border: none;
	border-radius: 14px;
	color: #fff;
	isolation: isolate;
	transition: transform .18s ease, box-shadow .18s ease;
	print-color-adjust: exact;
	-webkit-print-color-adjust: exact;
}

/* Soft highlight in the corner gives the flat fill some depth. */
.captenamz-ls .cap-tile::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background: radial-gradient(120% 90% at 0% 0%, rgba(255, 255, 255, .22) 0%, rgba(255, 255, 255, 0) 55%);
	pointer-events: none;
}

.captenamz-ls .cap-tile:hover {
	transform: translateY(-2px);
}

.captenamz-ls .cap-tile[data-priority="critical"] {
	background: linear-gradient(145deg, var(--cap-sev-critical) 0%, var(--cap-sev-critical-2) 100%);
	box-shadow: 0 10px 22px -12px rgba(196, 43, 54, .75);
}

.captenamz-ls .cap-tile[data-priority="high"] {
	background: linear-gradient(145deg, var(--cap-sev-high) 0%, var(--cap-sev-high-2) 100%);
	box-shadow: 0 10px 22px -12px rgba(194, 65, 12, .75);
}

.captenamz-ls .cap-tile[data-priority="medium"] {
	background: linear-gradient(145deg, var(--cap-sev-medium) 0%, var(--cap-sev-medium-2) 100%);
	box-shadow: 0 10px 22px -12px rgba(227, 159, 0, .8);
	color: var(--cap-sev-medium-ink);
}

.captenamz-ls .cap-tile[data-priority="low"] {
	background: linear-gradient(145deg, var(--cap-sev-low) 0%, var(--cap-sev-low-2) 100%);
	box-shadow: 0 10px 22px -12px rgba(47, 111, 143, .75);
}

.captenamz-ls .cap-tile .cap-tile__n {
	font-size: 2rem;
	font-weight: 800;
	line-height: 1;
	color: inherit;
	letter-spacing: -.02em;
}

.captenamz-ls .cap-tile .cap-tile__label {
	font-size: .75rem;
	font-weight: 800;
	letter-spacing: .08em;
	color: inherit;
}

/* A zero count keeps its full colour but drops the glow, so it reads as clear. */
.captenamz-ls .cap-tile--zero {
	box-shadow: none !important;
}

/* ------------------------------------------------------------ Score card -- */

.captenamz-ls .cap-score {
	gap: 36px;
	padding: 30px;
	background:
		radial-gradient(140% 120% at 0% 0%, #ecf8f5 0%, rgba(236, 248, 245, 0) 55%),
		linear-gradient(135deg, #fbfefd 0%, #f4faf8 100%);
}

.captenamz-ls .cap-meter {
	width: 190px;
	height: 190px;
	border-radius: 50%;
	background: #fff;
	box-shadow: 0 14px 34px -18px rgba(22, 35, 43, .35);
}

.captenamz-ls .cap-meter__track {
	stroke: #e8f0ee;
}

.captenamz-ls .cap-meter__number {
	font-size: 3.5rem;
}

/* The number takes the band colour, using text-safe shades. */
.captenamz-ls .cap-score[data-band="excellent"] .cap-meter__number,
.captenamz-ls .cap-score[data-band="strong"] .cap-meter__number { color: var(--cap-txt-good); }
.captenamz-ls .cap-score[data-band="needs-improvement"] .cap-meter__number { color: var(--cap-txt-mid); }
.captenamz-ls .cap-score[data-band="poor"] .cap-meter__number { color: var(--cap-txt-high); }
.captenamz-ls .cap-score[data-band="critical"] .cap-meter__number { color: var(--cap-txt-bad); }

.captenamz-ls .cap-meter__outof {
	font-size: .6875rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: .08em;
}

.captenamz-ls .cap-score__band {
	padding: 7px 16px;
	font-size: .8125rem;
	letter-spacing: .02em;
	box-shadow: 0 6px 14px -8px rgba(22, 35, 43, .4);
}

.captenamz-ls .cap-score__band[data-band="excellent"],
.captenamz-ls .cap-score__band[data-band="strong"] { background: var(--cap-txt-good); color: #fff; }
.captenamz-ls .cap-score__band[data-band="needs-improvement"] { background: var(--cap-sev-medium); color: var(--cap-sev-medium-ink); }
.captenamz-ls .cap-score__band[data-band="poor"] { background: var(--cap-sev-high); color: #fff; }
.captenamz-ls .cap-score__band[data-band="critical"] { background: var(--cap-sev-critical); color: #fff; }

.captenamz-ls .cap-score__note {
	font-size: .9375rem;
	margin-bottom: 0;
}

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

.captenamz-ls .cap-score__actions {
	gap: 12px;
}

.captenamz-ls .cap-btn .cap-ico {
	width: 18px;
	height: 18px;
}

.captenamz-ls .cap-btn,
.captenamz-ls button.cap-btn,
.captenamz-ls a.cap-btn {
	padding: 12px 20px !important;
	border-color: #b9ddd6 !important;
	color: var(--cap-txt-good) !important;
}

.captenamz-ls .cap-btn:hover,
.captenamz-ls button.cap-btn:hover,
.captenamz-ls a.cap-btn:hover {
	border-color: var(--cap-teal) !important;
	color: var(--cap-txt-good) !important;
}

.captenamz-ls .cap-btn--solid,
.captenamz-ls button.cap-btn--solid {
	background: linear-gradient(135deg, #2a9a8b 0%, var(--cap-txt-good) 100%) !important;
	border-color: var(--cap-txt-good) !important;
	color: #fff !important;
	box-shadow: 0 8px 18px -10px rgba(31, 122, 109, .8);
}

.captenamz-ls .cap-btn--solid:hover,
.captenamz-ls button.cap-btn--solid:hover {
	background: linear-gradient(135deg, #25897b 0%, #186559 100%) !important;
	border-color: #186559 !important;
	color: #fff !important;
}

.captenamz-ls .cap-btn--primary,
.captenamz-ls a.cap-btn--primary {
	border-color: var(--cap-gold) !important;
	color: #3b2a00 !important;
}

.captenamz-ls .cap-btn--primary:hover,
.captenamz-ls a.cap-btn--primary:hover {
	border-color: #ffcb26 !important;
	color: #3b2a00 !important;
}

/* ------------------------------------------------------------- Breakdown -- */

.captenamz-ls .cap-bars {
	gap: 16px;
}

.captenamz-ls .cap-bar {
	padding-bottom: 16px;
	border-bottom: 1px dashed var(--cap-line);
}

.captenamz-ls .cap-bar:last-child {
	padding-bottom: 0;
	border-bottom: none;
}

.captenamz-ls .cap-bar__head {
	align-items: center;
	margin-bottom: 8px;
}

.captenamz-ls .cap-bar__score {
	padding: 3px 11px;
	border-radius: 999px;
	font-size: .8125rem;
	font-weight: 800;
	background: var(--cap-bg-alt);
	color: var(--cap-ink);
	border: 1px solid var(--cap-line);
}

.captenamz-ls .cap-bar__score[data-tier="high"] { background: var(--cap-teal-soft); border-color: #bfe5dd; color: var(--cap-txt-good); }
.captenamz-ls .cap-bar__score[data-tier="mid"]  { background: var(--cap-tint-medium); border-color: #f5dc8f; color: var(--cap-txt-mid); }
.captenamz-ls .cap-bar__score[data-tier="low"]  { background: var(--cap-tint-critical); border-color: #f5c2bd; color: var(--cap-txt-bad); }

.captenamz-ls .cap-bar__track {
	height: 10px;
	background: #edf2f4;
}

.captenamz-ls .cap-bar__fill[data-tier="high"] { background: linear-gradient(90deg, #2a9a8b 0%, #4fc7b5 100%); }
.captenamz-ls .cap-bar__fill[data-tier="mid"]  { background: linear-gradient(90deg, #e39f00 0%, #f7c948 100%); }
.captenamz-ls .cap-bar__fill[data-tier="low"]  { background: linear-gradient(90deg, #c42b36 0%, #e5646c 100%); }

.captenamz-ls .cap-bar__detail {
	font-size: .8438rem;
	color: var(--cap-body);
	margin-top: 8px;
}

/* ---------------------------------------------------------------- Issues -- */

.captenamz-ls .cap-issue {
	border-left-width: 5px;
	transition: box-shadow .2s ease;
}

.captenamz-ls .cap-issue:hover {
	box-shadow: 0 10px 24px -18px rgba(22, 35, 43, .45);
}

.captenamz-ls .cap-issue[data-priority="critical"] { border-left-color: var(--cap-sev-critical); background: linear-gradient(90deg, var(--cap-tint-critical) 0%, #fff 45%); }
.captenamz-ls .cap-issue[data-priority="high"]     { border-left-color: var(--cap-sev-high);     background: linear-gradient(90deg, var(--cap-tint-high) 0%, #fff 45%); }
.captenamz-ls .cap-issue[data-priority="medium"]   { border-left-color: var(--cap-sev-medium);   background: linear-gradient(90deg, var(--cap-tint-medium) 0%, #fff 45%); }
.captenamz-ls .cap-issue[data-priority="low"]      { border-left-color: var(--cap-sev-low);      background: linear-gradient(90deg, var(--cap-tint-low) 0%, #fff 45%); }

.captenamz-ls .cap-badge {
	padding: 4px 11px;
	letter-spacing: .06em;
}

.captenamz-ls .cap-badge[data-priority="critical"] { background: var(--cap-sev-critical); color: #fff; }
.captenamz-ls .cap-badge[data-priority="high"]     { background: var(--cap-sev-high); color: #fff; }
.captenamz-ls .cap-badge[data-priority="medium"]   { background: var(--cap-sev-medium); color: var(--cap-sev-medium-ink); }
.captenamz-ls .cap-badge[data-priority="low"]      { background: var(--cap-sev-low); color: #fff; }

.captenamz-ls .cap-badge--section {
	background: #fff;
	color: var(--cap-body);
}

.captenamz-ls .cap-issue__label {
	color: var(--cap-body);
}

.captenamz-ls .cap-issue__row + .cap-issue__row {
	padding-top: 10px;
	border-top: 1px solid rgba(22, 35, 43, .06);
}

/* Muted grey body text is lifted a step so it reads comfortably, not faintly. */
.captenamz-ls .cap-card__lede,
.captenamz-ls .cap-coverage__list li,
.captenamz-ls .cap-notes li,
.captenamz-ls .cap-chip__key {
	color: var(--cap-body);
}

/* -------------------------------------------------------- Product header -- */

.captenamz-ls .cap-product__media {
	background: #fff;
}

.captenamz-ls .cap-chip {
	background: #fff;
}

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

@media (max-width: 782px) {
	.captenamz-ls .cap-score {
		padding: 24px 18px;
	}

	.captenamz-ls .cap-tiles {
		grid-template-columns: repeat(4, minmax(0, 1fr));
		gap: 8px;
		width: 100%;
	}

	.captenamz-ls .cap-tile {
		padding: 12px 4px 10px;
	}

	.captenamz-ls .cap-tile .cap-tile__n {
		font-size: 1.5rem;
	}

	.captenamz-ls .cap-tile .cap-tile__label {
		font-size: .625rem;
		letter-spacing: .04em;
	}

	.captenamz-ls .cap-score__actions .cap-btn {
		flex: 1 1 220px;
	}
}

@media (max-width: 420px) {
	.captenamz-ls .cap-tiles {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (prefers-reduced-motion: reduce) {
	.captenamz-ls .cap-tile,
	.captenamz-ls .cap-issue {
		transition: none;
	}

	.captenamz-ls .cap-tile:hover {
		transform: none;
	}
}

/* ----------------------------------------------------------------- Print -- */

@media print {
	.captenamz-ls .cap-tile,
	.captenamz-ls .cap-issue,
	.captenamz-ls .cap-bar__score,
	.captenamz-ls .cap-meter {
		print-color-adjust: exact;
		-webkit-print-color-adjust: exact;
		box-shadow: none !important;
	}
}

/* ====================================================== Unlock dialog ==== */

/**
 * The email-capture dialog.
 *
 * It is appended to <body> rather than to the report, so a theme that puts the
 * calculator inside a transformed or overflow-hidden container cannot clip it,
 * and its own font stack is inherited from the page like the rest of the
 * component.
 */
.cap-modal {
	position: fixed;
	inset: 0;
	z-index: 999999;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 20px;
	background: rgba(12, 22, 28, .62);
	-webkit-backdrop-filter: blur(3px);
	backdrop-filter: blur(3px);
	animation: cap-modal-in .18s ease-out;
}

@keyframes cap-modal-in {
	from { opacity: 0; }
	to { opacity: 1; }
}

.cap-modal__box {
	position: relative;
	box-sizing: border-box;
	width: 100%;
	max-width: 440px;
	max-height: calc(100vh - 40px);
	overflow-y: auto;
	padding: 30px 28px 26px;
	border-radius: 18px;
	background: #fff;
	color: #46606e;
	font-size: 15px;
	line-height: 1.6;
	text-align: left;
	box-shadow: 0 30px 70px -20px rgba(12, 22, 28, .55);
	animation: cap-modal-rise .22s cubic-bezier(.22, .8, .3, 1);
}

@keyframes cap-modal-rise {
	from { opacity: 0; transform: translateY(14px); }
	to { opacity: 1; transform: none; }
}

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

.cap-modal button.cap-modal__close {
	/*
	 * Restated at element+class weight because the dialog sits on <body>,
	 * outside the plugin's own root, where a theme's bare "button" styling
	 * reaches it. Elementor's kit was turning this into a yellow lozenge.
	 */
	appearance: none;
	-webkit-appearance: none;
	width: 34px !important;
	height: 34px !important;
	min-width: 0 !important;
	padding: 0 !important;
	border: none !important;
	border-radius: 50% !important;
	background: #f2f6f8 !important;
	background-image: none !important;
	color: #46606e !important;
	font-size: 1.25rem !important;
	font-family: inherit !important;
	font-weight: 400 !important;
	line-height: 1 !important;
	text-transform: none !important;
	box-shadow: none !important;
}

.cap-modal button.cap-modal__close:hover {
	background: #e5edf0 !important;
	color: var(--cap-ink) !important;
}

.cap-modal__close {
	position: absolute;
	top: 12px;
	right: 12px;
	width: 34px;
	height: 34px;
	display: grid;
	place-items: center;
	padding: 0;
	border: none;
	border-radius: 50%;
	background: #f2f6f8;
	color: #46606e;
	font-size: 20px;
	line-height: 1;
	cursor: pointer;
}

.cap-modal__close:hover {
	background: #e5edf0;
}

.cap-modal__title {
	margin: 0 0 8px;
	padding-right: 28px;
	font-size: 1.3125rem;
	font-weight: 700;
	line-height: 1.3;
	color: #16232b;
}

.cap-modal__lede {
	margin: 0 0 18px;
	font-size: .9375rem;
	color: #46606e;
}

.cap-modal__form {
	display: block;
	margin: 0;
}

.cap-modal__fields {
	display: flex;
	flex-direction: column;
	gap: 12px;
	margin-bottom: 14px;
}

.cap-modal__field {
	display: flex;
	flex-direction: column;
	gap: 5px;
}

.cap-modal__label {
	font-size: .8125rem;
	font-weight: 700;
	color: #16232b;
}

.cap-modal .cap-modal__input {
	width: 100%;
	margin: 0;
	padding: 12px 14px;
	font-size: 1rem;
	font-family: inherit;
	color: #16232b;
	background: #fff;
	border: 1.5px solid #e3ebef;
	border-radius: 10px;
	transition: border-color .2s ease, box-shadow .2s ease;
}

.cap-modal .cap-modal__input:focus {
	outline: none;
	border-color: #45b8a7;
	box-shadow: 0 0 0 4px rgba(69, 184, 167, .16);
}

/* Off-screen rather than display:none — a bot that ignores CSS still fills it. */
.cap-modal__trap {
	position: absolute !important;
	left: -9999px !important;
	width: 1px !important;
	height: 1px !important;
	opacity: 0 !important;
}

.cap-modal__consent {
	display: flex;
	align-items: flex-start;
	gap: 9px;
	margin-bottom: 14px;
	font-size: .8125rem;
	line-height: 1.5;
	color: #46606e;
	cursor: pointer;
}

.cap-modal__consent input {
	margin: 3px 0 0;
	flex: none;
	width: 16px;
	height: 16px;
	accent-color: #1f7a6d;
}

.cap-modal__error {
	margin: 0 0 12px;
	padding: 10px 12px;
	border-radius: 10px;
	background: #fdf0f0;
	color: #b42318;
	font-size: .875rem;
	font-weight: 600;
}

.cap-modal .cap-modal__submit {
	display: inline-flex !important;
	align-items: center;
	justify-content: center;
	gap: 8px;
	width: 100%;
	padding: 14px 20px !important;
	font-size: 1rem !important;
	font-weight: 700 !important;
	font-family: inherit !important;
	line-height: 1.3 !important;
	text-transform: none !important;
	text-decoration: none !important;
	border: 1.5px solid #f9be02 !important;
	border-radius: 10px !important;
	background: #f9be02 !important;
	color: #3b2a00 !important;
	cursor: pointer;
	appearance: none;
	-webkit-appearance: none;
	transition: background-color .2s ease;
}

.cap-modal .cap-modal__submit:hover:not(:disabled) {
	background: #ffcb26 !important;
	border-color: #ffcb26 !important;
}

.cap-modal .cap-modal__submit:disabled {
	opacity: .7;
	cursor: wait;
}

.cap-modal__privacy {
	margin: 12px 0 0;
	font-size: .75rem;
	color: #7b8f9b;
	text-align: center;
}

.cap-modal__tick {
	display: grid;
	place-items: center;
	width: 54px;
	height: 54px;
	margin: 4px auto 14px;
	border-radius: 50%;
	background: #e7f6f3;
	color: #1f7a6d;
}

.cap-modal__tick .cap-ico {
	display: inline-flex;
	width: 26px;
	height: 26px;
}

.cap-modal__tick .cap-ico svg {
	width: 100%;
	height: 100%;
}

.cap-modal__box .cap-modal__tick + .cap-modal__title {
	padding-right: 0;
	text-align: center;
}

/* The confirmation banner shown when the report is unlocked in place. */
.captenamz-ls .cap-notice {
	display: flex;
	align-items: center;
	gap: 10px;
	margin-bottom: 18px;
	padding: 14px 18px;
	border-radius: var(--cap-radius-sm);
	background: var(--cap-teal-soft);
	border: 1px solid #bfe5dd;
	color: var(--cap-txt-good);
	font-weight: 700;
	font-size: .9375rem;
}

@media (max-width: 480px) {
	.cap-modal {
		padding: 12px;
		align-items: flex-end;
	}

	.cap-modal__box {
		padding: 26px 20px 22px;
		border-radius: 16px;
	}
}

@media (prefers-reduced-motion: reduce) {
	.cap-modal,
	.cap-modal__box {
		animation: none;
	}
}

@media print {
	.cap-modal,
	.captenamz-ls .cap-notice {
		display: none !important;
	}
}

/* ------------------------------------------------ embedded capture form */

/*
 * The dialog holds a third-party form in an iframe. It is given a little more
 * width than the built-in form, because an embedded form's own padding sits
 * inside the frame and a 440px box leaves its fields looking cramped.
 */
.cap-modal__box--embed {
	max-width: 520px;
	padding: 26px 20px 20px;
}

.cap-modal__embed {
	margin-top: 14px;
	border-radius: 10px;
	overflow: hidden;
}

.cap-modal__embed iframe {
	display: block;
	width: 100%;
	border: none;
	border-radius: 10px;
	background: #fff;
}
