/*!
 * SHP Assessment Widgets — structural CSS
 *
 * Everything is scoped under `.shp-widget` so the plugin can't bleed into the rest
 * of the site. Visual tokens are CSS custom properties so the theme team can
 * override them via Divi → Theme Options → Custom CSS without editing this file.
 *
 * Fonts and most colors inherit from the host theme. Tier colors (severity
 * signals) are functional and overridable as needed.
 */

.shp-widget {
	/* visual tokens — override in Divi Custom CSS as needed */
	--shp-accent:        #1A6B5E;
	--shp-accent-dark:   #134F45;
	--shp-radius:        4px;
	--shp-radius-card:   6px;
	--shp-rule:          #E5E7EB;
	--shp-muted:         #6B7280;
	--shp-track:         #E5E7EB;

	--shp-tier-green:    #0F6E56;
	--shp-tier-green-bg: #E1F5EE;
	--shp-tier-amber:    #854F0B;
	--shp-tier-amber-bg: #FAEEDA;
	--shp-tier-coral:    #993C1D;
	--shp-tier-coral-bg: #FAECE7;
	--shp-tier-red:      #791F1F;
	--shp-tier-red-bg:   #FCEBEB;

	/* yes/no selected colors — default to tier colors so the SWA semantic
	   (Yes = concerning, No = healthy) tracks the chosen palette. Admins can
	   override these independently in Settings → SHP Calculators → Colors. */
	--shp-yn-yes:        var(--shp-tier-coral);
	--shp-yn-no:         var(--shp-tier-green);

	font-family: inherit;
	color: inherit;
	display: block;
}

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

.shp-widget__body {
	display: flex;
	flex-direction: column;
	gap: 1.5rem;
}

/* ── input rows ──────────────────────────────────────────────────────────── */

.shp-widget__input-row {
	display: flex;
	flex-direction: column;
	gap: 0.5rem;
}

.shp-widget__label-row {
	display: flex;
	justify-content: space-between;
	align-items: flex-start;
	gap: 1rem;
}

.shp-widget__label {
	font-weight: 600;
	line-height: 1.3;
}

.shp-widget__hint {
	font-size: 0.85em;
	color: var(--shp-muted);
	margin-top: 2px;
	line-height: 1.4;
}

.shp-widget__value {
	font-weight: 600;
	color: var(--shp-accent);
	white-space: nowrap;
	flex-shrink: 0;
}

.shp-widget__range-labels {
	display: flex;
	justify-content: space-between;
	font-size: 0.75em;
	color: var(--shp-muted);
}

/* ── slider ──────────────────────────────────────────────────────────────── */

.shp-widget__range {
	-webkit-appearance: none;
	appearance: none;
	width: 100%;
	height: 6px;
	border-radius: 3px;
	background: linear-gradient(
		to right,
		var(--shp-accent) 0%,
		var(--shp-accent) var(--shp-pct, 50%),
		var(--shp-track) var(--shp-pct, 50%),
		var(--shp-track) 100%
	);
	outline: none;
	cursor: pointer;
	margin: 0;
	padding: 0;
}

.shp-widget__range::-webkit-slider-thumb {
	-webkit-appearance: none;
	width: 22px;
	height: 22px;
	border-radius: 50%;
	background: #fff;
	border: 2.5px solid var(--shp-accent);
	box-shadow: 0 2px 8px rgba(0,0,0,0.18);
	cursor: pointer;
	transition: transform 0.12s, box-shadow 0.12s;
}

.shp-widget__range::-webkit-slider-thumb:hover {
	transform: scale(1.15);
}

.shp-widget__range::-moz-range-thumb {
	width: 22px;
	height: 22px;
	border-radius: 50%;
	background: #fff;
	border: 2.5px solid var(--shp-accent);
	box-shadow: 0 2px 8px rgba(0,0,0,0.18);
	cursor: pointer;
}

/* ── yes / no rows ───────────────────────────────────────────────────────── */

.shp-widget__yn-row {
	display: flex;
	align-items: center;
	gap: 1rem;
	padding: 0.9rem 1.1rem;
	border: 1.5px solid var(--shp-rule);
	border-radius: var(--shp-radius-card);
	background: #FAFAFA;
	transition: border-color 0.15s, background 0.15s, box-shadow 0.15s;
}

.shp-widget__yn-row.is-answered {
	border-color: rgba(0,0,0,0.18);
	background: #fff;
	box-shadow: 0 1px 4px rgba(0,0,0,0.04);
}

.shp-widget__yn-question {
	flex: 1;
	line-height: 1.45;
	color: inherit;
}

.shp-widget__yn-buttons {
	display: flex;
	gap: 0.4rem;
	flex-shrink: 0;
}

/* !important on background / border / color throughout this block defeats
   Divi (and other heavy themes) that apply !important to `body button`. */
.shp-widget__yn-btn {
	padding: 0.4rem 1.1rem;
	border: 1.5px solid var(--shp-rule) !important;
	border-radius: var(--shp-radius);
	background: #fff !important;
	font-family: inherit;
	font-size: inherit;
	font-weight: 600;
	color: var(--shp-muted) !important;
	cursor: pointer;
	min-width: 54px;
	text-align: center;
	transition: border-color 0.14s, background 0.14s, color 0.14s;
}

.shp-widget__yn-btn:hover {
	border-color: #AAAAAA !important;
	color: inherit !important;
}

.shp-widget__yn-btn.is-yes,
.shp-widget__yn-btn.is-no {
	color: #fff !important;
	box-shadow: 0 1px 2px rgba(0,0,0,0.12);
}

.shp-widget__yn-btn.is-yes {
	background: var(--shp-yn-yes) !important;
	border-color: var(--shp-yn-yes) !important;
}

.shp-widget__yn-btn.is-no {
	background: var(--shp-yn-no) !important;
	border-color: var(--shp-yn-no) !important;
}

.shp-widget__yn-btn.is-yes:hover,
.shp-widget__yn-btn.is-no:hover {
	color: #fff !important;
	opacity: 0.9;
}

/* ── calculate button ────────────────────────────────────────────────────── */

.shp-widget__calc {
	width: 100%;
	padding: 0.85rem 1.5rem;
	background: var(--shp-accent) !important;
	color: #fff !important;
	border: none !important;
	border-radius: var(--shp-radius);
	font-family: inherit;
	font-size: inherit;
	font-weight: 600;
	letter-spacing: 0.01em;
	cursor: pointer;
	transition: background 0.15s, transform 0.1s;
}

.shp-widget__calc:hover  { background: var(--shp-accent-dark) !important; }
.shp-widget__calc:active { transform: scale(0.992); }

/* ── result panel ────────────────────────────────────────────────────────── */

.shp-widget__result {
	border: 1px solid;
	border-radius: var(--shp-radius-card);
	padding: 1.4rem 1.5rem;
	border-color: transparent;
	animation: shpFadeUp 0.3s ease both;
}

.shp-widget__result[hidden] { display: none; }

.shp-widget__result.is-tier-green {
	--shp-tier:    var(--shp-tier-green);
	--shp-tier-bg: var(--shp-tier-green-bg);
}
.shp-widget__result.is-tier-amber {
	--shp-tier:    var(--shp-tier-amber);
	--shp-tier-bg: var(--shp-tier-amber-bg);
}
.shp-widget__result.is-tier-coral {
	--shp-tier:    var(--shp-tier-coral);
	--shp-tier-bg: var(--shp-tier-coral-bg);
}
.shp-widget__result.is-tier-red {
	--shp-tier:    var(--shp-tier-red);
	--shp-tier-bg: var(--shp-tier-red-bg);
}

.shp-widget__result.is-tier-green,
.shp-widget__result.is-tier-amber,
.shp-widget__result.is-tier-coral,
.shp-widget__result.is-tier-red {
	background: var(--shp-tier-bg);
	border-color: rgba(0,0,0,0.08);
}

.shp-widget__result-top {
	display: flex;
	align-items: flex-start;
	gap: 1.1rem;
	margin-bottom: 0.9rem;
}

.shp-widget__score {
	flex-shrink: 0;
	width: 72px;
	height: 72px;
	border-radius: var(--shp-radius-card);
	background: rgba(0,0,0,0.06);
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 2px;
}

.shp-widget__score-num {
	font-size: 2rem;
	line-height: 1;
	color: var(--shp-tier);
	font-weight: 700;
}

.shp-widget__score-denom {
	font-size: 0.65rem;
	font-weight: 600;
	letter-spacing: 0.05em;
	color: var(--shp-tier);
	opacity: 0.75;
	text-transform: uppercase;
}

.shp-widget__meta {
	flex: 1;
	min-width: 0;
	padding-top: 4px;
}

.shp-widget__dots {
	display: flex;
	gap: 5px;
	margin-bottom: 0.4rem;
}

.shp-widget__dot {
	width: 9px;
	height: 9px;
	border-radius: 50%;
	background: var(--shp-tier, var(--shp-muted));
	opacity: 0.22;
	transition: opacity 0.2s;
}

.shp-widget__dot.is-on { opacity: 1; }

.shp-widget__tier-label {
	font-weight: 700;
	color: var(--shp-tier);
	line-height: 1.3;
}

.shp-widget__copy {
	font-style: italic;
	color: var(--shp-tier);
	line-height: 1.6;
	margin-bottom: 1rem;
}

.shp-widget__cta {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 0.6rem 1.2rem;
	background: var(--shp-tier) !important;  /* defeat theme link/button backgrounds */
	color: #fff !important;                   /* defeat theme link colors on the button */
	border-radius: var(--shp-radius);
	font-family: inherit;
	font-weight: 600;
	text-decoration: none !important;
	transition: opacity 0.15s, transform 0.1s;
}

.shp-widget__cta:hover  { opacity: 0.88; }
.shp-widget__cta:active { transform: scale(0.992); }

@keyframes shpFadeUp {
	from { opacity: 0; transform: translateY(10px); }
	to   { opacity: 1; transform: translateY(0); }
}

/* ── mobile ──────────────────────────────────────────────────────────────── */

@media (max-width: 600px) {
	.shp-widget__yn-row { flex-wrap: wrap; gap: 0.75rem; }
	.shp-widget__result-top { flex-direction: column; }
	.shp-widget__score {
		width: 100%;
		height: auto;
		flex-direction: row;
		gap: 0.4rem;
		padding: 0.5rem 0.75rem;
	}
}
