/* Partners Showcase */
.psw {
	--psw-accent: #00c478;          /* popup title & links */
	--psw-accent-dark: #006840;     /* category text, close button */
	--psw-text: var(--psw-accent-dark);
	--psw-line: #006840;            /* borders */
	--psw-hover-bg: #00c478;
	--psw-hover-text: #004329;
	--psw-arrow-bg: #fff;
	--psw-pad: 25px;
	--psw-pad-hover: 35px;
	--psw-bleed: 30px;              /* green box sticks out on each side */
	--psw-speed: .3s;
	--psw-cols: 6;
	--psw-gap: 48px;
	--psw-logo-h: 110px;
	--psw-title-size: clamp(1.15rem, 1.6vw, 1.5rem);
	border-top: 1px solid var(--psw-line);
}

/* Accordion */
.psw-section { border-bottom: 1px solid var(--psw-line); }
.psw-summary {
	position: relative;
	isolation: isolate;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	padding-block: var(--psw-pad);
	padding-inline: 0;
	cursor: pointer;
	list-style: none;
	transition: all var(--psw-speed);
}
.psw-summary::-webkit-details-marker { display: none; }
.psw-summary::before {
	content: '';
	position: absolute;
	top: 0;
	left: calc(-1 * var(--psw-bleed));
	z-index: -1;
	display: block;
	width: calc(100% + 2 * var(--psw-bleed));
	height: 100%;
	background: var(--psw-hover-bg);
	opacity: 0;
	transition: all var(--psw-speed);
}
.psw-title {
	margin: 0;
	font-size: var(--psw-title-size);
	font-weight: 400;
	line-height: 1.3;
	color: var(--psw-text);
	transition: all var(--psw-speed);
}
.psw-chevron {
	flex: none;
	display: grid;
	place-items: center;
	width: 44px;
	height: 44px;
	border-radius: 50%;
	background: transparent;
	color: var(--psw-text);
	transition: all var(--psw-speed);
}
.psw-chevron svg { display: block; transition: transform var(--psw-speed); }
.psw-section[open] .psw-chevron svg { transform: rotate(180deg); }

/* Hover / keyboard focus */
.psw-summary:hover,
.psw-summary:focus-visible { padding-block: var(--psw-pad-hover); outline: none; }
.psw-summary:hover::before,
.psw-summary:focus-visible::before { opacity: 1; }
.psw-summary:hover .psw-title,
.psw-summary:focus-visible .psw-title { color: var(--psw-hover-text); }
.psw-summary:hover .psw-chevron,
.psw-summary:focus-visible .psw-chevron { background: var(--psw-arrow-bg); color: var(--psw-hover-text); }

/* Smooth open/close (height animated by JS) */
.psw-panel { overflow: hidden; }
.psw-panel.is-animating { transition: height var(--psw-speed) ease; }

/* Logo grid */
.psw-grid {
	display: grid;
	grid-template-columns: repeat(var(--psw-cols), minmax(0, 1fr));
	gap: var(--psw-gap);
	align-items: center;
	margin: 0;
	padding: 16px 0 48px;
	list-style: none;
}
.psw-item { display: flex; justify-content: center; margin: 0; }
.psw-logo {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	height: var(--psw-logo-h);
	padding: 0;
	border: 0;
	background: none;
	color: inherit;
	cursor: default;
	font: inherit;
}
button.psw-logo, a.psw-logo { cursor: pointer; }
.psw-logo img {
	max-width: 100%;
	max-height: 100%;
	width: auto;
	height: auto;
	object-fit: contain;
	transition: transform .2s, filter .2s, opacity .2s;
}
button.psw-logo:hover img, a.psw-logo:hover img { transform: scale(1.05); }
.psw-logo:focus-visible { outline: 2px solid var(--psw-accent); outline-offset: 4px; border-radius: 4px; }
.psw-noimg { font-size: .95rem; text-align: center; }

.psw--grayscale .psw-logo img { filter: grayscale(1); opacity: .75; }
.psw--grayscale .psw-logo:hover img,
.psw--grayscale .psw-logo:focus-visible img { filter: none; opacity: 1; }

@media (max-width: 1024px) { .psw { --psw-cols: 4; --psw-gap: 32px; } }
@media (max-width: 640px)  { .psw { --psw-cols: 2; --psw-gap: 24px; --psw-logo-h: 80px; --psw-bleed: 12px; } }

/* Popup */
html.psw-lock { overflow: hidden; }
.psw-modal {
	width: min(1000px, calc(100vw - 32px));
	max-height: calc(100dvh - 32px);
	padding: 0;
	border: 0;
	border-radius: 24px;
	background: #fff;
	color: #1d2a24;
	box-shadow: 0 20px 60px rgba(0, 0, 0, .25);
	overflow: auto;
	overscroll-behavior: contain;
}
.psw-modal::backdrop { background: rgba(0, 0, 0, .7); }
.psw-modal[open] { animation: psw-in .22s ease-out; }
@keyframes psw-in { from { opacity: 0; transform: translateY(12px) scale(.98); } }
.psw-modal__inner { position: relative; padding: clamp(28px, 5vw, 64px) clamp(20px, 5vw, 64px); }
.psw-modal__close {
	position: absolute;
	top: clamp(14px, 2.5vw, 32px);
	right: clamp(14px, 2.5vw, 32px);
	display: grid;
	place-items: center;
	width: 52px;
	height: 52px;
	padding: 0;
	border: 1.5px solid var(--psw-accent-dark, #006840);
	border-radius: 50%;
	background: #fff;
	color: var(--psw-accent-dark, #006840);
	cursor: pointer;
	transition: background .2s, color .2s;
}
.psw-modal__close:hover { background: var(--psw-accent-dark, #006840); color: #fff; }
.psw-pop-logo img { display: block; max-width: 320px; max-height: 120px; width: auto; height: auto; object-fit: contain; }
.psw-pop-title {
	margin: 24px 0 24px;
	font-size: 1.6rem;
	font-weight: 400;
	line-height: 1.3;
	color: var(--psw-accent, #00c478);
}
.psw-pop-title a { color: inherit; text-decoration: none; }
.psw-pop-title a:hover { text-decoration: underline; }
.psw-pop-content { font-size: 1.05rem; line-height: 1.6; }
.psw-pop-content > :last-child { margin-bottom: 0; }
.psw-pop-content a { color: var(--psw-accent, #00c478); font-weight: 600; }
.psw-pop-content img { max-width: 100%; height: auto; }

@media (prefers-reduced-motion: reduce) {
	.psw-modal[open] { animation: none; }
	.psw-summary, .psw-summary::before, .psw-title, .psw-chevron, .psw-chevron svg, .psw-logo img { transition: none; }
	.psw-panel.is-animating { transition: none; }
}
