/*
 * PatientWing design system.
 *
 * Every value here was read out of the Figma file "For Hamza's Team"
 * (OgbV8fQYBTjnPl1Y7Dx5Hd) with get_design_context, not measured off a
 * screenshot. The custom property names match the Figma style names so a
 * later change in the file can be found here by searching for the token.
 */

:root {
	/* Lavender */
	--pw-primary:      #7A44EC;   /* Lavender/Primary/600 */
	--pw-lav-50:       #F7F4FE;   /* Lavender/Secondary/50 */
	--pw-lav-200:      #E1D5FB;   /* Lavender/Secondary/200 */
	--pw-lav-700:      #6833D2;
	/* Neutrals */
	--pw-dark:         #181628;   /* Neutral/Dark */
	--pw-grey-1:       #595F6B;   /* Neutral/Grey 1 - body copy */
	--pw-grey-2:       #9498A1;   /* Neutral/Grey 2 - labels, placeholders */
	--pw-white:        #FFFFFF;
	--pw-stroke:       #E4E7EC;   /* Strokes/Gray/1 */
	--pw-stroke-soft:  #D8DCE6;
	/* Effects */
	--pw-shadow:       0 4px 16px 0 rgba(28, 24, 40, 0.05);        /* gray/5 */
	--pw-btn-shadow:   0 1.5px 0.75px rgba(0, 0, 0, 0.16);
	--pw-gradient:     linear-gradient(114.94deg, #7A44EC 5.44%, #6833D2 83.86%);  /* Gradient/1 */
	/* Sampled off the Figma frame itself. Both are flat fills, not gradients. */
	--pw-page-bg:      #FAF9FC;
	--pw-band-bg:      #F5F2FC;   /* the newsletter band */
	--pw-lav-100:      #EFE8FD;   /* Lavender/Secondary/100 - navbar top bar */
	--pw-fade:         #FAF9FD;   /* the colour the hero image fades into */
	--pw-nav-shadow:   0 8px 12px rgba(28, 24, 40, 0.11);
	/* Metrics */
	--pw-shell:        1240px;
	--pw-radius:       16px;
	--pw-radius-lg:    24px;
	--pw-gutter:       clamp(16px, 5vw, 100px);
}

/* --- scoped reset --------------------------------------------------------
   Divi wraps module output in a section, row and column that each carry their
   own padding and an 80% content width. A screen laid out against a 1240px
   shell has to start from a container that really is 1240 wide, so those
   wrappers are neutralised here once rather than in every page's Custom CSS. */
.pwd-screen,
.pwd-newsletter { box-sizing: border-box; width: 100%; }
.pwd-screen *, .pwd-screen *::before, .pwd-screen *::after,
.pwd-newsletter *, .pwd-newsletter *::before, .pwd-newsletter *::after { box-sizing: border-box; }

.et_pb_module .pwd-screen,
.et_pb_module .pwd-newsletter { margin: 0; }

.pwd-screen,
.pwd-newsletter {
	font-family: "Plus Jakarta Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
	color: var(--pw-dark);
	-webkit-font-smoothing: antialiased;
}
.pwd-screen p, .pwd-screen h1, .pwd-screen h2, .pwd-screen h3,
.pwd-newsletter p, .pwd-newsletter h2 { margin: 0; padding: 0; }

/* The design is a 1440 frame with 100px margins, so the content column is
   exactly 1240. The gutter has to be added to the max-width rather than taken
   out of it -- capping at 1240 and then padding inside leaves 1096 of content
   and every measurement downstream is 12% narrow. */
.pwd-shell {
	max-width: calc(var(--pw-shell) + (2 * var(--pw-gutter)));
	margin-left: auto;
	margin-right: auto;
	padding-left: var(--pw-gutter);
	padding-right: var(--pw-gutter);
	width: 100%;
}
.pwd-sr {
	position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
	overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;
}
.pwd-i { display: block; flex: none; }

/* The UA rule for [hidden] is display:none, which any author `display` on the
   same element beats. Every card here is display:flex, so hiding one from the
   script did nothing at all: the seventh card and the Load More button were
   both on screen at once. */
.pwd-screen [hidden] { display: none !important; }

/* --- buttons -------------------------------------------------------------
   One 36px pill in three styles, as the Button component defines them:
   Primary is the gradient with a 1px light top edge, Surface is the
   Lavender/200 outline the "Load More Profiles" button uses. */
.pwd-btn {
	display: inline-flex; align-items: center; justify-content: center;
	gap: 8px; height: 36px; min-width: 112px; padding: 0 16px;
	border-radius: 100px; border: 0; cursor: pointer;
	/* `inherit` reaches Divi's body font, not the design's. 135:777 and every
	   other button in 1:3795 is Plus Jakarta Sans. */
	font-family: "Plus Jakarta Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
	text-decoration: none; white-space: nowrap;
}
.pwd-btn--primary {
	background-image: var(--pw-gradient);
	border-top: 1px solid rgba(255, 255, 255, 0.2);
	filter: drop-shadow(var(--pw-btn-shadow));
	color: var(--pw-white);
	font-weight: 500; font-size: 14px; line-height: normal;
}
.pwd-btn--primary:hover, .pwd-btn--primary:focus-visible { color: var(--pw-white); opacity: 0.94; }
.pwd-btn--surface {
	background: transparent; border: 1px solid var(--pw-lav-200);
	color: var(--pw-primary); font-weight: 700; font-size: 16px; line-height: 1.5;
}
.pwd-btn--surface:hover, .pwd-btn--surface:focus-visible { background: var(--pw-lav-50); color: var(--pw-primary); }
.pwd-btn--outline {
	background: var(--pw-white); border: 1px solid var(--pw-stroke);
	color: var(--pw-dark); font-weight: 600; font-size: 14px;
}
.pwd-screen a:focus-visible, .pwd-screen button:focus-visible,
.pwd-newsletter a:focus-visible, .pwd-newsletter button:focus-visible {
	outline: 2px solid var(--pw-primary); outline-offset: 2px;
}

/* --- page shell ---------------------------------------------------------- */
.pwd-screen { background: var(--pw-page-bg); padding-bottom: 40px; }
.pwd-screen--flush { padding-bottom: 0; }

/* --- hero ----------------------------------------------------------------
   Read straight off the frame, because this is the part a screenshot cannot
   tell you and the part that was wrong:

     navbar   y  24 .. 130   (1240 wide, 106 tall)
     title    y 200 .. 313   in a 611-wide column at x=100
     image    y 200 .. 483   628 wide, its right edge on the shell's at 1340
     panel    y 353 ..       so the panel covers the bottom 130px of the image

   The image is therefore NOT a grid cell beside the text -- it is behind, and
   the panel is lifted over it. Laying it out as two grid columns with a 40px
   gap made the image 20px narrow and pushed the panel 170px too far down,
   which is why the whole photograph was visible where the design shows only
   its top. */
.pwd-hero {
	position: relative;
	box-sizing: content-box;
	padding-top: 200px;         /* the frame's own y for the title */
	height: 153px;              /* title top 200 -> panel top 353 */
}
.pwd-hero__text { max-width: 49.28%; }   /* 611 of 1240 */
.pwd-hero__title {
	font-size: 48px; font-weight: 700; line-height: 1.2;
	color: var(--pw-dark); text-transform: capitalize;
}
.pwd-hero__sub {
	margin-top: 28px !important;
	font-size: 18px; font-weight: 400; line-height: 1.5; color: var(--pw-grey-1);
}
/* Only the top-right corner is rounded, and the image fades out along its
   left edge into the page colour, so it reads as bleeding off the corner of
   the layout rather than as a photograph in a box. Both come straight from
   the Hero-Right node and neither is visible in a screenshot. */
.pwd-hero__media {
	position: absolute; z-index: 0;
	top: 200px; right: 0;
	width: 50.65%;              /* 628 of 1240 */
	aspect-ratio: 628 / 283;
	border-radius: 0 var(--pw-radius-lg) 0 0;
	overflow: hidden;
}
.pwd-hero__media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.pwd-hero__media::after {
	content: ""; position: absolute; inset: 0; pointer-events: none;
	border-radius: inherit;
	background: linear-gradient(
		-89.96deg,
		rgba(250, 249, 253, 0) 76.78%,
		rgba(250, 249, 253, 0.535) 85.94%,
		var(--pw-fade) 100.11%
	);
}

/* --- the white panel a listing sits in ----------------------------------- */
.pwd-panel {
	position: relative; z-index: 1;
	background: var(--pw-white);
	border-radius: var(--pw-radius-lg);
	box-shadow: var(--pw-shadow);
	padding: 40px;
}

/* --- filter row ---------------------------------------------------------- */
.pwd-filters { display: flex; gap: 16px; align-items: flex-end; }
.pwd-field { display: flex; flex-direction: column; gap: 6px; flex: 1 0 0; min-width: 0; }
.pwd-field--narrow { flex: 0 0 400px; }
.pwd-label { font-size: 13px; font-weight: 600; line-height: normal; color: var(--pw-dark); }
.pwd-label--muted {
	font-size: 12px; line-height: 1.5; color: var(--pw-grey-2); text-transform: uppercase;
}
.pwd-label--tight { line-height: normal; }
.pwd-input {
	display: flex; align-items: center; gap: 8px;
	height: 40px; padding: 0 14px;
	background: var(--pw-white); border: 1px solid var(--pw-stroke); border-radius: 8px;
}
.pwd-input:focus-within { border-color: var(--pw-primary); }
.pwd-input input,
.pwd-input select {
	flex: 1 0 0; min-width: 0; height: 100%;
	border: 0; background: transparent; outline: none;
	-webkit-appearance: none; -moz-appearance: none; appearance: none;
	font-family: inherit; font-size: 14px; font-weight: 400; color: var(--pw-dark);
}
.pwd-input input::placeholder { color: var(--pw-grey-2); }
.pwd-input--select { justify-content: space-between; cursor: pointer; position: relative; }
.pwd-input--select .pwd-i { color: var(--pw-grey-1); }

/* --- the dropdown --------------------------------------------------------
   The closed control is the design's own 40px field. The open panel is not in
   the Figma file at all -- there is no open state for it -- so it is built
   from the vocabulary the rest of the file uses: the field's 8px radius and
   Strokes/Gray/1 border, the menu shadow the DropdownItem component carries,
   and the field's own 14px type. It replaces the native <select> popup, which
   the operating system draws and CSS cannot reach: on Windows that opens in a
   serif face on a blue highlight beside a control that is otherwise entirely
   the design's. */
.is-enhanced > .pwd-select__native {
	position: absolute; width: 1px; height: 1px; margin: -1px;
	opacity: 0; pointer-events: none;
}
.pwd-select__btn {
	display: flex; align-items: center; justify-content: space-between; gap: 8px;
	width: 100%; height: 100%; padding: 0; margin: 0;
	background: none; border: 0; cursor: pointer; text-align: left;
	font-family: inherit; font-size: 14px; font-weight: 400; line-height: normal;
	color: var(--pw-dark);
}
.pwd-select__value { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pwd-select__btn .pwd-i { color: var(--pw-grey-1); transition: transform 0.15s ease; }
.pwd-select__btn[aria-expanded="true"] .pwd-i { transform: rotate(180deg); }
.pwd-select__menu {
	position: absolute; z-index: 30;
	top: calc(100% + 6px); left: 0; right: 0;
	max-height: 288px; overflow-y: auto;
	margin: 0; padding: 6px; list-style: none;
	background: var(--pw-white);
	border: 1px solid var(--pw-stroke);
	border-radius: 8px;
	box-shadow: 0 12px 24px rgba(0, 0, 0, 0.08), 0 4px 8px rgba(0, 0, 0, 0.06);
}
/* Divi puts a disc marker and a left indent on every li on the site, which
   drew a bullet beside each option. */
.pwd-screen .pwd-select__menu,
.pwd-screen .pwd-select__opt {
	list-style: none !important;
	list-style-type: none !important;
}
.pwd-screen .pwd-select__opt::marker { content: none; }
.pwd-screen .pwd-select__opt::before { content: none !important; display: none !important; }
.pwd-screen .pwd-select__opt {
	margin: 0 !important; padding: 9px 12px !important;
	border-radius: 6px; cursor: pointer;
	font-size: 14px; font-weight: 500; line-height: 1.5; color: var(--pw-grey-1);
}
.pwd-select__opt.is-active { background: var(--pw-lav-50); color: var(--pw-primary); }
.pwd-select__opt[aria-selected="true"] { color: var(--pw-primary); font-weight: 600; }
.pwd-select__menu::-webkit-scrollbar { width: 8px; }
.pwd-select__menu::-webkit-scrollbar-thumb { background: var(--pw-lav-200); border-radius: 8px; }
.pwd-filters__apply { align-self: flex-end; }
/* Hidden only once the script has run, so a browser with JavaScript off keeps
   the one control that can submit the form. */
.pwd-js .pwd-filters__apply { display: none; }

/* --- featured card ------------------------------------------------------- */
.pwd-featured {
	display: flex; align-items: stretch; overflow: hidden;
	margin-top: 40px;
	background: var(--pw-white);
	border: 1px solid var(--pw-stroke);
	border-radius: var(--pw-radius);
	box-shadow: var(--pw-shadow);
}
.pwd-featured__aside {
	display: flex; flex-direction: column; gap: 12px; justify-content: center;
	padding: 12px 32px 32px; flex: none;
}
.pwd-featured__eyebrow {
	font-size: 12px; font-weight: 600; line-height: 1.5;
	color: var(--pw-primary); text-transform: uppercase; white-space: nowrap;
}
.pwd-featured__photo {
	width: 278px; height: 335px; border-radius: var(--pw-radius); overflow: hidden; flex: none;
	background: var(--pw-lav-50);
}
.pwd-featured__photo img { width: 100%; height: 100%; object-fit: cover; display: block; }
.pwd-featured__body {
	flex: 1 0 0; min-width: 0;
	display: flex; flex-direction: column; gap: 20px; align-items: flex-start;
	padding: 40px 32px;
}
.pwd-featured__head { display: flex; flex-direction: column; gap: 8px; width: 100%; }
.pwd-featured__name {
	font-size: 24px; font-weight: 700; line-height: 1.4;
	color: var(--pw-dark); text-transform: capitalize;
}
.pwd-featured__bio { font-size: 16px; font-weight: 500; line-height: 1.5; color: var(--pw-grey-1); }
.pwd-featured__group { display: flex; flex-direction: column; gap: 8px; width: 100%; }
.pwd-featured .pwd-card__meta { font-size: 14px; font-weight: 600; line-height: 1.5; }
.pwd-chips { display: flex; flex-wrap: wrap; gap: 8px; }
.pwd-chip {
	background: var(--pw-lav-50); border-radius: 100px; padding: 6px 10px;
	font-size: 14px; font-weight: 500; line-height: 1.5; color: var(--pw-primary);
}
.pwd-focus { font-size: 14px; font-weight: 500; line-height: 1.5; color: var(--pw-dark); }
.pwd-focus a { color: inherit; text-decoration: none; }
.pwd-focus a:hover { color: var(--pw-primary); }
.pwd-focus .pwd-dot { color: var(--pw-grey-2); padding: 0 6px; }
.pwd-featured .pwd-btn { width: 180px; }

/* --- section title ------------------------------------------------------- */
.pwd-section-title {
	margin-top: 40px !important;
	font-size: 40px; font-weight: 700; line-height: 1.2;
	color: var(--pw-dark); text-transform: capitalize;
}

/* --- card grid ----------------------------------------------------------- */
.pwd-grid { display: grid; gap: 32px 24px; margin-top: 40px; }
.pwd-grid--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.pwd-card {
	display: flex; flex-direction: column; align-items: stretch;
	min-height: 440px;
	background: var(--pw-white);
	border: 1px solid var(--pw-stroke);
	border-radius: var(--pw-radius);
	overflow: hidden;
	transition: box-shadow 0.18s ease, transform 0.18s ease;
}
.pwd-card:hover { box-shadow: var(--pw-shadow); transform: translateY(-2px); }
.pwd-card__media { display: block; height: 200px; flex: none; background: var(--pw-lav-50); }
.pwd-card__media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.pwd-card__body {
	flex: 1 0 0; min-height: 0;
	display: flex; flex-direction: column; justify-content: space-between;
	padding: 24px;
}
.pwd-card__stack { display: flex; flex-direction: column; gap: 12px; }
.pwd-card__head { display: flex; flex-direction: column; gap: 4px; }
.pwd-card__name { font-size: 18px; font-weight: 700; line-height: normal; color: var(--pw-dark); }
.pwd-card__name a { color: inherit; text-decoration: none; }
.pwd-card__name a:hover { color: var(--pw-primary); }
.pwd-card__meta {
	display: flex; align-items: center; gap: 6px;
	font-size: 13px; font-weight: 500; line-height: normal; color: var(--pw-grey-1);
}
.pwd-card__meta span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }
.pwd-card__meta--accent { font-size: 14px; font-weight: 600; color: var(--pw-primary); }
/* The summary is clamped rather than trimmed server-side, so a two-line and a
   four-line bio still leave "View Profile" at the same height in every card in
   the row. A Divi module has no way to say "as tall as the card beside me". */
.pwd-card__bio {
	font-size: 14px; font-weight: 400; line-height: 1.5; color: var(--pw-grey-1);
	display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;
}
.pwd-link {
	display: inline-flex; align-items: center; gap: 4px;
	font-size: 14px; font-weight: 600; line-height: normal;
	color: var(--pw-primary); text-decoration: none;
	background: none; border: 0; padding: 0; cursor: pointer; font-family: inherit;
}
.pwd-link:hover { color: var(--pw-lav-700); }
.pwd-more { display: flex; justify-content: center; margin-top: 40px; }
.pwd-empty { margin-top: 32px !important; text-align: center; color: var(--pw-grey-1); font-size: 15px; }

/* --- pull quote ---------------------------------------------------------- */
.pwd-quote {
	display: flex; gap: 24px; align-items: stretch;
	margin: 40px 0 0; padding: 32px;
	border: 1px solid var(--pw-stroke); border-radius: var(--pw-radius-lg);
	background: linear-gradient(90deg, rgba(245, 243, 255, 0.7) 0%, rgba(255, 255, 255, 0.7) 55%, rgba(245, 243, 255, 0.7) 100%);
}
.pwd-quote__photo {
	width: 170px; height: 170px; border-radius: 999px; object-fit: cover; flex: none; display: block;
}
.pwd-quote__body { display: flex; flex-direction: column; gap: 12px; flex: 1 0 0; min-width: 0; }
.pwd-quote__mark { color: var(--pw-primary); }
.pwd-quote__text {
	margin: 0; font-family: "Spectral", Georgia, serif;
	font-style: italic; font-weight: 600; font-size: 24px; line-height: 1.4; color: var(--pw-dark);
}
.pwd-quote__by { display: flex; flex-direction: column; font-size: 14px; }
.pwd-quote__name { font-weight: 700; color: var(--pw-dark); line-height: normal; }
.pwd-quote__role { font-weight: 400; color: var(--pw-grey-2); line-height: normal; }

/* --- newsletter band ----------------------------------------------------- */
/* The band is 189px tall: 60 of lead, a 76-tall row, the rule at 152 and
   the legal line from 168 to 189. Nothing below it. */
.pwd-band-wrap { background: var(--pw-page-bg); padding-bottom: 40px; }
/* 117:6815 -- the band is 249 tall: 60 above the row, the row itself, and 59
   under it. With no bottom padding it measured 190 on every screen it appears
   on, and the footer sat 59px high on all of them. */
.pwd-newsletter { background: var(--pw-band-bg); padding: 60px 0 59px; }
.pwd-newsletter__row { display: flex; align-items: center; justify-content: space-between; gap: 40px; min-height: 76px; }
.pwd-newsletter__lead {
	display: flex; gap: 24px; align-items: flex-start;
	max-width: 640px; flex: 1 0 0; min-width: 0;
}
.pwd-newsletter__icon { flex: none; color: var(--pw-primary); }
.pwd-newsletter__text { display: flex; flex-direction: column; gap: 16px; }
.pwd-newsletter__title {
	font-size: 28px; font-weight: 700; line-height: 1.3; color: var(--pw-dark); text-transform: capitalize;
}
.pwd-newsletter__sub { font-size: 16px; font-weight: 400; line-height: 1.5; color: var(--pw-grey-1); }
.pwd-newsletter__form {
	display: flex; align-items: center; flex: none;
	width: 460px; height: 56px; padding: 0 4px 0 20px;
	background: var(--pw-white); border: 1px solid var(--pw-stroke-soft); border-radius: 100px;
}
.pwd-newsletter__input {
	flex: 1 0 0; min-width: 0; height: 100%; border: 0; background: transparent; outline: none;
	font-family: inherit; font-size: 15px; font-weight: 400; color: var(--pw-dark);
}
.pwd-newsletter__input::placeholder { color: var(--pw-grey-2); }
.pwd-newsletter__submit { height: 44px; min-width: 120px; padding: 0 20px; font-size: 16px; font-weight: 600; }
.pwd-newsletter .pwd-newsletter__legal {
	margin-top: 16px !important; padding-top: 16px;
	border-top: 1px solid var(--pw-stroke-soft);
	font-size: 13px; font-weight: 400; line-height: 1.6; color: var(--pw-grey-1);
}
.pwd-newsletter__legal a { color: var(--pw-primary); text-decoration: none; }
.pwd-newsletter__legal a:hover { text-decoration: underline; }

/* --- responsive ----------------------------------------------------------
   The Figma file carries desktop 1440 frames only, so everything below is a
   reduction of the desktop rules rather than a second design. */
@media (max-width: 1200px) {
	.pwd-featured__photo { width: 220px; height: 280px; }
	.pwd-grid--3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 1024px) {
	.pwd-hero { grid-template-columns: 1fr; gap: 28px; padding-top: 150px; }
	.pwd-hero__title { font-size: 38px; }
	.pwd-hero__media { aspect-ratio: 16 / 7; }
	.pwd-panel { padding: 28px; margin-top: 28px; }
	.pwd-section-title { font-size: 30px; }
	.pwd-featured { flex-direction: column; }
	.pwd-featured__aside { padding: 20px 24px 0; }
	.pwd-featured__photo { width: 100%; height: 300px; }
	.pwd-featured__body { padding: 24px; }
	.pwd-newsletter__row { flex-direction: column; align-items: flex-start; gap: 24px; }
	.pwd-newsletter__form { width: 100%; }
	.pwd-quote { flex-direction: column; align-items: flex-start; }
}
@media (max-width: 640px) {
	.pwd-hero { padding-top: 120px; }
	.pwd-hero__title { font-size: 30px; }
	.pwd-hero__sub { font-size: 16px; }
	.pwd-filters { flex-direction: column; align-items: stretch; }
	.pwd-field--narrow { flex: 1 0 auto; }
	.pwd-grid--3 { grid-template-columns: minmax(0, 1fr); }
	.pwd-card { min-height: 0; }
	.pwd-section-title { font-size: 26px; }
	.pwd-featured__name { font-size: 20px; }
	.pwd-quote__text { font-size: 19px; }
	.pwd-quote__photo { width: 110px; height: 110px; }
	.pwd-newsletter__title { font-size: 22px; }
	.pwd-panel { padding: 20px; border-radius: var(--pw-radius); }
}

/* =========================================================================
   NAVBAR  (Figma 161:2502) and FOOTER (162:1022)
   Built here because the site's own header and footer are a different
   design: its header reads "For Sponsors / CROs - For Research Sites" where
   this one reads "Products - Who we serve", and its footer has four columns
   where this one has five. The client's are left untouched; these are used
   only by the screens built from the Figma file.
   ========================================================================= */

.pwd-nav-wrap,
.pwd-footer {
	box-sizing: border-box;
	font-family: "Plus Jakarta Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
}
.pwd-nav-wrap *, .pwd-nav-wrap *::before, .pwd-nav-wrap *::after,
.pwd-footer *, .pwd-footer *::before, .pwd-footer *::after { box-sizing: border-box; }
.pwd-nav-wrap p, .pwd-footer p, .pwd-footer h2, .pwd-footer ul, .pwd-footer li { margin: 0; padding: 0; }
.pwd-footer ul { list-style: none; }
.pwd-b { display: block; }

/* --- navbar --------------------------------------------------------------
   A 1240-wide floating pill 24px from the top of the page, radius 22, over
   the page colour rather than a bar across the viewport. */
.pwd-nav-wrap {
	position: relative; z-index: 5;
	background: transparent;
	padding-top: 24px;
}
/* The navbar rides over the band below it only on the screens that were drawn
   that way -- their heroes are positioned at the frame's own absolute y and
   count on it. Everywhere else the same -130 simply ate the first 130px of
   the page, which took the top half of the home page's h1 with it. */
body.pwd-designed .pwd-nav-wrap { margin-bottom: -130px; }   /* 24 + the navbar's own 106 */
.pwd-nav {
	background: var(--pw-white);
	border-radius: 22px;
	filter: drop-shadow(var(--pw-nav-shadow));
}
.pwd-nav__top {
	display: flex; align-items: center; justify-content: flex-end; gap: 12px;
	height: 38px; padding: 0 24px;
	background: var(--pw-lav-100);
	border-bottom: 1px solid var(--pw-lav-200);
	border-radius: 22px 22px 0 0;
}
.pwd-nav__pill {
	display: inline-flex; align-items: center; gap: 8px;
	height: 32px; padding: 6px 12px; border-radius: 9999px;
	font-size: 14px; font-weight: 600; line-height: 1.5;
	color: var(--pw-dark); text-decoration: none; white-space: nowrap;
}
.pwd-nav__pill:hover { color: var(--pw-primary); }
.pwd-nav__pill--link { gap: 4px; color: var(--pw-grey-1); }
.pwd-nav__ext { display: inline-flex; padding-left: 3px; }
.pwd-nav__main {
	display: flex; align-items: center; gap: 8px;
	height: 68px; padding: 0 24px;
	background: var(--pw-white);
	border-radius: 0 0 22px 22px;
}
.pwd-nav__logo { display: block; width: 200px; height: 31.953px; flex: none; }
.pwd-nav__logo .pwd-b { width: 100%; height: 100%; }
.pwd-nav__right { flex: 1 0 0; min-width: 0; display: flex; align-items: center; justify-content: flex-end; gap: 12px; }
.pwd-nav__links { display: flex; align-items: center; gap: 2px; }
.pwd-nav__link {
	display: inline-flex; align-items: center; gap: 5px;
	padding: 7px 13px; border-radius: 9999px;
	font-size: 14px; font-weight: 500; line-height: 1.5;
	color: var(--pw-grey-1); text-decoration: none; white-space: nowrap;
}
.pwd-nav__link:hover { background: var(--pw-lav-50); color: var(--pw-primary); }
/* Most of these are a <button>; one may be an <a>, because a dropdown with
   nothing under it renders as a plain top-level link. Left alone the two do
   not match -- the button measured 38 tall against the link's 35, the chevron's
   line box being taller than the words, and something in Divi's own reset beat
   our 500 on a <button> and drew it at 400. 161:2501 says 14 Medium for all. */
.pwd-nav__links .pwd-nav__link { font-weight: 500 !important; line-height: 24px; }
.pwd-nav__rule { width: 1px; height: 18px; background: var(--pw-lav-200); margin: 0 2px 0 4px; flex: none; }
/* The navbar CTA is the 44px variant, not the 36px one the cards use. */
.pwd-nav__cta {
	height: 44px; min-width: 120px; padding: 0 20px;
	border-top: 1px solid var(--pw-white);
	font-size: 16px; font-weight: 500;
	background-image: linear-gradient(117.77deg, #7A44EC 5.44%, #6833D2 83.86%);
}

/* --- footer --------------------------------------------------------------
   1440 x 580, 70px of lead and 30px under, 60px sides, inner column 1240. */
.pwd-footer { background: var(--pw-dark); padding: 70px 60px 30px; min-height: 580px; }
.pwd-footer__inner {
	max-width: var(--pw-shell); margin: 0 auto; width: 100%;
	display: flex; flex-direction: column; gap: 24px; align-items: flex-start;
}
.pwd-footer__logo { display: block; width: 280px; height: 45px; }
.pwd-footer__logo .pwd-b { width: 100%; height: 100%; }
.pwd-footer__body { display: flex; flex-direction: column; gap: 32px; width: 100%; }
.pwd-footer__cols { display: flex; align-items: flex-start; justify-content: space-between; padding-top: 40px; }
.pwd-footer__col--0 { width: 200px; }
.pwd-footer__col--1 { width: 180px; }
.pwd-footer__col--2 { width: 200px; }
.pwd-footer__col--3 { width: 180px; }
.pwd-footer__col--connect .pwd-footer__list { width: 160px; }
.pwd-footer__head {
	height: 41px; padding-bottom: 28px;
	font-size: 14px; font-weight: 700; line-height: 1.5; color: var(--pw-white);
	white-space: nowrap;
}
.pwd-footer__list { display: flex; flex-direction: column; gap: 4px; }
.pwd-footer__item a {
	font-size: 14px; font-weight: 500; line-height: 1.5;
	color: var(--pw-white); text-decoration: none; white-space: nowrap;
}
.pwd-footer__item a:hover { color: var(--pw-lav-200); }
/* The two sub-items under Elevate are indented and set in Grey 2. */
.pwd-footer__item.is-sub { padding-left: 14px; }
.pwd-footer__item.is-sub a { color: var(--pw-grey-2); }
.pwd-footer__col--0 .pwd-footer__item:nth-child(4),
.pwd-footer__col--0 .pwd-footer__item:nth-child(5) { padding-top: 8px; }
.pwd-footer__list--social .pwd-footer__item a { display: flex; align-items: center; gap: 10px; height: 26px; }
.pwd-footer__soc { width: 15px; height: 15px; display: block; flex: none; }
.pwd-footer__soc--x {
	display: flex; align-items: center; justify-content: center;
	font-size: 14px; font-weight: 700; color: var(--pw-white); line-height: normal;
}
.pwd-footer__badges { display: flex; flex-wrap: wrap; align-items: center; gap: 16px; height: 38px; }
.pwd-footer__badges img { width: 38px; height: 38px; object-fit: contain; display: block; }
.pwd-footer__legal {
	display: flex; align-items: center; justify-content: space-between;
	padding-top: 32px; width: 100%;
}
.pwd-footer__legal p,
.pwd-footer__legal a {
	font-size: 14px; font-weight: 500; line-height: 1.5; color: var(--pw-grey-2); text-decoration: none;
}
.pwd-footer__legal-links { display: flex; gap: 24px; }
.pwd-footer__legal a:hover { color: var(--pw-white); }

@media (max-width: 1100px) {
	.pwd-nav__links { display: none; }
	.pwd-footer { padding: 48px 24px 24px; }
	.pwd-footer__cols { flex-wrap: wrap; gap: 32px; }
	.pwd-footer__col--0, .pwd-footer__col--1, .pwd-footer__col--2, .pwd-footer__col--3 { width: 45%; }
}
@media (max-width: 640px) {
	.pwd-nav__top { padding: 0 12px; gap: 4px; }
	.pwd-nav__main { padding: 0 12px; height: 60px; }
	.pwd-nav__logo { width: 150px; height: 24px; }
	.pwd-nav__cta { height: 38px; min-width: 0; padding: 0 14px; font-size: 14px; }
	.pwd-footer__cols { flex-direction: column; }
	.pwd-footer__col--0, .pwd-footer__col--1, .pwd-footer__col--2, .pwd-footer__col--3 { width: 100%; }
	.pwd-footer__legal { flex-direction: column; align-items: flex-start; gap: 12px; }
}

/* --- form controls -------------------------------------------------------
   Divi styles every input on the site -- 1px #bbb, a white fill and 2px of
   padding -- and its rules outrank a single class of ours, so the newsletter
   pill came out with a grey rectangle drawn inside it and the search box with
   a second border inside its own. The border belongs to the wrapper in this
   design and never to the field, so the field is reset outright. !important
   is deliberate: this is a theme stylesheet we do not control, and the
   specificity race has no ceiling. */
.pwd-screen .pwd-input input,
.pwd-screen .pwd-input select,
.pwd-newsletter .pwd-newsletter__input {
	border: 0 !important;
	border-radius: 0 !important;
	background: transparent !important;
	background-color: transparent !important;
	box-shadow: none !important;
	padding: 0 !important;
	margin: 0 !important;
	height: 100% !important;
	line-height: normal !important;
	color: var(--pw-dark) !important;
	font-family: inherit !important;
	-webkit-appearance: none !important;
	appearance: none !important;
}
.pwd-screen .pwd-input input:focus,
.pwd-screen .pwd-input select:focus,
.pwd-newsletter .pwd-newsletter__input:focus {
	outline: 0 !important;
	box-shadow: none !important;
	background: transparent !important;
}
.pwd-screen .pwd-input input { font-size: 14px !important; }
.pwd-newsletter .pwd-newsletter__input { font-size: 15px !important; }
/* Chrome draws its own clear button and a magnifier on type=search. */
.pwd-screen input[type="search"]::-webkit-search-decoration,
.pwd-screen input[type="search"]::-webkit-search-cancel-button { -webkit-appearance: none; }

/* =========================================================================
   PATIENT STORIES HUB  (Figma 115:2491)
   Three bands on three different backgrounds -- the hero on white, the
   directory on the page colour, the featured story back on white -- so the
   band is its own element rather than a background on the whole screen.
   ========================================================================= */

.pwd-band { width: 100%; }
.pwd-band--white { background: var(--pw-white); }
.pwd-band--page  { background: var(--pw-page-bg); }
.pwd-screen--stories { background: none; padding-bottom: 0; }

/* --- hero ----------------------------------------------------------------
   Title at y=220 in a 571 column; the photograph is 778x530 from y=11 and
   runs off the right edge of the viewport; the band is 533 tall. */
.pwd-hero-band { position: relative; overflow: hidden; }
.pwd-hero--stories { position: static; padding-top: 220px; height: 313px; }
.pwd-hero--stories .pwd-hero__text { position: relative; z-index: 2; max-width: 602px; }
.pwd-hero__title--split { display: flex; flex-direction: column; gap: 8px; text-transform: capitalize; }
.pwd-hero__line { font-size: 48px; font-weight: 700; line-height: 1.2; color: var(--pw-dark); }
/* Accent/italic/2: Spectral Bold Italic 48, tracking -0.96px */
.pwd-hero__accent {
	font-family: "Spectral", Georgia, serif;
	font-style: italic; font-weight: 700; font-size: 48px; line-height: 1.2;
	letter-spacing: -0.96px; color: var(--pw-primary);
}
.pwd-hero--stories .pwd-hero__sub { max-width: 571px; }
/* The photograph is feathered along its left edge rather than cropped, so it
   dissolves into the white band instead of ending on a line. */
/* The photograph is two layers with a white wash between them, and every
   number here is the frame's own: the landscape sits at x=659 y=-19.6
   (782 x 561) under a vertical wash that fades its top and a horizontal one
   that fades both sides, and the cut-out of the two women sits at x=659
   y=11.2 (778 x 530) in front. Flattening it to one JPEG is what lost the
   landscape; converting the cut-out's alpha to RGB is what turned the faded
   half black. */
.pwd-hero__bleed { position: absolute; z-index: 1; inset: 0; pointer-events: none; }
.pwd-hero__bleed-bg,
.pwd-hero__bleed-fg { position: absolute; overflow: hidden; }
.pwd-hero__bleed-bg { left: 45.76%; top: -3.67%; width: 54.31%; height: 105.26%; }
.pwd-hero__bleed-fg { left: 45.76%; top:  2.10%; width: 54.03%; height:  99.49%; }
.pwd-hero__bleed-bg img { position: absolute; left: -1.54%; top:  -4.43%; width: 102.62%; height: 107.43%; max-width: none; }
.pwd-hero__bleed-fg img { position: absolute; left: -1.54%; top: -10.48%; width: 103.17%; height: 113.65%; max-width: none; }
.pwd-hero__bleed-bg::after {
	content: ""; position: absolute; inset: 0;
	background:
		linear-gradient(180deg, #FFF 3.31%, rgba(255, 255, 255, 0) 19.15%),
		linear-gradient(90deg, #FFF 2.88%, rgba(255, 255, 255, 0.4) 30.8%, rgba(255, 255, 255, 0) 47.92%, rgba(255, 255, 255, 0) 83.07%, rgba(255, 255, 255, 0.5) 93.24%, rgba(255, 255, 255, 0.8) 100.89%, #FFF 109.1%);
}


/* --- controls header ------------------------------------------------------ */
.pwd-directory { padding: 60px 0; }
.pwd-controls { display: flex; align-items: center; justify-content: space-between; gap: 24px; min-height: 42px; }
.pwd-controls__title { font-size: 32px; font-weight: 700; line-height: 1.3; color: var(--pw-dark); text-transform: capitalize; }
.pwd-controls__tools { display: flex; align-items: center; gap: 16px; }
/* The pill field on this screen is radius 20, not the 8 the investigator
   screen's field uses. */
.pwd-pillfield {
	display: flex; align-items: center; gap: 8px;
	height: 40px; padding: 0 16px;
	background: var(--pw-white); border: 1px solid var(--pw-stroke); border-radius: 20px;
}
.pwd-pillfield--search { width: 320px; }
.pwd-pillfield .pwd-i { color: var(--pw-grey-2); }
.pwd-pillfield input {
	flex: 1 0 0; min-width: 0; height: 100%; border: 0; background: transparent; outline: none;
	font-family: inherit; font-size: 13px; font-weight: 400; color: var(--pw-dark);
}
.pwd-pillfield input::placeholder { color: var(--pw-grey-2); }
.pwd-sort { display: flex; align-items: center; gap: 8px; }
.pwd-sort__label { font-size: 13px; font-weight: 400; color: var(--pw-grey-2); white-space: nowrap; }
.pwd-pillfield--select { position: relative; cursor: pointer; }
.pwd-pillfield--select .pwd-select__btn { font-size: 13px; font-weight: 600; color: var(--pw-dark); }
.pwd-pillfield--select .pwd-select__menu { left: auto; right: 0; min-width: 190px; }
.pwd-screen .pwd-pillfield input { font-size: 13px !important; }

/* --- workspace: sidebar + grid -------------------------------------------- */
.pwd-workspace { display: grid; grid-template-columns: 320px minmax(0, 1fr); gap: 32px; margin-top: 32px; align-items: start; }
.pwd-grid--stories { align-content: start; }
.pwd-sidebar {
	background: #F8F6FF; border-radius: var(--pw-radius); padding: 24px 16px;
	align-self: start; max-height: 908px; overflow-y: auto;
}
.pwd-sidebar::-webkit-scrollbar { width: 8px; }
.pwd-sidebar::-webkit-scrollbar-thumb { background: var(--pw-lav-200); border-radius: 8px; }
.pwd-sidebar { scrollbar-width: thin; scrollbar-color: var(--pw-lav-200) transparent; }
/* Spectral SemiBold 24, tracking -0.48, Lavender/800 */
.pwd-sidebar__title {
	font-family: "Spectral", Georgia, serif;
	font-style: normal; font-weight: 600; font-size: 24px; line-height: 1.2;
	letter-spacing: -0.48px; color: #5427AD;
	margin: 0 0 24px !important;
}
.pwd-sidebar__list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 12px; }
.pwd-screen .pwd-sidebar__list li {
	list-style: none !important; list-style-type: none !important;
	margin: 0 !important; padding: 0 !important;
}
.pwd-screen .pwd-sidebar__list li::marker { content: none; }
.pwd-sideitem {
	display: flex; align-items: flex-start; justify-content: space-between; gap: 12px;
	width: 100%; padding: 12px 16px; border: 0; border-radius: 8px;
	background: transparent; cursor: pointer; font-family: inherit; text-align: left;
}
.pwd-sideitem__label { font-size: 14px; font-weight: 500; line-height: 1.5; color: var(--pw-grey-1); }
.pwd-sideitem__count {
	flex: none; padding: 2px 8px; border-radius: 10px;
	background: var(--pw-stroke); color: var(--pw-grey-1);
	font-size: 12px; font-weight: 600; line-height: 1.5;
}
.pwd-sideitem:hover { background: rgba(122, 68, 236, 0.06); }
/* The chosen row is a full pill, not a rounded rectangle. */
.pwd-sideitem.is-on { background: var(--pw-lav-100); border-radius: 100px; align-items: center; }
.pwd-sideitem.is-on .pwd-sideitem__label { color: var(--pw-primary); font-weight: 700; }
.pwd-sideitem.is-on .pwd-sideitem__count { background: var(--pw-primary); color: var(--pw-white); }

.pwd-grid--stories { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; margin-top: 0; }
.pwd-story {
	display: flex; flex-direction: column; align-items: stretch;
	min-height: 442px; overflow: hidden;
	background: var(--pw-white); border: 1px solid var(--pw-stroke); border-radius: var(--pw-radius);
	transition: box-shadow 0.18s ease, transform 0.18s ease;
}
.pwd-story:hover { box-shadow: var(--pw-shadow); transform: translateY(-2px); }
.pwd-story__media { display: block; height: 180px; flex: none; background: var(--pw-lav-50); }
.pwd-story__media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.pwd-story__body {
	flex: 1 0 0; min-height: 0; padding: 24px;
	display: flex; flex-direction: column; justify-content: space-between;
}
.pwd-story__stack { display: flex; flex-direction: column; gap: 8px; align-items: flex-start; }
.pwd-story .pwd-chip { padding: 4px 8px; }
/* Clamped so "Read X's Story" lands at the same height in every card in the
   row -- a title runs to one line here and three there. */
.pwd-story__title {
	font-size: 18px; font-weight: 600; line-height: 1.5; color: var(--pw-dark);
	display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical; overflow: hidden;
}
.pwd-story__title a { color: inherit; text-decoration: none; }
.pwd-story__title a:hover { color: var(--pw-primary); }
.pwd-story__sum {
	font-size: 14px; font-weight: 500; line-height: 1.5; color: var(--pw-grey-1);
	display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;
}
.pwd-story__cta {
	display: flex; align-items: center; justify-content: space-between;
	width: 100%; padding: 8px 0; border-radius: 100px;
	font-size: 16px; font-weight: 700; line-height: normal;
	color: var(--pw-primary); text-decoration: none; text-transform: capitalize;
}
.pwd-story__cta:hover { color: var(--pw-lav-700); }

/* --- featured story ------------------------------------------------------- */
.pwd-directory .pwd-more { margin-top: 32px; }

.pwd-feature {
	display: flex; flex-direction: column; gap: 24px; align-items: flex-start;
	margin: 60px 0; padding: 32px; overflow: hidden;
	border: 1px solid var(--pw-stroke); border-radius: var(--pw-radius-lg);
	background: linear-gradient(90deg, rgba(245, 243, 255, 0.7) 0%, rgba(255, 255, 255, 0.7) 55%, rgba(245, 243, 255, 0.7) 100%);
}
.pwd-feature__eyebrow {
	display: flex; align-items: center; gap: 8px;
	font-size: 18px; font-weight: 600; line-height: 1.5; color: var(--pw-primary);
}
.pwd-feature__row { display: flex; gap: 24px; align-items: stretch; width: 100%; }
.pwd-feature__media { width: 373px; height: 222px; flex: none; border-radius: var(--pw-radius); overflow: hidden; }
.pwd-feature__media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.pwd-feature__body {
	flex: 1 0 0; min-width: 0;
	display: flex; flex-direction: column; justify-content: space-between; align-items: flex-start;
}
.pwd-feature__quote { display: flex; flex-direction: column; gap: 12px; width: 100%; }
.pwd-feature__by { display: flex; flex-direction: column; }
.pwd-feature__name { font-size: 16px; font-weight: 600; line-height: normal; color: var(--pw-dark); }
.pwd-feature__role { font-size: 14px; font-weight: 400; line-height: normal; color: var(--pw-grey-2); }
.pwd-feature__cta { height: 44px; min-width: 120px; padding: 0 20px; }

/* The band on this screen carries its own 60px of trailing space and sits
   straight on the footer, where the investigator screen's ends at 189 with
   40px of page colour under it. */
.pwd-newsletter--tall { padding-bottom: 60px; }
.pwd-newsletter--tall + .pwd-band-wrap,
.pwd-band-wrap:has(> .pwd-newsletter--tall) { padding-bottom: 0; }

@media (max-width: 1100px) {
	.pwd-workspace { grid-template-columns: 1fr; gap: 24px; margin-top: 40px; }
	.pwd-grid--stories { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.pwd-hero--stories { padding-top: 150px; height: auto; padding-bottom: 40px; }
	.pwd-hero__bleed {
		position: relative; top: 0; width: 100%; margin-top: 24px;
		-webkit-mask-image: none; mask-image: none;
	}
	.pwd-feature__row { flex-direction: column; }
	.pwd-feature__media { width: 100%; height: 240px; }
}
@media (max-width: 640px) {
	.pwd-hero__line, .pwd-hero__accent { font-size: 30px; }
	.pwd-hero--stories { padding-top: 120px; }
	.pwd-controls { flex-direction: column; align-items: stretch; }
	.pwd-controls__tools { flex-wrap: wrap; }
	.pwd-pillfield--search { width: 100%; }
	.pwd-controls__title { font-size: 26px; }
	.pwd-grid--stories { grid-template-columns: minmax(0, 1fr); }
	.pwd-story { min-height: 0; }
	.pwd-feature { padding: 20px; }
}

/* =========================================================================
   SINGLE PATIENT STORY  (Figma 115:1610)
   A Theme Builder body layout, so these rules draw all 70 stories.
   ========================================================================= */

.pwd-screen--story { background: none; padding-bottom: 0; }

/* --- hero -----------------------------------------------------------------
   HeroContainer at y=160, 1240 wide, 379 tall: text column flexes, visual is
   620 fixed, gap 40. The band is 539 tall. */
.pwd-story-hero {
	display: flex; gap: 40px; align-items: flex-start;
	padding-top: 160px; min-height: 379px;
}
.pwd-story-hero__text {
	flex: 1 0 0; min-width: 0; align-self: stretch;
	display: flex; flex-direction: column; gap: 24px; align-items: flex-start;
	padding-bottom: 48px;
}
.pwd-back {
	font-size: 14px; font-weight: 600; line-height: 1.5;
	color: var(--pw-primary); text-decoration: none;
}
.pwd-back:hover { color: var(--pw-lav-700); }
/* The title is set in two voices at the colon: the part before it in
   Spectral, the part after it in Plus Jakarta purple. Nearly every title in
   the collection has that shape, and one without a colon simply has no
   second line. */
.pwd-story-hero__title {
	display: flex; flex-direction: column; gap: 8px;
	width: 100%; text-transform: capitalize; margin: 0;
}
.pwd-story-hero__lead {
	font-family: "Spectral", Georgia, serif;
	font-style: normal; font-weight: 700; font-size: 48px; line-height: 1.2;
	letter-spacing: -0.96px; color: var(--pw-dark);
}
.pwd-story-hero__tail {
	font-size: 32px; font-weight: 600; line-height: 1.3; color: var(--pw-primary);
}
.pwd-story-hero__by { display: flex; flex-direction: column; gap: 6px; width: 100%; }
.pwd-story-hero__name { font-size: 18px; font-weight: 700; line-height: 1.5; color: var(--pw-dark); }
.pwd-story-hero__role { font-size: 14px; font-weight: 500; line-height: 1.5; color: var(--pw-grey-1); }
/* The photograph is rounded on two opposite corners only -- 160px on the
   top-left and the bottom-right -- which is what gives the page its shape. */
.pwd-story-hero__visual {
	width: 620px; flex: none; align-self: flex-start;
	height: 379px; overflow: hidden;
	border: 1px solid var(--pw-lav-200);
	border-radius: 160px 0 160px 0;
}
.pwd-story-hero__visual img { width: 100%; height: 100%; object-fit: cover; display: block; }

/* --- meta row ------------------------------------------------------------- */
.pwd-metaband { border-bottom: 1px solid var(--pw-stroke); }
.pwd-meta { display: flex; align-items: center; gap: 0; padding: 16px 0; min-height: 62px; flex-wrap: wrap; }
.pwd-meta__item { padding: 0 12px 0 24px; }
.pwd-meta .pwd-chip { padding: 4px 8px; text-decoration: none; }
a.pwd-chip:hover { background: var(--pw-lav-200); }
.pwd-meta__item {
	display: inline-flex; align-items: center; gap: 6px;
	font-size: 14px; font-weight: 500; line-height: 1.5; color: var(--pw-grey-1);
}
.pwd-meta__share {
	display: inline-flex; align-items: center; gap: 6px;
	padding: 0 12px; height: 30px;
	background: none; border: 0; border-radius: 8px; cursor: pointer;
	font-family: inherit; font-size: 13px; font-weight: 600; color: var(--pw-grey-1);
}
.pwd-meta__share:hover { background: var(--pw-lav-50); color: var(--pw-primary); }
.pwd-meta__share .pwd-i { width: 31.5px; height: 30px; }
.pwd-meta__share.is-done { color: var(--pw-primary); }

/* --- body: prose + aside --------------------------------------------------
   main column 856, aside 320, and the gap between them is 164 (the aside
   starts at x=1020 where the text ends at 856). */
.pwd-story-body {
	display: grid; grid-template-columns: 856px 320px;
	justify-content: space-between; gap: 64px;
	padding: 60px 0;
}
.pwd-prose { display: flex; flex-direction: column; gap: 16px; }
.pwd-prose h2 {
	margin: 24px 0 0 !important; padding: 0;
	font-size: 24px; font-weight: 700; line-height: 1.4;
	color: var(--pw-dark); text-transform: capitalize;
}
.pwd-prose h2:first-child { margin-top: 0 !important; }
.pwd-prose p {
	margin: 0 !important; padding: 0;
	font-size: 18px; font-weight: 500; line-height: 1.5; color: var(--pw-grey-1);
}
/* A paragraph that is entirely a quotation is set as the design's pull
   quote. That is a property of the text, not a decoration dropped in. */
.pwd-prose p.pwd-prose__quote {
	border-left: 4px solid var(--pw-primary);
	padding: 12px 16px 12px 24px !important;
	font-family: "Spectral", Georgia, serif;
	font-style: italic; font-weight: 600; font-size: 24px; line-height: 1.2;
	letter-spacing: -0.48px; color: var(--pw-dark);
}
.pwd-prose a { color: var(--pw-primary); }
.pwd-prose img { max-width: 100%; height: auto; border-radius: var(--pw-radius); }

/* --- the rest of what the articles actually contain -----------------------
   The design's sample story is h2 and p only. Four of the seventy also carry
   h4 subheadings, figures with captions, blockquotes and lists, and unstyled
   they fell back to Divi's defaults in the middle of the prose. */
.pwd-prose h3, .pwd-prose h4 {
	margin: 16px 0 0 !important; padding: 0;
	font-size: 20px; font-weight: 700; line-height: 1.4; color: var(--pw-dark);
}
.pwd-prose h3:first-child, .pwd-prose h4:first-child { margin-top: 0 !important; }
.pwd-prose blockquote {
	margin: 0 !important;
	border-left: 4px solid var(--pw-primary);
	padding: 12px 16px 12px 24px !important;
	font-family: "Spectral", Georgia, serif;
	font-style: italic; font-weight: 600; font-size: 22px; line-height: 1.3;
	letter-spacing: -0.48px; color: var(--pw-dark);
	background: none;
}
.pwd-prose blockquote p {
	font: inherit !important; color: inherit !important; letter-spacing: inherit;
}
.pwd-prose figure { margin: 8px 0 !important; display: flex; flex-direction: column; gap: 8px; }
.pwd-prose figure img { width: 100%; height: auto; border-radius: var(--pw-radius); display: block; }
.pwd-prose figcaption { font-size: 14px; font-weight: 500; line-height: 1.5; color: var(--pw-grey-2); }
.pwd-prose ul, .pwd-prose ol {
	margin: 0 !important; padding-left: 24px !important;
	font-size: 18px; font-weight: 500; line-height: 1.5; color: var(--pw-grey-1);
}
.pwd-prose li { margin: 0 0 8px !important; }
.pwd-prose strong { font-weight: 700; color: var(--pw-dark); }
.pwd-prose em { font-style: italic; }
.pwd-prose a { text-decoration: underline; text-underline-offset: 2px; }

.pwd-aside { display: flex; flex-direction: column; gap: 40px; align-items: flex-start; align-self: start; }
.pwd-aside__quote {
	display: flex; flex-direction: column; gap: 12px; align-items: flex-start;
	margin: 0; padding: 32px; width: 100%;
	border: 1px solid var(--pw-lav-100); border-radius: var(--pw-radius-lg);
	background: linear-gradient(90deg, rgba(245, 243, 255, 0.7) 0%, rgba(255, 255, 255, 0.7) 55%, rgba(245, 243, 255, 0.7) 100%);
}
.pwd-aside__quote blockquote {
	margin: 0 !important; padding: 0 !important;
	border: 0 !important; background: none !important;
}
.pwd-aside__by { font-size: 14px; font-weight: 400; line-height: normal; color: var(--pw-grey-2); }

.pwd-about {
	display: flex; flex-direction: column; gap: 16px; align-items: flex-start;
	padding: 24px; width: 100%;
	background: var(--pw-white); border: 1px solid var(--pw-stroke); border-radius: var(--pw-radius);
}
.pwd-about__head { display: flex; align-items: center; gap: 12px; }
.pwd-about__photo { width: 64px; height: 64px; flex: none; display: block; }
.pwd-about__photo img {
	width: 64px; height: 64px; border-radius: 64px; object-fit: cover; display: block;
	border: 0.8px solid var(--pw-stroke);
}
.pwd-about__who { display: flex; flex-direction: column; gap: 2px; }
.pwd-about__name { font-size: 16px; font-weight: 700; line-height: normal; color: var(--pw-dark); }
.pwd-about__role { font-size: 12px; font-weight: 600; line-height: normal; color: var(--pw-primary); }
.pwd-about__bio { font-size: 16px; font-weight: 400; line-height: 24px; letter-spacing: -0.3125px; color: var(--pw-grey-1); }
.pwd-about__links { width: 100%; padding-top: 12px; border-top: 1px solid var(--pw-stroke); }
.pwd-about__links a {
	display: flex; align-items: center; gap: 10px; height: 26px;
	font-size: 14px; font-weight: 500; line-height: 1.5;
	color: var(--pw-primary); text-decoration: none;
}
.pwd-about__links a:hover { color: var(--pw-lav-700); }

/* --- related resources ----------------------------------------------------- */
.pwd-related { display: flex; flex-direction: column; gap: 32px; align-items: flex-start; padding: 61px 0; }
.pwd-panel-rel { display: flex; flex-direction: column; gap: 24px; align-items: center; width: 100%; }
/* Two cards, then the chevron in its own 50px gutter: 570 + 24 + 570 + 26 + 50. */
.pwd-related__row { display: flex; align-items: center; gap: 26px; width: 100%; }
.pwd-chevron {
	flex: none; width: 50px; height: 50px; border-radius: 25px;
	background: var(--pw-lav-50); border: 1px solid var(--pw-lav-200);
	color: var(--pw-primary); font-size: 20px; line-height: 1; cursor: pointer;
	display: flex; align-items: center; justify-content: center;
}
.pwd-chevron:hover { background: var(--pw-lav-100); }
.pwd-dots { display: flex; align-items: center; gap: 10px; }
.pwd-cdot {
	width: 10px; height: 10px; border-radius: 10px; border: 0; padding: 0; cursor: pointer;
	background: rgba(217, 209, 237, 0.5);
}
.pwd-cdot.is-on { background: #7A57E5; }
.pwd-related__head { display: flex; flex-direction: column; gap: 12px; width: 100%; }
.pwd-related__title { font-size: 40px; font-weight: 700; line-height: 1.2; color: var(--pw-dark); text-transform: capitalize; }
.pwd-related__sub { font-size: 18px; font-weight: 500; line-height: 1.5; color: var(--pw-grey-1); }
.pwd-tabs { display: flex; align-items: flex-start; width: 100%; border-bottom: 1px solid var(--pw-stroke); }
.pwd-tab {
	display: inline-flex; align-items: center; gap: 8px;
	padding: 12px 24px; border: 0; border-bottom: 2px solid transparent;
	background: none; cursor: pointer; font-family: inherit;
	font-size: 16px; font-weight: 500; line-height: 1.5; color: var(--pw-grey-1);
}
.pwd-tab.is-on { border-bottom-color: var(--pw-primary); color: var(--pw-primary); font-weight: 700; }

.pwd-related__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px; flex: 1 0 0; min-width: 0; }
.pwd-related__grid .pwd-rel[hidden] { display: none !important; }
.pwd-rel {
	display: flex; flex-direction: column; align-items: stretch;
	min-height: 563px; overflow: hidden;
	background: var(--pw-white); border: 1px solid var(--pw-stroke);
	border-radius: var(--pw-radius-lg);
	box-shadow: 0 8px 24px -4px rgba(107, 51, 235, 0.06);
	transition: transform 0.18s ease;
}
.pwd-rel:hover { transform: translateY(-2px); }
.pwd-rel__media { display: block; height: 320px; flex: none; background: var(--pw-lav-50); }
.pwd-rel__media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.pwd-rel__body {
	flex: 1 0 0; min-height: 0; padding: 28px;
	display: flex; flex-direction: column; justify-content: space-between;
}
.pwd-rel__stack { display: flex; flex-direction: column; gap: 16px; align-items: flex-start; }
.pwd-rel .pwd-chip { padding: 4px 10px; }
.pwd-rel__text { display: flex; flex-direction: column; gap: 12px; width: 100%; }
.pwd-rel__title {
	font-family: "Spectral", Georgia, serif;
	font-style: normal; font-weight: 700; font-size: 24px; line-height: 1.2;
	letter-spacing: -0.48px; color: var(--pw-dark);
}
.pwd-rel__title a { color: inherit; text-decoration: none; }
.pwd-rel__title a:hover { color: var(--pw-primary); }
.pwd-rel__sum { font-size: 16px; font-weight: 500; line-height: 1.5; color: var(--pw-grey-1); }
.pwd-rel__cta {
	display: inline-flex; align-items: center; gap: 8px; padding: 8px 0;
	font-size: 16px; font-weight: 700; line-height: normal;
	color: var(--pw-primary); text-decoration: none; text-transform: capitalize;
}
.pwd-rel__cta:hover { color: var(--pw-lav-700); }
.pwd-related .pwd-more { width: 100%; margin-top: 0; }
.pwd-btn--sm { font-size: 14px; }

@media (max-width: 1200px) {
	.pwd-story-body { grid-template-columns: minmax(0, 1fr) 320px; gap: 40px; }
	.pwd-story-hero__visual { width: 46%; height: 340px; }
}
@media (max-width: 1024px) {
	.pwd-story-hero { flex-direction: column; padding-top: 150px; }
	.pwd-story-hero__visual { width: 100%; height: 280px; border-radius: 100px 0 100px 0; }
	.pwd-story-body { grid-template-columns: minmax(0, 1fr); gap: 40px; padding: 40px 0; }
	.pwd-aside { width: 100%; }
	.pwd-related__grid { grid-template-columns: minmax(0, 1fr); }
	.pwd-rel { min-height: 0; }
}
@media (max-width: 640px) {
	.pwd-story-hero { padding-top: 120px; }
	.pwd-story-hero__lead { font-size: 30px; }
	.pwd-story-hero__tail { font-size: 20px; }
	.pwd-prose p { font-size: 16px; }
	.pwd-prose h2 { font-size: 20px; }
	.pwd-prose p.pwd-prose__quote { font-size: 19px; }
	.pwd-related__title { font-size: 26px; }
	.pwd-rel__media { height: 220px; }
	
}

/* --- what a module looks like while you are designing ---------------------
   Real cards cannot be drawn in the builder: entry data deliberately does not
   resolve there, and Divi saves what it renders -- which once froze a listing
   into a page on this site permanently. So the module says what it will draw
   instead. */
.pwd-vb {
	font-family: "Plus Jakarta Sans", -apple-system, sans-serif;
	background: var(--pw-lav-50);
	border: 1px dashed var(--pw-lav-200);
	border-radius: var(--pw-radius);
	padding: 24px;
}
.pwd-vb__tag {
	display: inline-block; margin-bottom: 8px;
	font-size: 12px; font-weight: 600; letter-spacing: 0.04em;
	text-transform: uppercase; color: var(--pw-primary);
}
.pwd-vb__what { margin: 0 0 4px !important; font-size: 16px; font-weight: 600; color: var(--pw-dark); }
.pwd-vb__note { margin: 0 !important; font-size: 13px; color: var(--pw-grey-2); }

/* ==========================================================================
   THE DIVI-BUILT SCREENS
   --------------------------------------------------------------------------
   Everything below dresses markup that Divi renders: a Library layout drawn
   once per entry by [cms], the cms plugin's filter form, and the sections and
   rows of the page itself. The design's TYPE, COLOUR and SPACING live in the
   module settings where the client can change them; what lives here is only
   what a Divi module has no way to say about itself --

     that it is one of a row of cards and must be the same height as its
     neighbours; that a photograph must crop rather than set its row's height;
     that a column is 342px because the frame says so; and the handful of
     Divi's own defaults (an image wrap's line box, a button wrapper's
     padding, an input's 1px grey border) that overrule a module setting.

   Every number here was read out of the Figma file with get_design_context,
   and the node it came from is named beside it.
   ========================================================================== */

/* --- an icon on a line of text (135:669, 135:673, 135:639) --------------- */
.pwd-inline-icon {
	display: inline-flex; align-items: center; justify-content: center;
	flex: none; vertical-align: middle; color: inherit;
}
.pwd-inline-icon svg { display: block; width: 100%; height: 100%; }

/* --- a specialty tag (135:647) ------------------------------------------ */
.pwd-tag {
	display: inline-block;
	/* Divi's body font is Roboto and a module with no font set inherits it.
	   135:648 is Plus Jakarta Sans Medium. */
	font-family: "Plus Jakarta Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
	margin: 0 8px 8px 0;
	padding: 6px 10px;
	background: var(--pw-lav-50);
	border-radius: 100px;
	font-size: 14px; font-weight: 500; line-height: 1.5;
	color: var(--pw-primary);
	white-space: nowrap;
}

/* ==========================================================================
   1. THE GRID CARD                                    Figma 135:662
   --------------------------------------------------------------------------
   370.67 x 440, and the 440 is exact: a 200px photograph over a 240px body
   whose padding is 24 and whose footer is pushed to the bottom. The card is
   given that height rather than a minimum, because the frame draws a fixed
   grid and a card that grows makes its whole row grow with it.
   ========================================================================== */
.pwd-gridwrap { --pwd-photo-h: 200px; --pwd-card-min: 440px; --pwd-gap: 24px; --pwd-lines: 3; }

/* 24px between columns, 32 between rows (135:719 sits at y=472 on a 440 card) */
.pwd-gridwrap .cms-list { gap: 32px var(--pwd-gap); }
.pwd-gridwrap .cms-card[hidden] { display: none !important; }
.pwd-more[hidden] { display: none !important; }

.pwd-gridwrap .cms-card {
	display: flex; flex-direction: column;
	height: var(--pwd-card-min);
	background: var(--pw-white);
	border: 1px solid var(--pw-stroke);          /* Strokes/Gray/1 */
	border-radius: var(--pw-radius);             /* 16px */
	overflow: hidden;
	transition: box-shadow 0.18s ease, transform 0.18s ease;
}
.pwd-gridwrap .cms-card:hover { box-shadow: var(--pw-shadow); transform: translateY(-2px); }

/* Divi's section / row / column wrappers sit between the card and its
   modules and each has its own width and padding. Neutralised once. */
.pwd-gridwrap .cms-card > div,
.pwd-gridwrap .cms-card .et_pb_section,
.pwd-gridwrap .cms-card .et_pb_row,
.pwd-gridwrap .cms-card .et_pb_column {
	display: flex; flex-direction: column; flex: 1 0 auto;
	width: 100%; max-width: 100%;
}
.pwd-gridwrap .cms-card .et_pb_row,
.pwd-gridwrap .cms-card .et_pb_section { padding: 0 !important; }
.pwd-gridwrap .cms-card .et_pb_module { margin-bottom: 0; }
.pwd-gridwrap .cms-card .et_pb_text p { margin: 0 !important; }

/* The photograph. Divi's own .et_pb_image img sets height:auto, and its wrap
   and the anchor around it are inline-blocks, so a line box measured 246
   around a 200px file. The height is given to every box in the chain. */
.pwd-gridwrap .cms-card .pwd-c-photo,
.pwd-gridwrap .cms-card .pwd-c-photo a,
.pwd-gridwrap .cms-card .pwd-c-photo .et_pb_image_wrap {
	display: block !important;
	height: var(--pwd-photo-h) !important;
	flex: none;
	line-height: 0; font-size: 0; overflow: hidden;
}
.pwd-gridwrap .cms-card .pwd-c-photo img {
	height: var(--pwd-photo-h) !important; width: 100% !important;
	object-fit: cover; object-position: center 35%;
	/* 135:663 -- the card's own 16 on the top corners, square at the bottom. */
	border-radius: var(--pw-radius) var(--pw-radius) 0 0 !important;
}

/* The two lines that carry an icon (135:668, 135:672). */
.pwd-c-tag .et_pb_text_inner,
.pwd-c-inst .et_pb_text_inner {
	display: flex; align-items: center; gap: 6px; min-width: 0;
}
.pwd-c-inst .pwd-t {
	overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
/* Two of the nine investigators have no institution in the export. The frame
   has no state for that, and an icon on its own beside nothing reads as a
   broken image, so the whole line goes. */
.pwd-c-inst:has(.pwd-t:empty),
.pwd-f-inst:has(.pwd-t:empty) { display: none !important; }

/* Three lines, so "View Profile" lands at the same height in every card
   (135:676 is 63px tall -- 3 x 14px at 1.5). */
.pwd-c-bio { flex: 0 1 auto; }
.pwd-c-bio .et_pb_text_inner {
	display: -webkit-box; -webkit-line-clamp: var(--pwd-lines);
	-webkit-box-orient: vertical; overflow: hidden;
	line-height: 1.5;
}

/* 135:677 is pinned to the bottom of the body -- the frame's justify-between.
   The auto margin has to go on the WRAPPER: Divi puts module_class on the
   <a> itself, and an auto margin on something that is not a flex item does
   nothing at all, so "View Profile" sat wherever the summary left it and
   landed at two different heights down a row of identical cards. */
.pwd-gridwrap .cms-card .et_pb_button_module_wrapper {
	margin-top: auto !important;
	padding: 0 !important;
	line-height: 0;
}
/* Divi puts module_class on the <a> itself -- there is no wrapper element
   carrying it -- so a descendant selector here matches nothing at all. */
.et_pb_button.pwd-c-link {
	padding: 0 !important; border: 0 !important;
	display: inline-flex !important; align-items: center; gap: 4px;
	/* 135:677 is 18 tall. Left to the anchor's own line box it measured 24 on
	   some cards and 18 on others, so "View Profile" sat at two different
	   heights down a row of cards that are otherwise identical. */
	height: 18px; line-height: 18px;
}
/* Divi's button icon is absolutely positioned at the right-hand edge and
   slid in on hover; with the button's padding taken out it landed on top of
   its own label and read as a strikethrough. The frame has it simply beside
   the words -- 4 apart on a card (135:679), 8 on the featured button
   (135:396) -- so it is put back in the flow. */
.et_pb_button.pwd-c-link:after,
.et_pb_button.pwd-f-btn:after {
	position: static !important;
	opacity: 1 !important;
	margin: 0 0 0 4px !important;
	line-height: 1;
}
.et_pb_button.pwd-f-btn:after { margin-left: 8px !important; }
.pwd-c-name a { color: inherit; text-decoration: none; }
.pwd-c-name a:hover { color: var(--pw-primary); }

/* ==========================================================================
   2. THE FEATURED CARD                                Figma 135:630
   --------------------------------------------------------------------------
   1160 x 410: a 342px left column holding a 278 x 335 photograph, and the
   rest given to the details. Divi works out a row's column widths by scanning
   the page's own content, and this row lives in a Library layout rendered
   through [cms] -- so it never gets them and both columns came out full
   width. The frame's own widths are given here instead.
   ========================================================================== */
/* front.css gives every .cms-list a 24px bottom margin. This one is a single
   card inside a row that already carries the frame's own 40px gap (135:659
   starts 40 under 135:628), so the 24 was added to it and the heading, the
   grid, the button and the quote all sat 24px low. */
.pwd-featured-wrap { margin-bottom: 0 !important; }
.pwd-featured-wrap .cms-card {
	background: var(--pw-white);
	border: 1px solid var(--pw-stroke);
	border-radius: var(--pw-radius);
	overflow: hidden;
	box-shadow: var(--pw-shadow);              /* gray/5 */
}
.pwd-featured-wrap .pwd-f-row {
	display: flex !important;
	flex-direction: row !important;
	flex-wrap: nowrap !important;
	align-items: stretch !important;
	padding: 0 !important;
}
.pwd-featured-wrap .pwd-f-row > .et_pb_column { float: none !important; margin: 0 !important; }
/* Divi writes a column's own padding into the page's generated CSS by
   scanning that page's content -- and this column is in a Library layout
   rendered through [cms], which that scan never sees. Both columns measured
   0 padding with 32 and 40 set on them, so the frame's values are given
   here as well; the module settings stay, and stay editable. */
.pwd-featured-wrap .pwd-f-row > .et_pb_column.pwd-f-left {
	flex: 0 0 342px !important; width: 342px !important; max-width: 342px !important;
	display: flex; flex-direction: column; justify-content: center;   /* 135:631 */
	padding: 12px 32px 32px !important;
}
.pwd-featured-wrap .pwd-f-row > .et_pb_column.pwd-f-right {
	flex: 1 1 auto !important; width: auto !important; max-width: none !important;
	min-width: 0;
	padding: 40px 32px !important;                                    /* 135:634 */
}
/* 135:633 -- 278 x 335, its own 16px radius, and the same line-box problem
   the grid card's photograph has. */
.pwd-featured-wrap .pwd-f-photo,
.pwd-featured-wrap .pwd-f-photo a,
.pwd-featured-wrap .pwd-f-photo .et_pb_image_wrap {
	display: block !important; line-height: 0; font-size: 0;
	width: 278px !important; height: 335px !important;
	border-radius: var(--pw-radius); overflow: hidden;
}
.pwd-featured-wrap .pwd-f-photo img {
	width: 278px !important; height: 335px !important;
	object-fit: cover; object-position: center 30%;
}
.pwd-featured-wrap .et_pb_text p { margin: 0 !important; }
.pwd-f-inst .et_pb_text_inner { display: flex; align-items: center; gap: 8px; }
/* The tags wrap onto a second line and carry their own 8px gutters, so the
   block below them starts from the last row rather than from the first. */
.pwd-f-chips .et_pb_text_inner {
	display: flex; flex-wrap: wrap; margin-bottom: -8px;
	/* Flex items stretch to their line by default, and the last tag has no
	   bottom margin where the others have 8 -- so it grew to 41 beside their
	   33, on the same row. Every tag is 33 in 135:645. */
	align-items: flex-start;
}
/* 135:657 is plain text, not a link -- but the value really is a reference
   into Conditions, so it stays clickable and simply does not announce it
   until the pointer is on it. */
/* The frame's two eyebrows differ: 135:644 is 12px at 1.5 (18 tall) and
   135:656 is 12px at normal (15). The second one is any .pwd-f-label that
   already has a .pwd-f-label before it. */
.pwd-f-label ~ .pwd-f-label .et_pb_text_inner { line-height: normal; }
.pwd-f-focus a { color: inherit; text-decoration: none; }
.pwd-f-focus a:hover { color: var(--pw-primary); }
/* 135:658 -- 180 x 36, Gradient/1, and the 1px light edge along the top. */
.et_pb_button.pwd-f-btn {
	display: inline-flex !important; align-items: center; justify-content: center; gap: 8px;
	width: 180px; height: 36px; padding: 0 16px !important;
	background-image: var(--pw-gradient);
	border: 0 !important;
	border-radius: 100px !important;
	box-shadow: var(--pw-btn-shadow);
	line-height: 1;
}
/* The 1px light edge along the top of 135:394. It cannot be a Divi setting --
   button_border_width is one number for all four sides -- and it cannot be an
   ordinary rule here either: the card layout's own generated CSS carries
   `body #page-container .et_pb_section .et_pb_button_0 { border-width: 0 !important }`,
   whose id beats two classes. Divi's own selector is matched and gone one
   better rather than the edge being faked with a shadow. */
body #page-container .et_pb_section a.et_pb_button.pwd-f-btn,
body .pum-container .et_pb_section a.et_pb_button.pwd-f-btn {
	border-top: 1px solid rgba(255, 255, 255, 0.2) !important;
}
.pwd-featured-wrap .et_pb_button_module_wrapper { padding: 0 !important; }

@media (max-width: 980px) {
	.pwd-featured-wrap .pwd-f-row { flex-wrap: wrap !important; }
	.pwd-featured-wrap .pwd-f-row > .et_pb_column.pwd-f-left {
		flex: 1 1 100% !important; width: 100% !important; max-width: 100% !important;
	}
	.pwd-featured-wrap .pwd-f-photo,
	.pwd-featured-wrap .pwd-f-photo a,
	.pwd-featured-wrap .pwd-f-photo .et_pb_image_wrap,
	.pwd-featured-wrap .pwd-f-photo img { width: 100% !important; height: 300px !important; }
}

/* ==========================================================================
   3. THE FILTER BAR                                   Figma 135:602
   --------------------------------------------------------------------------
   A label over each control, 6px above a 40px field: the keyword box takes
   whatever is left and the dropdown is 400 wide, with 16px between them. The
   cms plugin draws this form; only its shape is set here.
   ========================================================================== */
/* The open list has to sit over the featured card below it. Divi gives every
   row and column a stacking context of its own, so a menu with a z-index but
   no raised ancestor opened UNDERNEATH the next row -- the options were
   visible and could not be clicked, which no fetch of the page could see. */
.pwd-p-filterbar { position: relative; z-index: 30; }
.pwd-p-filterbar .pwd-select__menu { z-index: 40; }

.pwd-p-filterbar .cms-filters {
	border: 0 !important; padding: 0 !important; margin: 0 !important;
	background: none;
	font-family: "Plus Jakarta Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
}
.pwd-p-filterbar .cms-filters__controls {
	display: flex; align-items: flex-end; gap: 16px; margin: 0;
	/* front.css wraps these, and a flex item wraps before it shrinks -- so a
	   third control went to a second line and pushed the whole page down 78px
	   rather than sharing the row. They share it now; the narrow breakpoint
	   below still wraps, which is where wrapping is right. */
	flex-wrap: nowrap;
}
.pwd-p-filterbar .cms-filters__search {
	/* 135:603 is 744 of the row's 1160. Said as a BASIS, not left to be
	   whatever the controls beside it do not use -- with `1 1 auto` the
	   search took only the leftover, so a third control in the row silently
	   cut it to 328 with every rule still matching. */
	position: relative; flex: 1 1 744px; min-width: 0;
	/* front.css caps this at 420 so a listing's own bar never runs the width
	   of the page. The frame gives the whole remainder to it (135:603 is 744
	   of the row's 1160), so the cap is lifted for this placement only. */
	max-width: none;
	display: flex; flex-direction: column; gap: 6px;
}
.pwd-p-filterbar .cms-filters__field {
	/* 135:615. It gives way before the search does. */
	position: relative; flex: 0 1 400px; width: auto; max-width: 400px; min-width: 0;
	display: flex; flex-direction: column; gap: 6px;
	/* front.css centres a field's label beside its control; stacked, that
	   centres the label over it. 135:616 is on the control's left edge. */
	align-items: stretch;
}
.pwd-p-filterbar .cms-filters__search .pwd-fb__label,
.pwd-p-filterbar .cms-filters__field > label {
	position: static; width: auto; height: auto; margin: 0; padding: 0;
	clip: auto; clip-path: none; overflow: visible;
	font-size: 13px; font-weight: 600; line-height: normal;
	color: var(--pw-dark); white-space: nowrap;
}
/* Divi styles every input on the site -- 1px #bbb, 2px of padding, its own
   font -- and that beats a plugin's own rule on specificity alone. */
.pwd-p-filterbar .cms-filters input[type="search"],
.pwd-p-filterbar .cms-filters select {
	width: 100% !important; height: 40px !important;
	margin: 0 !important; padding: 0 14px !important;
	background: var(--pw-white) !important;
	border: 1px solid var(--pw-stroke) !important;
	border-radius: 8px !important;
	font-family: inherit !important; font-size: 14px !important; font-weight: 400 !important;
	color: var(--pw-dark) !important;
	-webkit-appearance: none; appearance: none;
	box-shadow: none !important;
}
.pwd-p-filterbar .cms-filters input[type="search"] { padding-left: 36px !important; }
.pwd-p-filterbar .cms-filters input[type="search"]::placeholder { color: var(--pw-grey-2); opacity: 1; }
.pwd-p-filterbar .cms-filters input[type="search"]:focus,
.pwd-p-filterbar .cms-filters select:focus {
	border-color: var(--pw-primary) !important;
	box-shadow: 0 0 0 3px rgba(122, 68, 236, 0.12) !important;
	outline: none;
}
/* Both sit over the 40px field, which is the last 40px of a column that also
   holds a label -- so they are measured from the bottom, not the top. */
.pwd-p-filterbar .cms-filters__icon {
	position: absolute; left: 14px; bottom: 13px;
	width: 14px; height: 14px; margin: 0;
	color: var(--pw-grey-2); pointer-events: none;
}
.pwd-p-filterbar .cms-filters__field > .pwd-i {
	position: absolute; right: 14px; bottom: 17px;
	width: 10px; height: 6px; color: var(--pw-grey-1); pointer-events: none;
}
.pwd-p-filterbar .cms-filters__actions { display: none; }
.pwd-p-filterbar .cms-filters__summary,
.pwd-p-filterbar .cms-filters__note { margin-top: 12px; }

/* The listbox that replaces the operating system's own popup. It is built by
   the script; with the script off the native select still filters. */
.pwd-p-filterbar .cms-filters__field.is-enhanced { padding: 0; }
.pwd-p-filterbar .is-enhanced .pwd-select__native {
	position: absolute !important; width: 1px !important; height: 1px !important;
	margin: -1px !important; padding: 0 !important; border: 0 !important;
	opacity: 0; pointer-events: none;
}
.pwd-p-filterbar .is-enhanced > .pwd-i { display: none; }
.pwd-p-filterbar .pwd-select__btn {
	height: 40px; padding: 0 14px;
	background: var(--pw-white); border: 1px solid var(--pw-stroke); border-radius: 8px;
}
.pwd-p-filterbar .pwd-select__menu,
.pwd-p-filterbar .pwd-select__opt { list-style: none !important; }
.pwd-p-filterbar .pwd-select__opt::marker { content: none; }
.pwd-p-filterbar .pwd-select__opt::before { content: none !important; display: none !important; }
.pwd-p-filterbar .pwd-select__opt { margin: 0 !important; padding: 9px 12px !important; }

@media (max-width: 780px) {
	.pwd-p-filterbar .cms-filters__controls { flex-wrap: wrap; }
	.pwd-p-filterbar .cms-filters__field { flex: 1 1 100%; width: 100%; }
}

/* ==========================================================================
   4. THE PAGE ITSELF                                  Figma 135:593
   ========================================================================== */

/* The title sits at y=200 in the frame and the navbar is an overlay ending at
   130, so a section with only the design's own lead paints its h1 behind it. */
.pwd-p-hero { padding-top: 200px !important; }
@media (max-width: 1024px) { .pwd-p-hero { padding-top: 150px !important; } }
@media (max-width: 640px)  { .pwd-p-hero { padding-top: 120px !important; } }

/* 135:600 -- 628 x 283, its top-right corner rounded, and a fade along its
   left edge into the page colour. The image is NOT a column beside the text:
   it is behind, and the panel below is lifted over its bottom 130px. */
.pwd-p-heroimg { position: relative; }
.pwd-p-heroimg .et_pb_image_wrap { display: block; width: 100%; position: relative; }
.pwd-p-heroimg img {
	width: 100% !important; height: 283px !important;
	object-fit: cover; object-position: center 40%;
	border-radius: 0 24px 0 0;
}
.pwd-p-heroimg .et_pb_image_wrap:after {
	content: ""; position: absolute; inset: 0;
	border-radius: 0 24px 0 0;
	background: linear-gradient(90deg, var(--pw-fade) 0%, rgba(250,249,253,0.535) 14%, rgba(250,249,253,0) 23%);
}
@media (max-width: 980px) {
	.pwd-p-heroimg img { height: 220px !important; }
}

/* 135:595 / 135:600 -- the text column is 611 wide and the photograph 628,
   with 101 between them, against a 1240 shell. Divi's own column fractions
   cannot say 611 and 628, so the row's two columns are given the frame's
   widths; both are still ordinary Divi columns with their own settings. */
.pwd-p-herorow { display: flex !important; align-items: flex-start; }
.pwd-p-herorow > .et_pb_column { float: none !important; margin: 0 !important; }
.pwd-p-herorow > .et_pb_column:first-child {
	flex: 0 1 611px !important; width: 611px !important; max-width: 611px !important;
}
.pwd-p-herorow > .et_pb_column:last-child {
	flex: 0 0 628px !important; width: 628px !important; max-width: 628px !important;
	margin-left: auto !important;
}
@media (max-width: 1240px) {
	.pwd-p-herorow > .et_pb_column:last-child { flex: 1 1 45% !important; width: 45% !important; }
}
@media (max-width: 980px) {
	.pwd-p-herorow { flex-wrap: wrap !important; }
	.pwd-p-herorow > .et_pb_column:first-child,
	.pwd-p-herorow > .et_pb_column:last-child {
		flex: 1 1 100% !important; width: 100% !important; max-width: 100% !important;
		margin-left: 0 !important;
	}
}

/* 135:601 -- the panel rides 130px up over the photograph. */
.pwd-p-panel { position: relative; z-index: 2; }
.pwd-p-title h1, .pwd-p-h2 h2 { padding: 0 !important; }

/* 135:776 -- a bordered pill, no fill. */
.pwd-more { text-align: center; margin-top: 40px; }

/* 135:779 -- the closing quote: a 240px round photograph, the quote mark,
   the words, and who said them, on a card whose fill runs pale-white-pale. */
.pwd-p-quotecard {
	background: linear-gradient(90deg, rgba(245,243,255,0.7) 0%, rgba(255,255,255,0.7) 55%, rgba(245,243,255,0.7) 100%) !important;
	border: 1px solid var(--pw-stroke) !important;
	border-radius: var(--pw-radius-lg) !important;
	overflow: hidden;
}
.pwd-p-quoterow { display: flex !important; flex-direction: row !important; align-items: stretch !important; padding: 0 !important; }
.pwd-p-quoterow > .et_pb_column { float: none !important; margin: 0 !important; }
.pwd-p-quoterow > .et_pb_column.pwd-p-qphoto { flex: 0 0 170px !important; width: 170px !important; max-width: 170px !important; }
.pwd-p-quoterow > .et_pb_column.pwd-p-qtext { flex: 1 1 auto !important; width: auto !important; max-width: none !important; min-width: 0; }
.pwd-p-qphoto .et_pb_image_wrap { display: block; }
.pwd-p-qphoto img {
	width: 170px !important; height: 170px !important;
	object-fit: cover; border-radius: 999px;
}
.pwd-p-quoteicon .et_pb_text_inner { color: var(--pw-primary); line-height: 0; }
.pwd-p-quote .et_pb_text_inner p,
.pwd-p-quoteby .et_pb_text_inner p { margin: 0 !important; }
.pwd-p-quote blockquote {
	margin: 0 !important; padding: 0 !important; border: 0 !important;
}
.pwd-q-by strong { color: var(--pw-dark); font-weight: 700; }

@media (max-width: 780px) {
	.pwd-p-quoterow { flex-wrap: wrap !important; }
	.pwd-p-quoterow > .et_pb_column.pwd-p-qphoto { flex: 1 1 100% !important; width: 100% !important; max-width: 100% !important; }
	.pwd-p-qphoto img { margin: 0 auto; }
}

/* ==========================================================================
   5. ABOUT US                     Figma 135:1633 (Who We Are)
                                   Figma 135:3961 (Community Service)
   --------------------------------------------------------------------------
   Same bargain as the screens above: the type, the colours and the spacing
   are Divi module settings, and only what a module cannot say about itself
   is here -- a column that is 640 wide because the frame says so, a
   photograph cropped to one height across a row, and the handful of Divi
   defaults that overrule a setting.
   ========================================================================== */

/* --- a purple check in a circle (135:2288) ------------------------------- */
.pwd-a-bullet .et_pb_text_inner {
	display: flex; align-items: flex-start; gap: 16px;
}
.pwd-a-check {
	display: inline-flex; align-items: center; justify-content: center;
	flex: none; width: 24px; height: 24px; margin-top: 1px;
	background: var(--pw-primary); border-radius: 12px;
	color: var(--pw-white);
}
.pwd-a-check .pwd-inline-icon { width: 12px; height: 12px; }

/* --- the hero: 640 of text, 520 of mission card (135:2281 / 135:2303) ---- */
.pwd-a-herorow { display: flex !important; align-items: flex-start; }
.pwd-a-herorow > .et_pb_column { float: none !important; margin: 0 !important; }
.pwd-a-herorow > .et_pb_column.pwd-a-heroleft {
	flex: 0 1 640px !important; width: 640px !important; max-width: 640px !important;
}
.pwd-a-herorow > .et_pb_column.pwd-a-card {
	flex: 0 0 520px !important; width: 520px !important; max-width: 520px !important;
	margin-left: auto !important;
	align-self: flex-start;
}
@media (max-width: 1240px) {
	.pwd-a-herorow > .et_pb_column.pwd-a-heroleft { flex: 1 1 55% !important; width: 55% !important; }
	.pwd-a-herorow > .et_pb_column.pwd-a-card { flex: 0 1 40% !important; width: 40% !important; }
}
@media (max-width: 980px) {
	.pwd-a-herorow { flex-wrap: wrap !important; }
	.pwd-a-herorow > .et_pb_column.pwd-a-heroleft,
	.pwd-a-herorow > .et_pb_column.pwd-a-card {
		flex: 1 1 100% !important; width: 100% !important; max-width: 100% !important;
		margin-left: 0 !important;
	}
}
.pwd-a-quoteicon .et_pb_text_inner { line-height: 0; color: var(--pw-primary); }
/* 135:2952 -- a 40px round portrait beside the name. Divi's Blurb puts its
   image in a span whose own line box adds a descender under a 40px file. */
.pwd-a-author .et_pb_main_blurb_image { margin-bottom: 0 !important; width: auto; }
.pwd-a-author .et_pb_blurb_content { display: flex; align-items: center; gap: 12px; max-width: none; }
.pwd-a-author .et_pb_image_wrap { display: block; line-height: 0; }
.pwd-a-author .et_pb_image_wrap img {
	width: 40px !important; height: 40px !important;
	object-fit: cover; border-radius: 20px;
}
.pwd-a-author .et_pb_blurb_container { padding-left: 0 !important; text-align: left; }
.pwd-a-author .et_pb_module_header { margin: 0 !important; padding: 0 !important; }
.pwd-a-author .et_pb_blurb_description p { margin: 0 !important; }

/* --- the team row (135:2975) --------------------------------------------- */
.pwd-a-teamrow > .et_pb_column {
	background: rgba(255, 255, 255, 0.8);
	border: 1px solid rgba(194, 175, 255, 0.4);
	border-radius: 24px;
	padding: 32px;
	box-shadow: 0 0 0 1px rgba(138, 108, 255, 0.08),
	            0 18px 40px -10px rgba(110, 86, 207, 0.15),
	            0 8px 24px -4px rgba(28, 24, 40, 0.05);
	transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.pwd-a-teamrow > .et_pb_column:hover { transform: translateY(-6px); }
/* The photograph is 320 tall in the frame whatever the file's own ratio is,
   or one portrait shot sets the height of the whole row. */
.pwd-a-teamphoto,
.pwd-a-teamphoto .et_pb_image_wrap {
	display: block !important; line-height: 0; overflow: hidden;
	border-radius: 20px;
}
.pwd-a-teamphoto img {
	width: 100% !important; height: 320px !important;
	object-fit: cover; object-position: center 20%;
	border-radius: 20px;
	border: 1px solid rgba(194, 175, 255, 0.5);
}
@media (max-width: 1240px) { .pwd-a-teamphoto img { height: 260px !important; } }
.pwd-a-linkedin .et_pb_text_inner { display: flex; align-items: center; gap: 4px; }
.pwd-a-linkedin a { color: var(--pw-primary); text-decoration: none; display: inline-flex; align-items: center; gap: 4px; }
.pwd-a-linkedin a:hover { opacity: 0.75; }

/* --- the values card: two rows that read as one -------------------------- */
.pwd-a-valuestop, .pwd-a-valuesgrid {
	background: rgba(255, 255, 255, 0.72) !important;
	border: 1px solid rgba(194, 175, 255, 0.35) !important;
	backdrop-filter: blur(12px);
}
.pwd-a-valuestop { border-bottom: 0 !important; }
.pwd-a-valuesgrid { border-top: 0 !important; }
.pwd-a-valuesgrid > .et_pb_column + .et_pb_column { border-left: 1px solid #E9E3F6; }
.pwd-a-valueshead .et_pb_text_inner { display: flex; align-items: flex-start; gap: 8px; }
.pwd-a-valueshead .pwd-inline-icon { color: var(--pw-primary); margin-top: 2px; }

/* --- diversity: 503 of title, 602 of everything else (135:3695) ---------- */
.pwd-a-divrow > .et_pb_column.pwd-a-divleft {
	width: 40.5% !important; max-width: 40.5% !important;   /* 503 of 1240 */
	margin-right: 6.1% !important;                          /* the 76 gap */
}
.pwd-a-divrow > .et_pb_column.pwd-a-divright {
	width: 48.5% !important; max-width: 48.5% !important;    /* 602 of 1240 */
	margin-right: 0 !important;
}
@media (max-width: 980px) {
	.pwd-a-divrow > .et_pb_column.pwd-a-divleft,
	.pwd-a-divrow > .et_pb_column.pwd-a-divright {
		width: 100% !important; max-width: 100% !important; margin-right: 0 !important;
	}
}
/* 135:3849 -- one pale card holding three figures, divided by hairlines. */
.pwd-a-stats > .et_pb_column { padding: 0 20px 0 18px; }
.pwd-a-stats > .et_pb_column + .et_pb_column { border-left: 1px solid #E4D5F5; }
.pwd-a-statnum .et_pb_text_inner { line-height: 1.4; }
.pwd-a-certrow .et_pb_column.pwd-a-certbadge { width: 100px !important; margin-right: 20px !important; }
.pwd-a-certrow .et_pb_column.pwd-a-certtext { width: calc(100% - 120px) !important; margin-right: 0 !important; }
.pwd-a-certimg img { width: 80px !important; height: 80px !important; object-fit: cover; border-radius: 7.5px; }

/* Divi wraps a specialty section's content in a row of its own, at its
   default 1080. The shell is 1240 whatever is inside it. */
.et_section_specialty > .et_pb_row {
	width: 100% !important; max-width: 1240px !important;
	padding: 0 !important;
}
.pwd-a-divrow { width: 100% !important; max-width: 1240px !important; }

/* The frame's 24px gutters, said once, rather than Divi's percentage ones
   which come out at 68 on a 1240 row. */
.pwd-a-teamrow, .pwd-a-valuesgrid { display: flex !important; gap: 24px; }
.pwd-a-teamrow > .et_pb_column,
.pwd-a-valuesgrid > .et_pb_column {
	float: none !important; margin: 0 !important;
	flex: 1 1 0 !important; width: auto !important; max-width: none !important;
}
@media (max-width: 980px) {
	.pwd-a-teamrow, .pwd-a-valuesgrid { flex-wrap: wrap !important; }
	.pwd-a-teamrow > .et_pb_column,
	.pwd-a-valuesgrid > .et_pb_column { flex: 1 1 45% !important; }
}

/* Divi's Divider is the accent bar under a title (135:2284). Its own rule
   sets a full-width top border, so the width has to be said twice. */
.pwd-a-bar { width: 64px !important; max-width: 64px !important; }
.pwd-a-bar .et_pb_divider_internal {
	border-top-width: 4px !important;
	border-radius: 1.5px;
}
.pwd-a-bar--centre { margin-left: auto !important; margin-right: auto !important; }

/* A section that paints a video behind everything: the video is the section's
   own background, so only the stacking needs saying. */
.pwd-a-video > .et_pb_row { position: relative; z-index: 2; }

/* Divi puts a disc marker on every li on this site, and the design's footer
   and navbar are lists. Visible on all four redesigned pages. */
.pwd-footer li, .pwd-footer ul, .pwd-nav li, .pwd-nav ul {
	list-style: none !important; list-style-type: none !important;
}
.pwd-footer li::marker, .pwd-nav li::marker { content: none; }

/* ==========================================================================
   6. COMMUNITY SERVICE            Figma 135:3961
   --------------------------------------------------------------------------
   Seven bands. As everywhere else, the type and colour are module settings;
   what is here is the geometry a Divi module cannot state about itself.
   ========================================================================== */

/* 135:4611 -- the hero photograph, 1240 x 503 with 24px corners. */
.pwd-cs-heroimg,
.pwd-cs-heroimg .et_pb_image_wrap {
	display: block !important; line-height: 0; overflow: hidden;
	border-radius: 24px; width: 100%;
}
.pwd-cs-heroimg img {
	width: 100% !important; height: 503px !important;
	object-fit: cover; object-position: center 40%;
	border-radius: 24px;
}
@media (max-width: 980px) { .pwd-cs-heroimg img { height: 300px !important; } }

/* 135:4614 -- the philosophy card: pale, white through the middle. */
.pwd-cs-philosophy {
	background: linear-gradient(90deg, rgba(245,243,255,0.7) 0%, rgba(255,255,255,0.7) 55%, rgba(245,243,255,0.7) 100%) !important;
	border: 1px solid #EFE8FD !important;
	border-radius: 24px !important;
}

/* 135:4622 -- 556 of text, the rest photographs, 48 between. */
.pwd-cs-whyrow { display: flex !important; align-items: stretch; gap: 48px; }
.pwd-cs-whyrow > .et_pb_column { float: none !important; margin: 0 !important; }
.pwd-cs-whyrow > .et_pb_column.pwd-cs-whytext {
	flex: 0 0 556px !important; width: 556px !important; max-width: 556px !important;
}
.pwd-cs-whyrow > .et_pb_column.pwd-cs-whypics {
	flex: 1 1 auto !important; width: auto !important; max-width: none !important;
	display: flex !important; flex-direction: row !important; gap: 16px; min-width: 0;
}
.pwd-cs-whypics .et_pb_module { margin: 0 !important; }
.pwd-cs-whypics .pwd-cs-pic1 { flex: 1 1 0; min-width: 0; }
.pwd-cs-whypics .pwd-cs-pic2 { flex: 0 0 390px; }
.pwd-cs-whypics .et_pb_image_wrap { display: block; height: 100%; line-height: 0; }
.pwd-cs-whypics img {
	width: 100% !important; height: 526px !important;
	object-fit: cover; border-radius: 16px;
}
@media (max-width: 1240px) {
	.pwd-cs-whyrow { gap: 24px; }
	.pwd-cs-whyrow > .et_pb_column.pwd-cs-whytext { flex: 1 1 45% !important; width: 45% !important; }
	.pwd-cs-whypics img { height: 420px !important; }
	.pwd-cs-whypics .pwd-cs-pic2 { flex: 1 1 0; }
}
@media (max-width: 980px) {
	.pwd-cs-whyrow { flex-wrap: wrap !important; }
	.pwd-cs-whyrow > .et_pb_column { flex: 1 1 100% !important; width: 100% !important; max-width: 100% !important; }
	.pwd-cs-whypics img { height: 260px !important; }
}

/* 135:4640 -- the two event cards, side by side, padding 40, corners 24. */
.pwd-cs-events { display: flex !important; gap: 24px; align-items: stretch; }
.pwd-cs-events > .et_pb_column {
	float: none !important; margin: 0 !important;
	flex: 1 1 0 !important; width: auto !important; max-width: none !important;
	display: flex; flex-direction: column;
	background: var(--pw-white);
	border-radius: 24px;
}
.pwd-cs-events > .et_pb_column.pwd-cs-ev--open {
	border: 1px solid #EFE8FD;
	filter: drop-shadow(0 2px 5px rgba(107, 51, 235, 0.15));
}
.pwd-cs-events > .et_pb_column.pwd-cs-ev--done { border: 1px solid #D8DCE6; }
@media (max-width: 980px) {
	.pwd-cs-events { flex-wrap: wrap !important; }
	.pwd-cs-events > .et_pb_column { flex: 1 1 100% !important; }
}
/* the organisation line and its status pill, on one line (135:4641) */
.pwd-cs-evhead .et_pb_text_inner { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.pwd-cs-evhead .pwd-cs-org { display: block; font-size: 14px; font-weight: 400; line-height: 1.5; }
.pwd-cs-evhead .pwd-cs-orgname { display: block; font-size: 24px; font-weight: 700; line-height: 1.4; color: var(--pw-dark); }
.pwd-cs-tag {
	flex: none; padding: 6px 16px; border-radius: 100px;
	font-size: 14px; font-weight: 600; line-height: 1.5; white-space: nowrap;
}
.pwd-cs-tag--open { background: #E1F7EC; border: 1px solid rgba(16, 124, 65, 0.3); color: #107C41; }
.pwd-cs-tag--done { background: #F1F3F7; border: 1px solid #E4E7EC; color: #9498A1; }
/* the time and address lines sit over a hairline (135:4651) */
.pwd-cs-evmeta .et_pb_text_inner { border-top: 1px solid #E4E7EC; padding-top: 20px; }
.pwd-cs-evmeta p { display: flex; align-items: center; gap: 8px; margin: 0 0 12px !important; }
.pwd-cs-evmeta p:last-child { margin-bottom: 0 !important; }
.pwd-cs-evbtn { margin-top: auto !important; }
.et_pb_button.pwd-cs-evbtn,
.et_pb_button.pwd-cs-pledgebtn {
	display: flex !important; align-items: center; justify-content: center; gap: 8px;
	height: 44px; padding: 0 20px !important;
	border: 0 !important; border-top: 1px solid rgba(255, 255, 255, 0.2) !important;
	border-radius: 100px !important;
	background-image: var(--pw-gradient);
	filter: drop-shadow(0 1.5px 0.75px rgba(0, 0, 0, 0.16));
	line-height: 1;
}
.et_pb_button.pwd-cs-evbtn { width: 100%; }
.et_pb_button.pwd-cs-evbtn:after,
.et_pb_button.pwd-cs-pledgebtn:after { position: static !important; opacity: 1 !important; margin: 0 0 0 8px !important; }
.et_pb_button.pwd-cs-evbtn--done {
	background-image: none; background-color: #F1F3F7 !important;
	color: #9498A1 !important; border-top: 0 !important; filter: none;
	pointer-events: none;
}

/* 135:4685 -- six partner cards, 360 wide, that run past the shell. */
.pwd-cs-partners {
	display: flex !important; gap: 24px;
	overflow-x: auto; scrollbar-width: none;
	/* The frame runs six 360 cards past the shell (135:4685 is 1392 wide on a
	   1240 page). They start on the shell's own edge so the first one lines up
	   with the heading, and the rest are scrolled to. */
	padding-bottom: 8px;
}
.pwd-cs-partners::-webkit-scrollbar { display: none; }
.pwd-cs-partners > .et_pb_column {
	float: none !important; margin: 0 !important;
	flex: 0 0 360px !important; width: 360px !important; max-width: 360px !important;
	background: var(--pw-white);
	border: 1px solid var(--pw-stroke);
	border-radius: 16px;
	box-shadow: var(--pw-shadow);
}
.pwd-cs-logo .et_pb_image_wrap { display: block; line-height: 0; }
.pwd-cs-logo img { height: 60px !important; width: auto !important; max-width: 100%; object-fit: contain; }

/* 135:4726 -- the three ways in. */
.pwd-cs-tabs { display: flex !important; gap: 16px; align-items: stretch; }
.pwd-cs-tabs > .et_pb_column {
	float: none !important; margin: 0 !important;
	flex: 1 1 0 !important; width: auto !important; max-width: none !important;
	min-height: 96px;
	background: var(--pw-white); border: 1px solid #D8DCE6; border-radius: 14px;
	transition: border-color 0.18s ease, background 0.18s ease;
}
.pwd-cs-tabs > .et_pb_column:hover,
.pwd-cs-tabs > .et_pb_column.pwd-cs-tab--on {
	background: #F5F0FF; border: 1.5px solid var(--pw-primary);
	filter: drop-shadow(0 2px 5px rgba(107, 51, 235, 0.15));
}
/* The row is the anchor, not the module's inner div: with the flex on the
   inner div the anchor was its only child and the icon and the words stacked
   inside it, on an inline line box a 44px image pushed to 115. */
.pwd-cs-tab .et_pb_text_inner > a { display: flex; align-items: center; gap: 14px; }
.pwd-cs-tab .pwd-cs-tabicon { flex: none; display: inline-flex; width: 44px; height: 44px; }
.pwd-cs-tab .pwd-cs-tabicon img { width: 44px; height: 44px; object-fit: contain; }
.pwd-cs-tab .pwd-cs-tabtitle { display: block; font-size: 16px; font-weight: 700; line-height: 1.5; color: var(--pw-dark); }
.pwd-cs-tabs > .et_pb_column.pwd-cs-tab--on .pwd-cs-tabtitle { color: var(--pw-primary); }
.pwd-cs-tab .pwd-cs-tabsub { display: block; font-size: 14px; font-weight: 400; line-height: 1.5; color: var(--pw-grey-1); }
.pwd-cs-tab a { text-decoration: none; color: inherit; display: block; }
@media (max-width: 980px) {
	.pwd-cs-tabs { flex-wrap: wrap !important; }
	.pwd-cs-tabs > .et_pb_column { flex: 1 1 100% !important; }
}

/* 135:4760 -- the pledge card: a 480 photograph and the words beside it. */
.pwd-cs-pledge {
	display: flex !important; align-items: stretch;
	background: var(--pw-white) !important;
	border: 1px solid var(--pw-lav-200) !important;
	border-radius: 24px !important;
	overflow: hidden;
	padding: 0 !important;
}
.pwd-cs-pledge > .et_pb_column { float: none !important; margin: 0 !important; }
.pwd-cs-pledge > .et_pb_column.pwd-cs-pledgepic {
	flex: 0 0 480px !important; width: 480px !important; max-width: 480px !important;
}
.pwd-cs-pledge > .et_pb_column.pwd-cs-pledgetext {
	flex: 1 1 auto !important; width: auto !important; max-width: none !important;
	min-width: 0;
	display: flex; flex-direction: column; justify-content: center;
}
.pwd-cs-pledgepic .et_pb_image_wrap { display: block; height: 100%; line-height: 0; }
.pwd-cs-pledgepic img { width: 100% !important; height: 320px !important; object-fit: cover; }
@media (max-width: 980px) {
	.pwd-cs-pledge { flex-wrap: wrap !important; }
	.pwd-cs-pledge > .et_pb_column.pwd-cs-pledgepic,
	.pwd-cs-pledge > .et_pb_column.pwd-cs-pledgetext {
		flex: 1 1 100% !important; width: 100% !important; max-width: 100% !important;
	}
}

/* 135:4769 -- the closing strip: a question, then two ways to ask it. */
.pwd-cs-contact { display: flex !important; align-items: center; gap: 24px; }
.pwd-cs-contact > .et_pb_column { float: none !important; margin: 0 !important; }
.pwd-cs-contact > .et_pb_column + .et_pb_column {
	border-left: 1px solid var(--pw-stroke); padding-left: 24px !important;
}
.pwd-cs-contact > .et_pb_column.pwd-cs-ask { flex: 1 1 auto !important; width: auto !important; max-width: none !important; }
.pwd-cs-contact > .et_pb_column.pwd-cs-mail { flex: 0 0 344px !important; width: 344px !important; max-width: 344px !important; }
.pwd-cs-contact > .et_pb_column.pwd-cs-phone { flex: 0 0 304px !important; width: 304px !important; max-width: 304px !important; }
.pwd-cs-way .et_pb_text_inner { display: flex; align-items: center; gap: 12px; }
.pwd-cs-way .pwd-cs-circle {
	flex: none; width: 48px; height: 48px; border-radius: 24px;
	background: var(--pw-lav-100);
	display: inline-flex; align-items: center; justify-content: center;
}
.pwd-cs-way .pwd-cs-circle img { width: 20px; height: 20px; object-fit: contain; }
.pwd-cs-way .pwd-cs-waylabel { display: block; font-size: 14px; font-weight: 500; line-height: 1.5; color: var(--pw-grey-1); }
.pwd-cs-way .pwd-cs-wayvalue { display: block; font-size: 16px; font-weight: 600; line-height: 1.5; color: var(--pw-dark); }
.pwd-cs-way a { color: inherit; text-decoration: none; }
.pwd-cs-way a:hover { color: var(--pw-primary); }
@media (max-width: 980px) {
	.pwd-cs-contact { flex-wrap: wrap !important; }
	.pwd-cs-contact > .et_pb_column { flex: 1 1 100% !important; width: 100% !important; max-width: 100% !important; }
	.pwd-cs-contact > .et_pb_column + .et_pb_column { border-left: 0; padding-left: 0 !important; }
}

/* the two words the frame sets in Spectral / in purple (135:3965, 135:4616) */
.pwd-cs-serif {
	font-family: Spectral, Georgia, "Times New Roman", serif;
	font-style: italic; font-weight: 700;
	color: var(--pw-primary); letter-spacing: -0.96px;
}
.pwd-cs-accent { color: var(--pw-primary); }

/* the frame's paragraph gaps, which a Text module states once for all of
   its paragraphs rather than one module per paragraph */
.pwd-cs-philocopy p { margin: 0 0 20px !important; }
.pwd-cs-whycopy p, .pwd-cs-form p { margin: 0 0 16px !important; }
.pwd-cs-philocopy p:last-child,
.pwd-cs-whycopy p:last-child { margin-bottom: 0 !important; }

.pwd-cs-pledgeimg .et_pb_image_wrap { display: block; height: 100%; line-height: 0; }
.pwd-cs-pledgeimg img { width: 100% !important; height: 320px !important; object-fit: cover; }
.pwd-cs-evmeta .pwd-inline-icon { color: var(--pw-grey-1); }
.pwd-cs-signup { scroll-margin-top: 140px; }

/* ==========================================================================
   7. CONDITION HUB                Figma 1:2030
      SINGLE CONDITION             Figma 57:123
   ========================================================================== */

/* --- hero (1:2682) -------------------------------------------------------
   571 of text against a photograph that bleeds off the right edge. */
.pwd-ch-herorow { display: flex !important; align-items: flex-start; }
.pwd-ch-herorow > .et_pb_column { float: none !important; margin: 0 !important; }
.pwd-ch-herorow > .et_pb_column.pwd-ch-heroleft {
	flex: 0 0 571px !important; width: 571px !important; max-width: 571px !important;
}
.pwd-ch-herorow > .et_pb_column.pwd-ch-heropic {
	flex: 1 1 auto !important; width: auto !important; max-width: none !important;
	margin-left: auto !important;
}
.pwd-ch-heropic .et_pb_image_wrap { display: block; line-height: 0; }
.pwd-ch-heropic img {
	width: 100% !important; height: 470px !important;
	object-fit: cover; object-position: center 35%;
	border-radius: 24px;
}
@media (max-width: 1100px) {
	.pwd-ch-herorow { flex-wrap: wrap !important; }
	.pwd-ch-herorow > .et_pb_column.pwd-ch-heroleft,
	.pwd-ch-herorow > .et_pb_column.pwd-ch-heropic {
		flex: 1 1 100% !important; width: 100% !important; max-width: 100% !important; margin-left: 0 !important;
	}
	.pwd-ch-heropic img { height: 300px !important; }
}
/* the second line of the title, set in Spectral (1:2686) */
.pwd-ch-serif {
	display: block;
	font-family: Spectral, Georgia, "Times New Roman", serif;
	font-style: italic; font-weight: 700;
	color: var(--pw-primary); letter-spacing: -0.96px;
}
/* 1:2688 -- the search, as one 56px pill with the button inside it */
.pwd-ch-search .cms-filters__controls { display: flex; align-items: center; gap: 0; }
.pwd-ch-search .cms-filters__search {
	position: relative; flex: 1 1 auto; min-width: 0;
	display: flex; align-items: center;
	height: 56px; padding: 0 4px 0 20px;
	background: #FAF9FD; border: 1px solid var(--pw-stroke); border-radius: 100px;
}
.pwd-ch-search .cms-filters__search label { display: none; }
.pwd-ch-search .cms-filters__icon {
	position: static; flex: none; width: 20px; height: 20px; margin: 0 12px 0 0;
	color: #606775;
}
.pwd-ch-search .cms-filters input[type="search"] {
	flex: 1 1 auto; min-width: 0;
	height: 44px !important; padding: 0 !important; margin: 0 !important;
	background: none !important; border: 0 !important; box-shadow: none !important;
	font-family: inherit !important; font-size: 14px !important; color: var(--pw-dark) !important;
}
.pwd-ch-search .cms-filters input[type="search"]::placeholder { color: #606775; opacity: 1; }
.pwd-ch-search .cms-filters__field { display: none; }
/* filters.js hides the Apply button once it has run, because on an ordinary
   bar the control it submits is redundant. Here it IS the design -- 1:2694
   puts a Search button inside the pill -- so it stays. */
.pwd-ch-search .cms-filters__actions {
	display: flex !important; position: static; margin-left: auto;
}
.pwd-ch-search .cms-filters__apply {
	position: static !important; width: auto !important; height: 44px !important;
	min-width: 120px; margin: 0 !important; padding: 0 20px !important;
	clip: auto !important; overflow: visible !important;
	background-image: var(--pw-gradient); background-color: var(--pw-primary);
	border: 0; border-top: 1px solid rgba(255, 255, 255, 0.2);
	border-radius: 100px; cursor: pointer;
	font-family: inherit; font-size: 16px; font-weight: 600; color: var(--pw-white);
	filter: drop-shadow(0 1.5px 0.75px rgba(0, 0, 0, 0.16));
}
.pwd-ch-search .cms-filters__summary, .pwd-ch-search .cms-filters__note { margin-top: 12px; }

/* 1:2695 -- popular searches */
.pwd-ch-popular .et_pb_text_inner { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; }
.pwd-ch-popular .pwd-ch-poplabel { margin-right: 4px; }
.pwd-ch-popular a {
	display: inline-block; padding: 6px 12px;
	background: var(--pw-white); border: 1px solid var(--pw-stroke); border-radius: 999px;
	font-size: 14px; font-weight: 500; color: var(--pw-dark); text-decoration: none;
}
.pwd-ch-popular a:hover { border-color: var(--pw-primary); color: var(--pw-primary); }

/* --- the eight health areas (126:515) ------------------------------------ */
.pwd-areas { display: flex; gap: 16px; align-items: stretch; }
.pwd-area {
	flex: 1 1 0; min-width: 0;
	display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 10px;
	min-height: 176px; padding: 16px;
	background: var(--pw-white);
	border: 1px solid var(--pw-lav-100);
	border-radius: 14px;
	text-align: center; text-decoration: none;
	transition: border-color 0.16s ease, transform 0.16s ease;
}
.pwd-area:hover { border-color: var(--pw-primary); transform: translateY(-2px); }
.pwd-area__icon {
	display: flex; align-items: center; justify-content: center;
	flex: none; width: 72px; height: 72px; border-radius: 36px;
	background: linear-gradient(90deg, rgba(242,237,255,0.7) 0%, rgba(250,247,255,0.4) 50%, rgba(245,240,255,0.65) 100%);
	border: 1px solid var(--pw-lav-100);
}
.pwd-area__icon svg { width: 36px; height: 36px; }
.pwd-area__label { font-size: 14px; font-weight: 600; line-height: 1.5; color: var(--pw-dark); }
.pwd-area__count { font-size: 12px; font-weight: 600; line-height: 1.5; color: var(--pw-grey-2); }
.pwd-area.is-on {
	background: var(--pw-primary); border-color: var(--pw-primary);
	filter: drop-shadow(0 2px 5px rgba(107, 51, 235, 0.15));
}
.pwd-area.is-on .pwd-area__icon { background: var(--pw-lav-700); border-color: var(--pw-lav-700); }
.pwd-area.is-on .pwd-area__icon svg { color: var(--pw-white); }
.pwd-area.is-on .pwd-area__label { color: var(--pw-white); }
.pwd-area.is-on .pwd-area__count { color: var(--pw-stroke); }
@media (max-width: 1100px) {
	.pwd-areas { flex-wrap: wrap; }
	.pwd-area { flex: 1 1 140px; }
}

/* the section heading with its little mark beside it (126:511) */
.pwd-ch-areahead .et_pb_text_inner { display: flex; align-items: center; gap: 16px; }
.pwd-ch-areahead h2 { margin: 0 !important; padding: 0 !important; }
.pwd-ch-areahead .pwd-inline-icon { color: var(--pw-primary); }

/* --- the directory header (1:2777) --------------------------------------- */
.pwd-ch-dirhead .et_pb_text_inner { display: flex; align-items: center; gap: 16px; }
.pwd-ch-dirhead .pwd-ch-badge {
	flex: none; width: 40px; height: 40px; border-radius: 10px;
	background: var(--pw-lav-100);
	display: inline-flex; align-items: center; justify-content: center;
	color: var(--pw-primary);
}
.pwd-ch-dirhead h2 { margin: 0 !important; padding: 0 !important; }
.pwd-ch-dirhead .pwd-ch-count {
	display: block; font-size: 14px; font-weight: 400; line-height: 1.5; color: var(--pw-grey-1);
}

/* --- the condition card (1:2800) ----------------------------------------- */
.pwd-ch-grid { --pwd-card-min: 205px; --pwd-gap: 24px; }
.pwd-ch-grid .cms-list { gap: 24px !important; }
.pwd-ch-grid .cms-card {
	display: flex; flex-direction: column;
	height: auto !important; min-height: 205px;
	background: var(--pw-white);
	border: 1px solid var(--pw-stroke);
	border-radius: 16px;
	overflow: hidden;
	box-shadow: 0 4px 8px rgba(28, 24, 40, 0.05);
	transition: box-shadow 0.18s ease, transform 0.18s ease;
}
.pwd-ch-grid .cms-card:hover { transform: translateY(-3px); box-shadow: 0 10px 20px rgba(122, 68, 236, 0.1); }
.pwd-ch-grid .cms-card > div,
.pwd-ch-grid .cms-card .et_pb_section,
.pwd-ch-grid .cms-card .et_pb_row,
.pwd-ch-grid .cms-card .et_pb_column {
	display: flex; flex-direction: column; flex: 1 0 auto; width: 100%; max-width: 100%;
}
.pwd-ch-grid .cms-card .et_pb_row,
.pwd-ch-grid .cms-card .et_pb_section { padding: 0 !important; }
.pwd-ch-grid .cms-card .et_pb_module { margin-bottom: 0; }
.pwd-ch-grid .cms-card .et_pb_text p { margin: 0 !important; }
/* the title and its round arrow, on one line, the arrow pinned right */
.pwd-cc-title .et_pb_text_inner { display: flex; align-items: flex-start; gap: 24px; min-height: 81px; }
.pwd-cc-title .pwd-cc-name { flex: 1 1 auto; min-width: 0; }
.pwd-cc-title .pwd-cc-go {
	flex: none; width: 36px; height: 36px; border-radius: 100px;
	background: var(--pw-lav-50); color: var(--pw-primary);
	display: inline-flex; align-items: center; justify-content: center;
}
.pwd-cc-title a { color: inherit; text-decoration: none; display: flex; align-items: flex-start; gap: 24px; width: 100%; }
.pwd-cc-title a:hover .pwd-cc-name { color: var(--pw-primary); }
.pwd-cc-tag { margin-top: 0 !important; }
.pwd-cc-tag .et_pb_text_inner > span {
	display: inline-block; padding: 6px 10px; border-radius: 100px;
	background: var(--pw-lav-50); color: var(--pw-primary);
	font-size: 14px; font-weight: 500; line-height: 1.5;
}

/* --- the three curated cards (1:2954) ------------------------------------ */
.pwd-ch-curated { display: flex !important; gap: 24px; align-items: stretch; }
.pwd-ch-curated > .et_pb_column {
	float: none !important; margin: 0 !important;
	flex: 1 1 0 !important; width: auto !important; max-width: none !important;
	/* A flex item's default min-width is auto, so a column whose copy cannot
	   shrink keeps its content width and steals its neighbours' share: two
	   cards measured 304 and the third 560. */
	min-width: 0;
	display: flex; flex-direction: column;
	background: linear-gradient(90deg, rgba(245,243,255,0.55) 0%, rgba(255,255,255,0.55) 55%, rgba(245,243,255,0.55) 100%);
	border: 1px solid var(--pw-stroke);
	border-radius: 24px;
}
@media (max-width: 1100px) {
	.pwd-ch-curated { flex-wrap: wrap !important; }
	.pwd-ch-curated > .et_pb_column { flex: 1 1 100% !important; }
}
.pwd-ch-eyebrow .et_pb_text_inner { display: flex; align-items: center; gap: 8px; }
.pwd-ch-eyebrow .pwd-inline-icon { color: var(--pw-primary); }
.pwd-ch-featimg .et_pb_image_wrap { display: block; line-height: 0; }
.pwd-ch-featimg img { width: 100% !important; height: 345px !important; object-fit: cover; border-radius: 16px; }
.pwd-ch-links .et_pb_text_inner { display: flex; align-items: center; gap: 24px; flex-wrap: wrap; }
.pwd-ch-links a,
.pwd-ch-more a {
	display: inline-flex; align-items: center; gap: 8px;
	color: var(--pw-primary); text-decoration: none;
	font-weight: 700;
}
.pwd-ch-links a:hover, .pwd-ch-more a:hover { opacity: 0.75; }
.pwd-ch-more { margin-top: auto !important; }

/* one support row (1:3010) */
.pwd-ch-support .et_pb_text_inner { display: flex; flex-direction: column; gap: 16px; }
.pwd-ch-supportrow {
	display: flex; align-items: flex-start; gap: 16px;
	padding: 20px;
	background: var(--pw-white); border: 1px solid var(--pw-lav-100); border-radius: 16px;
}
.pwd-ch-support .pwd-ch-badge40 {
	flex: none; width: 40px; height: 40px; border-radius: 10px;
	background: var(--pw-lav-50); color: var(--pw-primary);
	display: inline-flex; align-items: center; justify-content: center;
}
.pwd-ch-support .pwd-ch-supporttitle { display: block; font-size: 14px; font-weight: 700; line-height: 1.5; color: var(--pw-dark); }
.pwd-ch-support .pwd-ch-supportcopy { display: block; font-size: 16px; font-weight: 400; line-height: 1.5; color: var(--pw-grey-1); }

/* the two story rows in the middle card (1:2985) */
.pwd-ch-stories .cms-list { display: block !important; }
.pwd-ch-stories .cms-card {
	display: flex !important;
	/* PW Entry Grid sets --pwd-card-min for a real card grid; two story rows
	   inside a curated card are not that. */
	height: auto !important; min-height: 0 !important;
	background: var(--pw-white); border: 1px solid var(--pw-lav-10, #F7F5FA);
	border-radius: 16px; padding: 16px; margin-bottom: 16px;
}
.pwd-ch-stories .cms-card:last-child { margin-bottom: 0; }
.pwd-ch-stories .cms-card > div,
.pwd-ch-stories .cms-card .et_pb_section,
.pwd-ch-stories .cms-card .et_pb_row { display: block; width: 100%; }
.pwd-ch-stories .cms-card .et_pb_row,
.pwd-ch-stories .cms-card .et_pb_section { padding: 0 !important; }
.pwd-ch-stories .cms-card .et_pb_column { display: flex; gap: 16px; align-items: flex-start; width: 100%; }
.pwd-ch-stories .pwd-sm-photo,
.pwd-ch-stories .pwd-sm-photo .et_pb_image_wrap { flex: none; display: block !important; line-height: 0; width: 80px; }
.pwd-ch-stories .pwd-sm-photo img { width: 80px !important; height: 80px !important; object-fit: cover; border-radius: 12px; }
.pwd-ch-stories .pwd-sm-body { flex: 1 1 auto; min-width: 0; }
.pwd-ch-stories .et_pb_text p { margin: 0 !important; }

/* ==========================================================================
   SINGLE CONDITION
   ========================================================================== */

/* 57:125 -- 580 of text and a 620 photograph with two rounded corners */
.pwd-sc-herorow { display: flex !important; align-items: flex-start; gap: 40px; }
.pwd-sc-herorow > .et_pb_column { float: none !important; margin: 0 !important; }
/* flex-basis auto means the column starts from its own content width and
   only then grows, and Divi's own width kept it there: 540 against the
   frame's 580. Basis 0 makes it take everything the photograph does not. */
.pwd-sc-herorow > .et_pb_column.pwd-sc-herotext {
	flex: 1 1 0 !important; width: auto !important; max-width: none !important; min-width: 0;
}
.pwd-sc-herorow > .et_pb_column.pwd-sc-heropic {
	flex: 0 0 620px !important; width: 620px !important; max-width: 620px !important;
	padding: 0 !important;
}
.pwd-sc-heropic .et_pb_image_wrap { display: block; line-height: 0; }
.pwd-sc-heropic img {
	width: 620px !important; height: 318px !important;
	object-fit: cover; object-position: center 30%;
	border-radius: 160px 0 160px 0;
	border: 1px solid var(--pw-lav-200);
}
@media (max-width: 1100px) {
	.pwd-sc-herorow { flex-wrap: wrap !important; }
	.pwd-sc-herorow > .et_pb_column { flex: 1 1 100% !important; width: 100% !important; max-width: 100% !important; }
	.pwd-sc-heropic img { width: 100% !important; height: 260px !important; border-radius: 100px 0 100px 0; }
}
.pwd-sc-back a { color: var(--pw-primary); text-decoration: none; font-weight: 600; }
.pwd-sc-tags .et_pb_text_inner { display: flex; flex-wrap: wrap; gap: 8px; }
.pwd-sc-tags span {
	display: inline-block; padding: 6px 16px; border-radius: 100px;
	background: var(--pw-white); border: 1px solid var(--pw-stroke);
	font-size: 14px; font-weight: 500; color: var(--pw-dark);
}

/* 57:141 -- the anchor tabs */
.pwd-sc-tabs .et_pb_text_inner { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.pwd-sc-tabs a {
	display: inline-block; padding: 12px 16px;
	color: var(--pw-grey-1); text-decoration: none;
	font-size: 16px; font-weight: 600; line-height: 1.5;
	border-bottom: 2px solid transparent;
}
.pwd-sc-tabs a:hover { color: var(--pw-primary); border-bottom-color: var(--pw-lav-200); }

/* 57:331 -- At a Glance */
.pwd-sc-overrow { display: flex !important; align-items: flex-start; gap: 64px; }
.pwd-sc-overrow > .et_pb_column { float: none !important; margin: 0 !important; }
.pwd-sc-overrow > .et_pb_column.pwd-sc-overleft { flex: 1 1 auto !important; width: auto !important; max-width: none !important; min-width: 0; }
.pwd-sc-overrow > .et_pb_column.pwd-sc-glance {
	flex: 0 0 520px !important; width: 520px !important; max-width: 520px !important;
	background: linear-gradient(90deg, rgba(245,243,255,0.35) 0%, rgba(255,255,255,0.35) 55%, rgba(245,243,255,0.35) 100%);
	border: 1px solid var(--pw-lav-100); border-radius: 24px;
}
@media (max-width: 1100px) {
	.pwd-sc-overrow { flex-wrap: wrap !important; gap: 32px; }
	.pwd-sc-overrow > .et_pb_column { flex: 1 1 100% !important; width: 100% !important; max-width: 100% !important; }
}
.pwd-sc-glancegrid .et_pb_text_inner {
	display: grid; grid-template-columns: 1fr 1fr; gap: 16px;
}
.pwd-sc-glancegrid .pwd-sc-gitem { display: flex; align-items: center; gap: 12px; }
.pwd-sc-glancegrid .pwd-sc-gicon {
	flex: none; width: 36px; height: 36px; border-radius: 8px;
	background: #FAF9FD; color: var(--pw-primary);
	display: inline-flex; align-items: center; justify-content: center;
}
@media (max-width: 640px) { .pwd-sc-glancegrid .et_pb_text_inner { grid-template-columns: 1fr; } }

/* every prose band on the page reads the same */
.pwd-sc-prose .et_pb_text_inner { font-size: 18px; line-height: 1.5; color: var(--pw-grey-1); }
.pwd-sc-prose .et_pb_text_inner p { margin: 0 0 16px !important; }
.pwd-sc-prose .et_pb_text_inner p:last-child { margin-bottom: 0 !important; }
.pwd-sc-prose .et_pb_text_inner ul { margin: 0 0 16px 20px !important; padding: 0 !important; }
.pwd-sc-prose .et_pb_text_inner li { margin: 0 0 8px !important; }
/* [cms_field] prints its own heading; the frame's is 32 Bold */
.pwd-sc-band h2, .pwd-sc-band h3, .pwd-sc-prose h2, .pwd-sc-prose h3 {
	font-family: "Plus Jakarta Sans", sans-serif;
	font-size: 32px; font-weight: 700; line-height: 1.3; color: var(--pw-dark);
	margin: 0 0 20px !important; padding: 0 !important;
}
/* one card per band, the way the frame groups them */
.pwd-sc-card {
	background: var(--pw-white); border: 1px solid var(--pw-stroke);
	border-radius: 24px; padding: 32px;
}
.pwd-sc-reslist .cms-ref-link,
.pwd-sc-reslist .cms-ref-missing {
	display: inline-block; margin: 0 8px 8px 0; padding: 8px 14px;
	background: var(--pw-white); border: 1px solid var(--pw-stroke); border-radius: 100px;
	font-size: 14px; color: var(--pw-dark); text-decoration: none;
}
.pwd-sc-reslist .cms-ref-link:hover { border-color: var(--pw-primary); color: var(--pw-primary); }

/* the mini story row's own three lines (1:2988) */
.pwd-sm-title { display: block; font-size: 14px; font-weight: 700; line-height: 1.5; color: var(--pw-dark); margin-bottom: 4px; }
.pwd-sm-sub { display: block; font-size: 14px; line-height: 1.5; color: var(--pw-grey-1); margin-bottom: 6px; }
.pwd-sm-link {
	display: inline-flex; align-items: center; gap: 8px;
	font-size: 14px; font-weight: 700; color: var(--pw-primary); text-decoration: none;
}
.pwd-sm-link:hover { opacity: 0.75; }

/* A band the entry has not filled must not paint a stripe.
   [cms_field] renders nothing at all when the field is empty -- heading
   included -- and Divi then omits .et_pb_text_inner entirely, which is the
   only tell there is. So a band holding a prose module with no inner is not
   a short band: it is a band with nothing in it, and it goes. */
.pwd-sc-band:has(.pwd-sc-prose):not(:has(.pwd-sc-prose .et_pb_text_inner)):not(:has(.pwd-symcards)) {
	display: none !important;
}

/* Divi clears a row with ::before and ::after. In a flex row those become
   flex items of their own -- zero wide, but each still takes a gap -- so a
   580 column measured 540 and nothing in the rule was wrong. */
.pwd-a-herorow::before, .pwd-a-herorow::after,
.pwd-cs-whyrow::before, .pwd-cs-whyrow::after,
.pwd-cs-events::before, .pwd-cs-events::after,
.pwd-cs-partners::before, .pwd-cs-partners::after,
.pwd-cs-tabs::before, .pwd-cs-tabs::after,
.pwd-cs-pledge::before, .pwd-cs-pledge::after,
.pwd-cs-contact::before, .pwd-cs-contact::after,
.pwd-ch-herorow::before, .pwd-ch-herorow::after,
.pwd-ch-curated::before, .pwd-ch-curated::after,
.pwd-sc-herorow::before, .pwd-sc-herorow::after,
.pwd-sc-overrow::before, .pwd-sc-overrow::after,
.pwd-a-teamrow::before, .pwd-a-teamrow::after,
.pwd-a-valuesgrid::before, .pwd-a-valuesgrid::after,
.pwd-a-stats::before, .pwd-a-stats::after {
	display: none !important;
}

/* ==========================================================================
   8. THE NAVBAR'S FIVE DROPDOWNS          Figma 161:2501
   --------------------------------------------------------------------------
   161:2502  Default            161:2917  Resources Open
   161:2545  Products Open      161:3039  About Us Open
   161:2769  Who We Serve Open  161:3104  Research Hub Open
   ========================================================================== */

/* A trigger is a <button> now, not an <a>: it opens something rather than
   going somewhere, and that is what a screen reader has to be told. */
.pwd-nav__trigger {
	font: inherit; background: none; border: 0; cursor: pointer;
	appearance: none; -webkit-appearance: none;
}
.pwd-nav__trigger .pwd-i { transition: transform 0.16s ease; }
.pwd-nav__trigger[aria-expanded="true"] .pwd-i { transform: rotate(180deg); }

/* 161:2947 -- the lit pill on the open item */
.pwd-nav__links .pwd-nav__link[aria-expanded="true"] {
	background: var(--pw-lav-50);
	border: 1px solid var(--pw-lav-100);
	color: var(--pw-primary);
}
.pwd-nav__top .pwd-nav__pill[aria-expanded="true"] {
	background: var(--pw-lav-50);
	border: 1px solid var(--pw-lav-200);
}

/* 161:2586 -- the panel itself, inside the navbar card so the card grows. */
.pwd-nav__panel {
	background: #FAF9FD;
	border-top: 1px solid var(--pw-stroke);
	padding: 24px 24px 28px;
	border-radius: 0 0 22px 22px;
}
.pwd-nav__panel[hidden] { display: none !important; }
.pwd-nav__grid { display: flex; align-items: stretch; gap: 16px; }

/* 161:2589 -- one card */
.pwd-nav__card {
	flex: 1 1 0; min-width: 0;
	display: flex; flex-direction: column; gap: 12px;
	padding: 16px;
	background: linear-gradient(90deg, rgba(245,243,255,0.7) 0%, rgba(255,255,255,0.7) 55%, rgba(245,243,255,0.7) 100%);
	border: 1px solid var(--pw-lav-100);
	border-radius: 16px;
	box-shadow: 0 2px 12px rgba(110, 86, 207, 0.08);
	transition: border-color 0.16s ease, box-shadow 0.16s ease, transform 0.16s ease;
}
.pwd-nav__card:hover {
	border-color: var(--pw-lav-200);
	box-shadow: 0 12px 24px rgba(0, 0, 0, 0.08), 0 4px 8px rgba(0, 0, 0, 0.06);
	transform: translateY(-1px);
}
.pwd-nav__cardhead {
	display: flex; align-items: center; gap: 12px;
	text-decoration: none;
}
/* 161:2590 -- a 32px tile with an inner white highlight */
.pwd-nav__badge {
	flex: none; display: inline-flex; align-items: center; justify-content: center;
	width: 32px; height: 32px; border-radius: 8px;
	background: var(--pw-lav-100);
	border: 1px solid var(--pw-white);
	box-shadow: inset 0 1px 2px rgba(255, 255, 255, 0.5),
	            0 1px 1.5px rgba(122, 68, 236, 0.08);
}
.pwd-nav__badge svg { display: block; width: 20px; height: 20px; }
.pwd-nav__cardtitle {
	font-size: 16px; font-weight: 700; line-height: 1.5; color: var(--pw-dark);
}
.pwd-nav__card:hover .pwd-nav__cardtitle { color: var(--pw-primary); }
/* 161:2994 -- two lines, and the third is cut rather than growing the card */
.pwd-nav__cardcopy {
	margin: 0 !important;
	font-size: 12px; font-weight: 400; line-height: 1.5; color: var(--pw-grey-1);
	display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical;
	overflow: hidden; min-height: 36px;
}
.pwd-nav__explore, .pwd-nav__sub {
	display: inline-flex; align-items: center; gap: 6px;
	padding: 2px 0;
	font-size: 12px; font-weight: 500; line-height: normal;
	color: var(--pw-grey-1); text-decoration: none;
}
.pwd-nav__explore svg, .pwd-nav__sub svg { width: 12px; height: 12px; }
.pwd-nav__explore:hover, .pwd-nav__sub:hover { color: var(--pw-primary); }
.pwd-nav__card:hover .pwd-nav__explore { color: var(--pw-primary); }
/* 161:2635 -- the Elevate card's two sub-links, 13px SemiBold with an icon */
.pwd-nav__subs { display: flex; flex-direction: column; gap: 8px; margin-top: auto; }
.pwd-nav__sub { font-size: 13px; font-weight: 600; gap: 8px; }
.pwd-nav__subicon { flex: none; display: inline-flex; width: 16px; height: 16px; }
.pwd-nav__subicon svg { width: 16px; height: 16px; display: block; }

/* 161:2917 -- an open navbar takes a glass wash and a much deeper shadow */
.pwd-nav.is-open {
	background-image: linear-gradient(178deg, rgba(255,255,255,0.929) 5%, rgba(250,247,255,0.851) 50%, rgba(244,239,255,0.78) 95%);
	box-shadow: 0 0 0 1px rgba(138, 108, 255, 0.11),
	            0 24px 68px -8px rgba(110, 86, 207, 0.22),
	            0 8px 24px -4px rgba(28, 24, 40, 0.11);
}

/* With the script off, hovering the item still opens its panel. :has is what
   makes that possible from a trigger to a sibling further down the card. */
/* nav-click 2026-09-10: the hover-to-open rules were here. Dropdowns open on click only. */

@media (max-width: 980px) {
	.pwd-nav__grid { flex-wrap: wrap; }
	.pwd-nav__card { flex: 1 1 45%; }
}
@media (max-width: 640px) {
	.pwd-nav__card { flex: 1 1 100%; }
}






/* ==========================================================================
   9. PATIENT STORIES HUB                  Figma 115:2491
   --------------------------------------------------------------------------
   115:3145  hero        571 of text at x=100, y=220
   115:3800  controls    "Explore by condition" 32, a 320 x 40 search pill
   115:3813  workspace   a 320 sidebar and an 888 grid, 32 apart
   115:3814  sidebar     one row per condition, each with its own count
   115:3886  card        280 x 442
   115:3940  featured    a 373 photograph beside the patient's own words
   ========================================================================== */

/* ---- hero (115:3145) --------------------------------------------------- */
.pwd-sh-herorow { align-items: center !important; }
.pwd-sh-herorow.et_pb_row::before,
.pwd-sh-herorow.et_pb_row::after { display: none !important; }
.pwd-sh-heroleft.et_pb_column { width: 571px !important; flex: none !important; margin-right: 69px !important; }
/* The photograph is 778 x 530 at x=659, y=11 (115:3143) -- it starts ABOVE
   the navbar's own bottom edge and runs 97px past the right of the 1240
   content column, so it cannot be a column in the flow. Floated at 600 x 430
   it also pushed "Explore by condition" 57px down the page: a float that
   overflows its own section still displaces every block below it. */
.pwd-sh-herorow { position: relative; min-height: 254px; }
.pwd-sh-heropic.et_pb_column  {
	position: absolute; top: -209px; left: 559px;
	width: 778px !important; margin: 0 !important; flex: none !important;
}

/* Two lines, the second in Spectral italic. It is one h1 because it is one
   sentence -- splitting it into two modules would let a builder session move
   half a heading. */
.pwd-sh-title h1 {
	font-family: "Plus Jakarta Sans", sans-serif !important;
	font-weight: 700; font-size: 48px; line-height: 1.2;
	color: var(--pw-dark); padding: 0 !important;
}
.pwd-sh-title .pwd-sh-lead { display: block; white-space: nowrap; }
.pwd-sh-title .pwd-sh-serif {
	display: block;
	font-family: Spectral, Georgia, serif;
	font-weight: 700; font-style: italic;
	letter-spacing: -2px;
	color: var(--pw-primary);
}
.pwd-sh-intro p { margin: 0 !important; padding: 0 !important; }
.pwd-sh-heroimg .et_pb_image_wrap { display: block; }
.pwd-sh-heroimg img {
	width: 100% !important; height: 530px !important;
	object-fit: cover; object-position: center 40%;
	border-radius: var(--pw-radius-lg); display: block;
}

/* ---- the controls row (115:3800) --------------------------------------- */
.pwd-sh-h2 h2 {
	font-family: "Plus Jakarta Sans", sans-serif !important;
	font-weight: 700; font-size: 32px; line-height: 1.3;
	color: var(--pw-dark); padding: 0 !important;
}
/* The heading sits on the left of the same line as the controls, which is
   what the frame draws -- so the column is one flex line and the bar is
   pushed to the far end of it. */
.pwd-sh-controlrow .et_pb_column {
	width: 100% !important;
	display: flex; align-items: center; justify-content: space-between;
	flex-wrap: wrap; gap: 16px;
}
.pwd-sh-controlrow .pwd-sh-h2 { margin: 0 !important; flex: none; }
.pwd-sh-controls { margin: 0 !important; flex: none; }
.pwd-sh-controls .cms-filters { border: 0; padding: 0; margin: 0; }
.pwd-sh-controls .cms-filters__row { gap: 16px; align-items: center; }
.pwd-sh-controls .cms-filters__search input[type="search"],
.pwd-sh-controls .cms-filters__search input[type="text"] {
	width: 320px; height: 40px; border-radius: 20px;
	border: 1px solid var(--pw-stroke);
	/* The cms plugin puts a magnifier inside the box; a flat 16 of padding
	   would put the placeholder underneath it. */
	padding: 0 16px 0 42px;
	font-size: 14px; color: var(--pw-dark); background: var(--pw-white);
}
.pwd-sh-controls .pwd-select { min-width: 176px; }

/* ---- the workspace (115:3813) ------------------------------------------ */
.pwd-sh-workspace.et_pb_row::before,
.pwd-sh-workspace.et_pb_row::after { display: none !important; }
.pwd-sh-workspace { display: flex !important; align-items: flex-start; gap: 32px; }
.pwd-sh-grid .cms-list { gap: var(--pwd-gap, 24px) !important; }
.pwd-sh-side.et_pb_column { width: 320px !important; flex: none !important; margin: 0 !important; }
.pwd-sh-grid.et_pb_column { width: 888px !important; flex: none !important; margin: 0 !important; }

/* ---- the sidebar itself (115:3814) ------------------------------------- */
.pwd-side {
	background: linear-gradient(180deg, #FBFAFE 0%, #F6F3FE 100%);
	border: 1px solid var(--pw-lav-100);
	border-radius: var(--pw-radius);
	padding: 24px 16px;
	display: flex; flex-direction: column; gap: 24px;
}
.pwd-side__title {
	margin: 0 !important; padding: 0 8px;
	font-family: Spectral, Georgia, serif;
	font-weight: 600; font-size: 24px; line-height: 1.4;
	letter-spacing: -1px;
	color: #5427AD;
}
/* The frame clips this column at 908 -- the exact height of the two rows of
   cards beside it (115:3814 and 115:3875 are both 908) -- and lets the list
   scroll inside it. Left to run its own length it is 1428 tall on this data,
   which pushed the featured story, the newsletter and the footer 511px down a
   page that is otherwise on the frame. */
.pwd-side { height: 908px; }
.pwd-side__list {
	display: flex; flex-direction: column; gap: 4px;
	flex: 1 1 auto; min-height: 0; overflow-y: auto;
	scrollbar-width: thin;
}
.pwd-side__row {
	display: flex; align-items: center; justify-content: space-between; gap: 12px;
	padding: 12px 16px; border-radius: 8px;
	text-decoration: none;
	transition: background 0.14s ease, color 0.14s ease;
}
.pwd-side__name {
	font-size: 14px; font-weight: 500; line-height: 1.5; color: var(--pw-grey-1);
}
/* A count is a number, not a sentence, so it never wraps and never shrinks. */
.pwd-side__count {
	flex: none; min-width: 24px; padding: 2px 8px;
	background: var(--pw-stroke); border-radius: 100px;
	font-size: 12px; font-weight: 600; line-height: 1.5;
	color: var(--pw-grey-1); text-align: center;
}
.pwd-side__row:hover { background: rgba(122, 68, 236, 0.06); }
.pwd-side__row:hover .pwd-side__name { color: var(--pw-primary); }
.pwd-side__row.is-on { background: var(--pw-lav-100); border-radius: 100px; }
.pwd-side__row.is-on .pwd-side__name { color: var(--pw-primary); font-weight: 700; }
.pwd-side__row.is-on .pwd-side__count { background: var(--pw-primary); color: var(--pw-white); }
.pwd-side__row:focus-visible { outline: 2px solid var(--pw-primary); outline-offset: 2px; }

/* ---- the grid card (115:3886) ------------------------------------------ */
/* Everything inside is a Divi module in cms-card-stories. These rules are the
   three things a module cannot know: that the photograph has to be the same
   height as the one beside it, that the summary has to stop at the same line,
   and that the link has to sit on the bottom edge of its own card. */
.pwd-sh-grid .cms-card {
	background: var(--pw-white);
	border: 1px solid var(--pw-stroke);
	border-radius: var(--pw-radius);
	overflow: hidden;
	display: flex; flex-direction: column;
	min-height: var(--pwd-card-min, 442px);
	transition: box-shadow 0.16s ease, transform 0.16s ease;
}
.pwd-sh-grid .cms-card:hover {
	box-shadow: 0 12px 24px rgba(28, 24, 40, 0.08);
	transform: translateY(-2px);
}
/* Divi wraps a rendered layout in two more block elements after the page has
   loaded, so a rule written against the response stops matching once the page
   settles. Both are named here. */
.pwd-sh-grid .cms-card > div,
.pwd-sh-grid .cms-card .et-l,
.pwd-sh-grid .cms-card .et_pb_section,
.pwd-sh-grid .cms-card .et_pb_row,
.pwd-sh-grid .cms-card .et_pb_column {
	display: flex !important; flex-direction: column; flex: 1 1 auto;
	width: 100% !important; max-width: 100% !important;
	padding: 0 !important; margin: 0 !important;
}
.pwd-st-photo { margin: 0 !important; flex: none !important; }
.pwd-st-photo .et_pb_image_wrap { display: block; width: 100%; }
.pwd-st-photo img {
	width: 100% !important; height: var(--pwd-photo-h, 180px) !important;
	object-fit: cover; object-position: center 35%;
	display: block; border-radius: 0;
}
.pwd-st-tag { flex: none !important; }
.pwd-st-tag span,
.pwd-st-tag a {
	display: inline-block; padding: 4px 12px;
	background: var(--pw-lav-50); border-radius: 100px;
	font-size: 12px; font-weight: 600; line-height: 1.5;
	color: var(--pw-primary); text-decoration: none;
}
.pwd-st-title { flex: none !important; }
.pwd-st-title p { margin: 0 !important; padding: 0 !important; }
.pwd-st-title a {
	color: inherit; text-decoration: none;
	display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical; overflow: hidden;
}
.pwd-st-title a:hover { color: var(--pw-primary); }
.pwd-st-summary { flex: 1 1 auto !important; }
.pwd-st-summary p { margin: 0 !important; padding: 0 !important; }
.pwd-st-summary .et_pb_text_inner {
	display: -webkit-box; -webkit-line-clamp: var(--pwd-lines, 3);
	-webkit-box-orient: vertical; overflow: hidden;
}
/* The auto margin has to be on the module, not on the anchor: the anchor is
   inside a plain block wrapper, where an auto margin does nothing at all. */
.pwd-st-read { flex: none !important; }
.pwd-st-read p { margin: 0 !important; padding: 0 !important; }
.pwd-st-read a {
	display: inline-flex; align-items: center; gap: 8px;
	color: var(--pw-primary); text-decoration: none;
}
.pwd-st-read svg { width: 16px; height: 16px; }
.pwd-st-read a:hover { gap: 12px; }

/* ---- the featured story (115:3940) ------------------------------------- */
.pwd-fs-card {
	background: linear-gradient(180deg, #FBFAFE 0%, #F6F3FE 100%);
	border: 1px solid var(--pw-stroke);
	border-radius: var(--pw-radius-lg);
}
/* Divi's columns float and its row clears them with its own ::after. Killing
   that pseudo -- which every FLEXED row here has to do, or the clearfix becomes
   a flex item taking a whole gap -- left this row 66px tall with a 300px column
   floating out of it. This row is not flexed, so it contains its float. */
.pwd-fs-card.et_pb_row { display: flow-root; }
.pwd-fs-eyebrow p { margin: 0 !important; padding: 0 !important; }
.pwd-fs-eyebrow .et_pb_text_inner { display: flex; align-items: center; gap: 8px; }
.pwd-fs-eyebrow svg { width: 18px; height: 18px; color: var(--pw-primary); }
/* The card is one Divi Library layout, so the two-column shape is here. */
.pwd-fs-card .cms-entry,
.pwd-fs-card .pwd-featured > div,
.pwd-fs-card .et-l,
.pwd-fs-card .et_pb_section,
.pwd-fs-card .et_pb_row {
	width: 100% !important; max-width: 100% !important;
	padding: 0 !important; margin: 0 !important;
}
/* The eyebrow and the card layout are two children of the ROW's own column,
   and the layout brings a column of its own -- so this selector matches two
   levels, not one. A grid at both levels put the star in column 1 and the
   whole story in column 2. The grid belongs to the layout's column; the row's
   own column is an ordinary block. */
.pwd-fs-card .et_pb_column {
	width: 100% !important; max-width: 100% !important;
	padding: 0 !important; margin: 0 !important;
	display: grid;
	grid-template-columns: 373px 1fr;
	align-items: center;
	column-gap: 24px;                                   /* 115:3948, 397-373 */
}
.pwd-fs-card > .et_pb_column { display: block !important; }
/* The card in the frame (115:3940) is the lavender panel itself. The layout
   ships as a white card because that is what a card is everywhere else. */
.pwd-fs-card .cms-list,
.pwd-fs-card .cms-card,
.pwd-fs-card .cms-card > div,
.pwd-fs-card .cms-card .et_pb_section {
	background: none !important; border: 0 !important;
	box-shadow: none !important; border-radius: 0 !important;
	overflow: visible !important;
}
.pwd-fs-photo {
	grid-row: 1 / span 4; grid-column: 1;
	margin: 0 !important; align-self: center;
}
.pwd-fs-photo .et_pb_image_wrap { display: block; }
.pwd-fs-photo img {
	width: 373px !important; height: 222px !important;
	object-fit: cover; object-position: center 30%;
	border-radius: var(--pw-radius); display: block;
}
.pwd-fs-mark, .pwd-fs-quote, .pwd-fs-by { grid-column: 2; }
.pwd-fs-card .et_pb_button_module_wrapper { grid-column: 2; }
.pwd-fs-mark svg { width: 24px; height: 24px; color: var(--pw-lav-200); }
.pwd-fs-quote p { margin: 0 !important; padding: 0 !important; }
.pwd-fs-quote,
.pwd-fs-quote p {
	font-family: Spectral, Georgia, serif !important;
	font-style: italic; letter-spacing: -1px;
}
.pwd-fs-by p { margin: 0 !important; padding: 0 !important; }
.pwd-fs-name {
	display: block; font-size: 16px; font-weight: 600; line-height: 1.5;
	color: var(--pw-dark);
}
/* The frame's quote-author block is 194 x 38 (115:3953) -- a name and one
   line under it. The client's own summaries run longer than the designer's
   sample, and a third line is what makes the card 366 instead of 337. Same
   answer as the grid card's summary: clamp it to the one line the frame
   draws, because a card cannot be told how tall the card beside it is. */
.pwd-fs-role {
	display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical;
	overflow: hidden;
}
/* Divi puts a button icon at the far right of the button and slides it in on
   hover. The frame has it beside the words, always. */
.et_pb_button.pwd-fs-btn {
	display: inline-flex !important; align-items: center; gap: 8px;
	height: 44px; padding: 0 20px !important;
	line-height: 44px;
}
.et_pb_button.pwd-fs-btn::after {
	position: static !important; opacity: 1 !important;
	margin: 0 !important; line-height: inherit;
}
.et_pb_button.pwd-fs-btn:hover { background: var(--pw-lav-50) !important; }

@media (max-width: 1240px) {
	.pwd-sh-heroleft.et_pb_column,
	.pwd-sh-heropic.et_pb_column,
	.pwd-sh-side.et_pb_column,
	.pwd-sh-grid.et_pb_column { width: 100% !important; margin-right: 0 !important; }
	.pwd-sh-workspace { flex-wrap: wrap; }
	/* back into the flow: below the frame's own width there is no room to the
	   right of the column for the photograph to bleed into. */
	.pwd-sh-herorow { min-height: 0; }
	.pwd-sh-heropic.et_pb_column { position: static; width: 100% !important; }
	.pwd-sh-heroimg img { height: 320px !important; }
	.pwd-side { height: auto; }
	.pwd-fs-card .et_pb_column { grid-template-columns: 1fr; }
	.pwd-fs-photo { grid-row: auto; grid-column: 1; margin-bottom: 24px !important; }
	.pwd-fs-photo img { width: 100%; }
	.pwd-fs-mark, .pwd-fs-quote, .pwd-fs-by { grid-column: 1; }
	.pwd-fs-card .et_pb_button_module_wrapper { grid-column: 1; }
}


/* ==========================================================================
   10. SINGLE PATIENT STORY                Figma 115:1610
   --------------------------------------------------------------------------
   115:1612  hero        580 of text beside a 620 photograph, two corners at 160
   115:1629  meta        the condition tag, the read time, Share
   115:1640  body        an 856 article beside a 320 aside
   115:1691  related     "Related Resources"
   ========================================================================== */

.pwd-ss-herorow { align-items: center !important; }
.pwd-ss-herorow.et_pb_row::before,
.pwd-ss-herorow.et_pb_row::after { display: none !important; }
.pwd-ss-heroleft.et_pb_column { width: 580px !important; flex: none !important; margin-right: 40px !important; }
.pwd-ss-heropic.et_pb_column  { width: 620px !important; flex: none !important; margin-right: 0 !important; }

.pwd-ss-back p { margin: 0 !important; padding: 0 !important; }
/* Divi colours a module's text from its own setting and leaves anchors to
   the theme, whose link colour is the client's #6a2b7f. */
.pwd-ss-back a {
	display: inline-flex; align-items: center; gap: 8px;
	color: var(--pw-primary) !important; text-decoration: none;
}
/* There is no left arrow in the exported set, so the right one is turned. */
.pwd-ss-back svg { width: 16px; height: 16px; transform: rotate(180deg); }
.pwd-ss-back a:hover { gap: 12px; }

/* The title splits at its colon: the lead in Spectral, the rest as a
   subtitle. A story with no colon keeps the whole line and shows no
   subtitle at all -- {pw_title_tail} is empty and the module disappears. */
.pwd-ss-title h1 {
	font-family: Spectral, Georgia, serif !important;
	font-weight: 700; font-size: 48px; line-height: 1.2;
	letter-spacing: -0.96px;
	color: var(--pw-dark); padding: 0 !important;
}
.pwd-ss-sub h2 {
	font-family: "Plus Jakarta Sans", sans-serif !important;
	font-weight: 600; font-size: 32px; line-height: 1.3;
	color: var(--pw-primary); padding: 0 !important;
}
.pwd-ss-by p { margin: 0 !important; padding: 0 !important; }
.pwd-ss-by .pwd-ss-name {
	display: block; font-size: 18px; font-weight: 700; line-height: 1.5; color: var(--pw-dark);
}
.pwd-ss-by .pwd-ss-role {
	display: block; font-size: 14px; font-weight: 500; line-height: 1.5; color: var(--pw-grey-1);
}

/* 115:1626 -- the photograph is rounded at two opposite corners only. */
.pwd-ss-photo { margin: 0 !important; }
.pwd-ss-photo .et_pb_image_wrap { display: block; }
.pwd-ss-photo img {
	width: 620px !important; height: 460px !important;
	object-fit: cover; object-position: center 30%;
	border: 1px solid var(--pw-lav-200);
	border-radius: 160px 0 160px 0;
	display: block;
}

/* ---- the meta row (115:1629) ------------------------------------------- */
.pwd-ss-meta .et_pb_text_inner {
	display: flex; align-items: center; gap: 24px; flex-wrap: wrap;
	padding: 16px 0;
	border-top: 1px solid var(--pw-stroke);
	border-bottom: 1px solid var(--pw-stroke);
}
.pwd-ss-meta p { margin: 0 !important; padding: 0 !important; }
.pwd-ss-meta .pwd-ss-cond {
	display: inline-flex; align-items: center; padding: 6px 16px;
	background: var(--pw-lav-50); border-radius: 100px;
	font-size: 14px; font-weight: 600;
}
.pwd-ss-meta .pwd-ss-cond a {
	color: var(--pw-primary) !important; text-decoration: none;
}
.pwd-ss-meta .pwd-ss-time,
.pwd-ss-meta .pwd-ss-share {
	display: inline-flex; align-items: center; gap: 8px;
	font-size: 14px; font-weight: 500; color: var(--pw-grey-1);
}
.pwd-ss-meta .pwd-ss-share { margin-left: auto; }
.pwd-ss-meta svg { width: 16px; height: 16px; }

/* ---- the article and its aside (115:1640) ------------------------------ */
.pwd-ss-bodyrow.et_pb_row::before,
.pwd-ss-bodyrow.et_pb_row::after { display: none !important; }
.pwd-ss-bodyrow { display: flex !important; align-items: flex-start; gap: 64px; }
.pwd-ss-main.et_pb_column  { width: 856px !important; flex: none !important; margin: 0 !important; }
.pwd-ss-aside.et_pb_column { width: 320px !important; flex: none !important; margin: 0 !important; }

.pwd-ss-prose .et_pb_text_inner { font-size: 18px; line-height: 1.7; color: var(--pw-grey-1); }
.pwd-ss-prose h2 {
	font-family: "Plus Jakarta Sans", sans-serif;
	font-size: 32px; font-weight: 700; line-height: 1.3;
	color: var(--pw-dark); padding: 32px 0 12px !important;
}
.pwd-ss-prose h3 {
	font-size: 24px; font-weight: 700; line-height: 1.4;
	color: var(--pw-dark); padding: 24px 0 8px !important;
}
.pwd-ss-prose p { margin: 0 0 20px !important; padding: 0 !important; }
.pwd-ss-prose img { border-radius: var(--pw-radius); max-width: 100%; height: auto; }
.pwd-ss-prose ul, .pwd-ss-prose ol { padding-left: 22px; margin: 0 0 20px; }
.pwd-ss-prose li { margin-bottom: 8px; }
/* A paragraph that really is a quotation gets the frame's treatment. Nothing
   is written: the pull quote the Figma draws is a paraphrase, so only real
   quotations are picked out. */
.pwd-ss-prose blockquote {
	margin: 28px 0; padding: 0 0 0 24px;
	border-left: 3px solid var(--pw-lav-200);
	font-family: Spectral, Georgia, serif;
	font-style: italic; font-size: 24px; line-height: 1.4; color: var(--pw-dark);
}

/* 115:1665 -- the quote card, 320 x 334 */
.pwd-ss-quote {
	background: var(--pw-lav-50);
	border: 1px solid var(--pw-lav-100);
	border-radius: var(--pw-radius);
	padding: 24px !important;
	margin: 0 0 24px !important;
}
.pwd-ss-quote p { margin: 0 !important; padding: 0 !important; }
.pwd-ss-quote .pwd-ss-qmark { display: block; }
.pwd-ss-quote .pwd-ss-qmark svg { width: 24px; height: 24px; color: var(--pw-lav-200); }
.pwd-ss-quote .pwd-ss-qtext {
	display: block; margin-top: 12px;
	font-family: Spectral, Georgia, serif;
	font-style: italic; font-weight: 600; font-size: 20px; line-height: 1.4;
	letter-spacing: -0.5px; color: var(--pw-dark);
}

/* 115:1672 -- the About card, with a 64px round portrait */
.pwd-ss-about {
	background: var(--pw-white);
	border: 1px solid var(--pw-stroke);
	border-radius: var(--pw-radius);
	padding: 24px !important;
	margin: 0 !important;
}
.pwd-ss-about p { margin: 0 !important; padding: 0 !important; }
/* The whole card is one Text module, so its parts are spans and each has to
   be told it is a block. That is deliberate: one module is one thing for the
   client to move, and four would be four. */
.pwd-ss-aboutpic { display: block; margin: 0 0 16px; }
.pwd-ss-aboutpic img {
	width: 64px !important; height: 64px !important; border-radius: 50%;
	object-fit: cover; object-position: center 30%; display: block;
}
.pwd-ss-aboutname {
	display: block; margin: 0 0 4px;
	font-size: 16px; font-weight: 700; line-height: 1.5; color: var(--pw-dark);
}
.pwd-ss-aboutrole {
	display: block; margin: 0 0 12px;
	font-size: 12px; font-weight: 600; line-height: 1.5; color: var(--pw-primary);
}
.pwd-ss-aboutbio { display: block; font-size: 14px; line-height: 1.6; color: var(--pw-grey-1); }
.pwd-ss-aboutbio p { margin: 0 0 10px !important; }
.pwd-ss-aboutlink { display: block; margin: 16px 0 0; }
.pwd-ss-aboutlink a {
	display: inline-flex; align-items: center; gap: 8px;
	font-size: 14px; font-weight: 600; color: var(--pw-primary); text-decoration: none;
}
.pwd-ss-aboutlink svg { width: 14px; height: 14px; }

/* ---- related (115:1691) ------------------------------------------------ */
.pwd-ss-relhead h2 {
	font-family: "Plus Jakarta Sans", sans-serif !important;
	font-weight: 700; font-size: 40px; line-height: 1.2;
	color: var(--pw-dark); padding: 0 !important;
}
.pwd-ss-relsub p { margin: 0 !important; padding: 0 !important; }

@media (max-width: 1240px) {
	.pwd-ss-heroleft.et_pb_column,
	.pwd-ss-heropic.et_pb_column,
	.pwd-ss-main.et_pb_column,
	.pwd-ss-aside.et_pb_column { width: 100% !important; margin-right: 0 !important; }
	.pwd-ss-bodyrow { flex-wrap: wrap; gap: 32px; }
	.pwd-ss-photo img { width: 100%; height: auto; }
}

/* ==========================================================================
   7. THE TWO ABOUT US SCREENS -- the second pass
   --------------------------------------------------------------------------
   Everything here was found by measuring the built pages against Figma
   135:1633 and 135:3961 band by band, rather than by reading them. The rule
   is the same as everywhere else in this file: what a Divi module can say
   about itself stays a module setting, and what only the row can say -- how a
   card relates to the card beside it -- is said here.
   ========================================================================== */

/* --- the leadership carousel (135:2963) -----------------------------------
   The frame is a carousel: three 389-wide cards visible, a round chevron at
   each end, and a row of dots underneath. Four cards squeezed to 292 was not
   the design and did not fit the 320-tall photograph either.

   The row stays four ORDINARY DIVI COLUMNS. A fifth person is a fifth column
   added in the builder and the carousel picks it up; nothing here knows how
   many there are. The scroller, the chevrons and the dots are behaviour, and
   behaviour is what pw-design.js is for -- with the script off this is still
   a row that scrolls with a finger or a trackpad.
   ------------------------------------------------------------------------- */
.pwd-a-teamrow.pwd-a-carousel {
	display: flex !important;
	gap: 24px;
	overflow-x: auto;
	overflow-y: hidden;
	scroll-behavior: smooth;
	scroll-snap-type: x mandatory;
	scrollbar-width: none;
	-ms-overflow-style: none;
	/* room for the hover lift and for the card's own drop shadow, which is
	   clipped by the scroll container otherwise */
	padding: 12px 6px 14px !important;
	margin-left: -6px !important;
	margin-right: -6px !important;
}
.pwd-a-teamrow.pwd-a-carousel::-webkit-scrollbar { display: none; }
.pwd-a-teamrow.pwd-a-carousel > .et_pb_column {
	flex: 0 0 389px !important;              /* 135:2975 */
	width: 389px !important;
	max-width: 389px !important;
	scroll-snap-align: start;
}
@media (max-width: 980px) {
	/* Below the frame's own width there is no design to follow, so a card is
	   as wide as the screen will comfortably give it and the row still
	   scrolls. Do NOT let the 980 rule further up wrap this one. */
	.pwd-a-teamrow.pwd-a-carousel { flex-wrap: nowrap !important; }
	.pwd-a-teamrow.pwd-a-carousel > .et_pb_column {
		flex: 0 0 78vw !important;
		width: 78vw !important;
		max-width: 340px !important;
	}
}

/* The wrapper, the chevrons and the dots are built by the script. */
.pwd-a-carousel-wrap {
	position: relative;
	/* The chevrons hang 25px outside the shell, so the wrapper has to BE the
	   shell -- left to span the section it put the right-hand one at 1465 on a
	   1440 page and the whole document scrolled sideways. */
	width: 100%; max-width: 1240px; margin: 0 auto;
}
.pwd-a-cbtn {
	position: absolute;
	top: 176px;                              /* centred on the 320 photograph */
	z-index: 3;
	display: flex; align-items: center; justify-content: center;
	width: 50px; height: 50px;               /* 135:2965 */
	padding: 0;
	border: 1px solid var(--pw-lav-200, #E1D5FB);
	border-radius: 50%;
	background: #F7F5FA;
	box-shadow: 0 6px 16px -6px rgba(28, 24, 40, 0.18);
	color: var(--pw-primary, #7A44EC);
	font: 400 22px/1 "Plus Jakarta Sans", system-ui, sans-serif;
	cursor: pointer;
	transition: background 0.15s ease, box-shadow 0.15s ease, opacity 0.15s ease;
}
.pwd-a-cbtn:hover { background: #FFFFFF; box-shadow: 0 10px 22px -8px rgba(28, 24, 40, 0.26); }
.pwd-a-cbtn:focus-visible { outline: 2px solid var(--pw-primary, #7A44EC); outline-offset: 2px; }
.pwd-a-cbtn--prev { left: -25px; }
.pwd-a-cbtn--next { right: -25px; }
/* An end the row cannot go past is an end the button should not offer. It is
   dimmed rather than removed, so the row does not shift when it goes. */
.pwd-a-cbtn[disabled] { opacity: 0; pointer-events: none; }
@media (max-width: 1340px) {
	.pwd-a-cbtn--prev { left: 4px; }
	.pwd-a-cbtn--next { right: 4px; }
}
@media (max-width: 980px) { .pwd-a-cbtn { display: none; } }

.pwd-a-cdots {                               /* 135:3004 */
	display: flex; justify-content: center; gap: 10px;
	margin-top: 10px;
}
.pwd-a-cdot {
	width: 10px; height: 10px; padding: 0;
	border: 0; border-radius: 50%;
	background: rgba(217, 209, 237, 0.5);
	cursor: pointer;
	transition: background 0.15s ease, transform 0.15s ease;
}
.pwd-a-cdot.is-on { background: #7A57E5; transform: scale(1.1); }
.pwd-a-cdot:focus-visible { outline: 2px solid var(--pw-primary, #7A44EC); outline-offset: 2px; }

/* --- the value icons sit in a tile (135:3665) -----------------------------
   The frame gives every value's glyph a 32px rounded tile. Without it the
   icon floats against the card and the four headings do not line up, because
   a glyph's own box is whatever the SVG is.
   ------------------------------------------------------------------------- */
.pwd-a-valueshead .et_pb_text_inner { gap: 12px !important; align-items: flex-start; }
.pwd-a-valueshead .pwd-inline-icon {
	flex: none;
	display: inline-flex; align-items: center; justify-content: center;
	width: 32px !important; height: 32px !important;
	margin-top: 0 !important;
	border: 1px solid rgba(255, 255, 255, 0.7);
	border-radius: 10px;
	background: rgba(241, 236, 255, 0.65);
}
.pwd-a-valueshead .pwd-inline-icon svg { width: 16px; height: 16px; }
/* The frame runs its dividers the full height of the tallest card, which is
   what a LINE inside an auto-layout row does. */
.pwd-a-valuesgrid > .et_pb_column + .et_pb_column { border-left: 1px solid #E4D5F5; }

/* --- community service: three bands that lost their fill ------------------
   135:4634, 135:4718 and 135:4768 each carry a pale fill in the frame and
   went up white. Nothing errored; the page simply had no rhythm.
   ------------------------------------------------------------------------- */

/* --- the "get involved" cards (135:4727) ---------------------------------
   Two things the frame has and the built card did not: the glyph sits in a
   44px rounded tile, and the card says which one is chosen -- a filled check
   on the active one, a chevron on the others. A row of three identical cards
   with no state is a row of three things that look like they do nothing.
   ------------------------------------------------------------------------- */
.pwd-cs-tab .et_pb_text_inner > a { justify-content: space-between; }
.pwd-cs-tab .pwd-cs-tabicon {
	align-items: center; justify-content: center;
	width: 44px !important; height: 44px !important;
	border-radius: 10px;
	background: #F1F3F7;
	transition: background 0.18s ease;
}
.pwd-cs-tab .pwd-cs-tabicon img { width: 24px !important; height: 24px !important; }
.pwd-cs-tabs > .et_pb_column.pwd-cs-tab--on .pwd-cs-tabicon { background: #EBE3FF; }
/* the words take the space the tile and the mark do not */
.pwd-cs-tab .et_pb_text_inner > a > span:not(.pwd-cs-tabicon):not(.pwd-cs-tabmark) {
	flex: 1 1 auto; min-width: 0;
}
.pwd-cs-tabmark {
	flex: none;
	display: inline-flex; align-items: center; justify-content: center;
	width: 22px; height: 22px;
	margin-left: 4px;
}
.pwd-cs-tabmark svg { display: block; }
/* 135:4734 -- the chosen card carries a filled check; 135:4746 the others a
   chevron. One element, two appearances, so the markup of the three cards is
   identical and which one is on stays a class on the column. */
.pwd-cs-tabs > .et_pb_column.pwd-cs-tab--on .pwd-cs-tabmark {
	border-radius: 50%;
	background: var(--pw-primary, #7A44EC);
}
.pwd-cs-tabs > .et_pb_column.pwd-cs-tab--on .pwd-cs-tabmark .pwd-cs-mark-chev { display: none; }
.pwd-cs-tabs > .et_pb_column:not(.pwd-cs-tab--on) .pwd-cs-tabmark .pwd-cs-mark-check { display: none; }

/* --- the pledge button is 241 wide, not the whole card (135:4767) --------- */
.pwd-cs-pledgebtn.et_pb_button {
	display: inline-flex !important;
	width: auto !important;
	min-width: 0;
	align-self: flex-start;
}

/* --- the "GET INVOLVED" eyebrow (135:4721) ------------------------------- */
.pwd-cs-eyebrow .et_pb_text_inner {
	display: inline-flex; flex-direction: column; gap: 6px;
}
.pwd-cs-eyebrow .pwd-cs-eyerule {
	display: block; width: 24px; height: 2px;
	background: var(--pw-primary, #7A44EC);
}

/* --- the community service hero wave (135:3968) --------------------------
   A flat photograph on white against a frame that runs a pale wave behind it.
   The wave is the section's own background image, so it is a Divi setting and
   the client can change or remove it without touching a file.
   ------------------------------------------------------------------------- */
.pwd-cs-herowave { background-repeat: no-repeat; }

/* ==========================================================================
   7b. THE THREE "GET INVOLVED" PANELS      Figma 135:5431
   --------------------------------------------------------------------------
   The cards above these are tabs, and the component set has one variant per
   tab. Everything a client would want to change -- the heading, the intro, the
   bullet text, the callout wording, the form's fields -- is a Divi module or a
   Forminator field. What is here is the geometry and the two pieces of
   decoration a Text module cannot carry without putting markup in the client's
   way: the check in its circle before a bullet, and the star badge on the
   callout. Both are drawn from a data URI, so a bullet stays a bullet.
   ========================================================================== */

/* 135:5466 -- one bordered box holding a 500 column and a 636 one, 40 apart. */
.pwd-cs-panel.et_pb_row {
	display: flex !important;
	align-items: flex-start;
	gap: 40px;
	background: rgba(255, 255, 255, 0.6) !important;
	border: 1px solid #E4E7EC;
	border-radius: 24px;
}
.pwd-cs-panel > .et_pb_column {
	float: none !important;
	margin: 0 !important;
}
.pwd-cs-panel > .et_pb_column.pwd-cs-panelleft {
	flex: 0 0 500px !important; width: 500px !important; max-width: 500px !important;
}
.pwd-cs-panel > .et_pb_column.pwd-cs-panelform {
	flex: 1 1 636px !important; width: auto !important; max-width: none !important;
}
/* Divi clears a row with ::before and ::after. In a flex row each becomes a
   zero-width flex ITEM that still takes a gap, so the 500 column measures 460
   with every rule in the cascade correct. */
.pwd-cs-panel.et_pb_row::before,
.pwd-cs-panel.et_pb_row::after { display: none !important; }

@media (max-width: 980px) {
	.pwd-cs-panel.et_pb_row { flex-wrap: wrap !important; gap: 32px; }
	.pwd-cs-panel > .et_pb_column.pwd-cs-panelleft,
	.pwd-cs-panel > .et_pb_column.pwd-cs-panelform {
		flex: 1 1 100% !important; width: 100% !important; max-width: 100% !important;
	}
}

/* Which panel is showing. With the script off none of this applies and all
   three are simply visible, each reachable by its tab's own anchor link -- a
   longer page, and a working one. */
.pwd-js .pwd-cs-panel[hidden] { display: none !important; }

.pwd-cs-panelhead h3 { margin: 0 !important; padding: 0 !important; }
.pwd-cs-panelintro p { margin: 0 !important; }

/* 135:5471 -- a 20px circle at 8% of the accent, with a purple check in it.
   Drawn here rather than put in the module, so the client's bullet list is a
   bullet list and nothing else. */
.pwd-cs-bullets ul {
	list-style: none !important;
	margin: 0 !important;
	padding: 0 !important;
}
.pwd-cs-bullets li {
	list-style: none !important;
	position: relative;
	margin: 0 0 14px !important;
	padding: 0 0 0 30px !important;
	font-size: 16px;
	line-height: 1.5;
	color: #595F6B;
}
.pwd-cs-bullets li:last-child { margin-bottom: 0 !important; }
.pwd-cs-bullets li::marker { content: none; }
.pwd-cs-bullets li::before {
	content: "";
	position: absolute; left: 0; top: 2px;
	width: 20px; height: 20px;
	border-radius: 50%;
	background: rgba(122, 68, 236, 0.08)
		url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='8' viewBox='0 0 10 8' fill='none'%3E%3Cpath d='M9 1L3.5 6.5L1 4' stroke='%237A44EC' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")
		center / 10px 8px no-repeat;
}

/* 135:5496 / 135:5577 / the Corporate one -- the designer drew this callout
   three slightly different ways. One shape is used for all three: a 32px star
   badge and the words beside it, which is the most finished of the three and
   the only one that survives a title being absent (the Community panel's is a
   single line). */
/* The badge and the words, with the words STACKED. A flex row put the
   title and the description side by side, because both are direct children
   of the module's inner div and there is no wrapper around them -- and there
   deliberately is not one, so that editing the callout in Divi is editing two
   lines of text. A two-column grid says the same thing without needing one. */
.pwd-cs-callout .et_pb_text_inner {
	display: grid;
	grid-template-columns: 32px 1fr;
	column-gap: 14px; row-gap: 2px;
	align-items: start;
	padding: 18px 20px;
	border-radius: 14px;
	background: #F7F4FE;
}
.pwd-cs-callout strong,
.pwd-cs-callout span { grid-column: 2; }
.pwd-cs-callout .et_pb_text_inner::before {
	content: "";
	grid-row: 1 / -1;
	flex: none;
	width: 32px; height: 32px;
	border-radius: 8px;
	background: rgba(122, 68, 236, 0.08)
		url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none'%3E%3Cpath d='M12 2.5l2.8 6.1 6.7.7-5 4.6 1.4 6.6L12 17.2 6.1 20.5l1.4-6.6-5-4.6 6.7-.7z' stroke='%237A44EC' stroke-width='2' stroke-linejoin='round'/%3E%3C/svg%3E")
		center / 16px 16px no-repeat;
}
.pwd-cs-callout strong {
	display: block;
	font-size: 14px; font-weight: 700; line-height: 1.5; color: #181628;
}
.pwd-cs-callout span {
	display: block;
	font-size: 14px; font-weight: 400; line-height: 1.5; color: #595F6B;
}

/* --- the form inside a panel, to 430:562/563 -----------------------------
   Forminator's own theme is not this design's. Only the shapes the frame
   states are set: a 14px SemiBold label above a 40px field with an 8px radius
   and a #D8DCE6 hairline, and the design's own gradient pill for submit.
   ------------------------------------------------------------------------- */
.pwd-cs-panelform .forminator-ui.forminator-custom-form { margin: 0 !important; }
.pwd-cs-panelform .forminator-row { margin-bottom: 16px !important; }
.pwd-cs-panelform .forminator-row:last-of-type { margin-bottom: 0 !important; }
.pwd-cs-panelform .forminator-label {
	margin-bottom: 6px !important;
	font-family: "Plus Jakarta Sans", system-ui, sans-serif !important;
	font-size: 14px !important; font-weight: 600 !important; line-height: 1.5 !important;
	color: #181628 !important;
	text-transform: none !important; letter-spacing: 0 !important;
}
.pwd-cs-panelform .forminator-required { color: #EF4444 !important; }
.pwd-cs-panelform input.forminator-input,
.pwd-cs-panelform select.forminator-select2,
.pwd-cs-panelform .forminator-select .select2-selection,
.pwd-cs-panelform textarea.forminator-textarea {
	min-height: 40px !important; height: 40px !important;
	padding: 0 14px !important;
	border: 1px solid #D8DCE6 !important;
	border-radius: 8px !important;
	background: #FFFFFF !important;
	font-family: "Plus Jakarta Sans", system-ui, sans-serif !important;
	font-size: 14px !important; font-weight: 400 !important; color: #181628 !important;
}
.pwd-cs-panelform textarea.forminator-textarea {
	height: 96px !important; padding: 10px 14px !important; line-height: 1.5 !important;
}
.pwd-cs-panelform input.forminator-input::placeholder,
.pwd-cs-panelform textarea.forminator-textarea::placeholder { color: #9498A1 !important; }
.pwd-cs-panelform input.forminator-input:focus,
.pwd-cs-panelform textarea.forminator-textarea:focus {
	border: 1.5px solid var(--pw-primary, #7A44EC) !important;
	box-shadow: none !important;
}
/* 135:5513 -- the submit is the design's own XL pill, not Forminator's. */
.pwd-cs-panelform button.forminator-button-submit {
	display: flex !important; align-items: center; justify-content: center;
	width: 100% !important; height: 52px !important;
	margin-top: 4px !important;
	padding: 0 24px !important;
	border: 0 !important;
	border-top: 1px solid rgba(255, 255, 255, 0.2) !important;
	border-radius: 100px !important;
	background-image: var(--pw-gradient) !important;
	background-color: var(--pw-primary, #7A44EC) !important;
	font-family: "Plus Jakarta Sans", system-ui, sans-serif !important;
	font-size: 18px !important; font-weight: 500 !important; color: #FFFFFF !important;
}
/* 135:5514 -- the privacy line under it. Printed here rather than added to
   every form, because it is the same sentence on all three and it is not a
   field anybody should be able to delete by accident. */
.pwd-cs-panelform .forminator-ui.forminator-custom-form::after {
	content: "We respect your privacy. Your information will only be used to respond to your inquiry.";
	display: block;
	margin-top: 16px;
	font-size: 12px; font-weight: 500; line-height: 1.5; color: #666B75;
	text-align: center;
}
.pwd-cs-panelform .forminator-row .forminator-field-name { margin-bottom: 0 !important; }
.pwd-cs-panelform .forminator-row .forminator-col { margin-bottom: 0 !important; }

/* =========================================================================
   The two Patient Stories screens, checked element by element against
   Figma 115:2491 (hub) and 115:1610 (single story) on 2026-09-02.
   Everything below carries the node it was read from. Appended rather than
   merged into the blocks above, because two sessions edit this file.
   ========================================================================= */

/* ---- 115:3146  the hub's title stack is 8 apart, not 0 ------------------ */
.pwd-sh-title .pwd-sh-lead { margin-bottom: 8px; }
/* 115:3148 Accent/italic/2 is -2 at 48px in Figma's own units, which is
   -0.96px once it is a real font. -2px closed the word spacing visibly. */
.pwd-sh-title .pwd-sh-serif { letter-spacing: -0.96px; }

/* ---- 115:3803 / 115:3807  the controls ---------------------------------- */
/* The frame's placeholder is 13px Regular in Grey 2 and its magnifier is 14,
   against the cms plugin's own 15/18. Neither is wrong there; both are wrong
   here, and a placement is allowed to say so. */
.pwd-sh-controls .cms-filters__search input[type="search"],
.pwd-sh-controls .cms-filters__search input[type="text"] { font-size: 13px; }
.pwd-sh-controls .cms-filters__search input::placeholder { font-size: 13px; color: var(--pw-grey-2); }
.pwd-sh-controls .cms-filters__icon { width: 14px; height: 14px; }
/* 115:3808 -- "Sort by" is a label beside the control, not above it. */
.pwd-sh-controls .cms-filters__field { flex-direction: row; align-items: center; gap: 8px; }
.pwd-sh-controls .cms-filters__field > label {
	font-family: "Plus Jakarta Sans", sans-serif;
	font-size: 13px; font-weight: 400; line-height: normal;
	color: var(--pw-grey-2); margin: 0; white-space: nowrap;
}
.pwd-sh-controls .pwd-select__btn,
.pwd-sh-controls .cms-filters__field select {
	font-family: "Plus Jakarta Sans", sans-serif;
	font-size: 13px; font-weight: 600; color: var(--pw-dark);
	height: 40px; border-radius: 20px;
}

/* ---- 115:3815  the sidebar's rows are 12 apart (0, 58, 116 at 46 tall) -- */
.pwd-side__list { gap: 12px; }

/* ---- 115:3887  the card clips its own corners, so the photo has none ---- */
/* It was 8, which draws the card's white through each top corner. */
.pwd-sh-grid .cms-card img,
.pwd-ss-relrow .cms-card img { border-radius: 0 !important; }

/* ---- 115:3940  the featured story --------------------------------------- */
/* The frame's fill is the glass wash every other panel on this site uses,
   left to right, not a vertical lavender. */
.pwd-fs-card {
	background: linear-gradient(90deg, rgba(245,243,255,0.7) 0%, rgba(255,255,255,0.7) 55%, rgba(245,243,255,0.7) 100%);
}
/* 115:3945 is 222 tall and 115:3948 is justify-between inside it, so the
   button's bottom edge is the photograph's bottom edge. It was sitting 26
   below, because the grid was centred and every row took its own height. */
.pwd-fs-card .et_pb_column {
	align-items: start;
	align-content: start;
	grid-template-rows: auto auto auto 1fr;
	row-gap: 12px;
	min-height: 222px;
}
.pwd-fs-card > .et_pb_column { min-height: 0; }
.pwd-fs-photo { grid-row: 1 / -1; align-self: stretch; }
.pwd-fs-photo img {
	height: 100% !important; min-height: 222px;
	border-radius: var(--pw-radius) !important;
}
.pwd-fs-card .et_pb_button_module_wrapper {
	grid-row: 4; align-self: end; margin-top: 12px !important;
}
.et_pb_button.pwd-fs-btn { border-color: var(--pw-lav-200) !important; }

/* ---- 115:3936  Load More is centred on the 1240, not on the grid -------- */
.pwd-sh-morerow .pwd-more { display: flex; justify-content: center; }
.pwd-sh-morerow .pwd-btn { border-color: var(--pw-lav-200); }


/* =========================================================================
   The single story  115:1610
   ========================================================================= */

/* 115:1612 -- the photograph is the height of the text beside it (379), not
   its own natural height. A Divi Image has no height, so it drew 460 and the
   hero was 81 taller than the frame. */
.pwd-ss-herorow { align-items: stretch !important; }
.pwd-ss-heropic.et_pb_column { display: flex; }
.pwd-ss-photo, .pwd-ss-photo .et_pb_image_wrap { height: 100%; width: 100%; }
.pwd-ss-photo img {
	width: 100% !important; height: 100% !important; min-height: 379px;
	object-fit: cover; display: block;
	/* 115:1626 -- a 1px Lavender/200 edge, and the two 160 corners. */
	border: 1px solid var(--pw-lav-200);
	border-radius: 160px 0 160px 0 !important;
}
/* 115:1616 -- the title stack is 8 apart and the subtitle leads at 1.3. */
.pwd-ss-title h1 { letter-spacing: -0.96px; }
.pwd-ss-sub h2 { line-height: 1.3em !important; }
/* 115:1621 -- name 18 Bold over role 14 Medium, 6 apart. */
.pwd-ss-by .pwd-ss-name { margin-bottom: 6px; }

/* ---- 115:1628  the meta band ------------------------------------------- */
.pwd-ss-metaband {
	background: var(--pw-white) !important;
	border-bottom: 1px solid var(--pw-stroke);
	box-shadow: 0 2px 5px rgba(107, 51, 235, 0.15);
}
.pwd-ss-meta .et_pb_text_inner { min-height: 30px; }
/* 115:1630 -- the pill is 4/8, not 6/16, and Medium, not SemiBold. */
.pwd-ss-meta .pwd-ss-cond { padding: 4px 8px !important; font-weight: 500 !important; }
/* 115:1632 / 115:1636 -- read time and Share sit together after the pill.
   Share was pushed to the far right by a margin-left:auto, 680px from where
   the frame puts it. */
.pwd-ss-meta .pwd-ss-time { padding-left: 24px; padding-right: 12px; }
.pwd-ss-meta .pwd-ss-share {
	margin-left: 0 !important;
	padding: 0 12px; border-radius: 8px;
	font-size: 13px; font-weight: 600;
}

/* ---- the article  115:1642 --------------------------------------------- */
/* 18px at 1.5 -- four lines of 27 in a 108-tall block, not 1.7. */
.pwd-ss-prose .et_pb_text_inner { line-height: 1.5; }
.pwd-ss-prose p { margin: 0 0 16px !important; }
.pwd-ss-prose h2, .pwd-ss-prose h3 {
	font-family: "Plus Jakarta Sans", sans-serif;
	font-size: 24px; font-weight: 700; line-height: 1.4;
	color: var(--pw-dark);
	margin: 40px 0 16px !important; padding: 0 !important;
}
.pwd-ss-prose > .et_pb_text_inner > *:first-child { margin-top: 0 !important; }
/* 115:1649 -- a paragraph that really is a quotation gets the frame's own
   rule down its left edge. Nothing is written; only what the client marked
   up as a quotation is treated as one. */
.pwd-ss-prose blockquote {
	border: 0; border-left: 4px solid var(--pw-primary) !important;
	background: none !important;
	margin: 40px 0 !important; padding: 12px 16px 12px 24px !important;
	font-family: Spectral, Georgia, serif !important;
	font-style: italic; font-weight: 600;
	font-size: 24px; line-height: 1.2; letter-spacing: -0.48px;
	color: var(--pw-dark);
}
.pwd-ss-prose blockquote p {
	margin: 0 !important; font: inherit !important; color: inherit !important;
}

/* ---- the aside  115:1666 ------------------------------------------------ */
/* 40 between the two cards, not 24. */
.pwd-ss-quote { margin-bottom: 40px !important; }
/* 115:1667 -- radius 24, padding 32, a Lavender/100 edge and the glass wash. */
.pwd-ss-quote {
	background: linear-gradient(90deg, rgba(245,243,255,0.7) 0%, rgba(255,255,255,0.7) 55%, rgba(245,243,255,0.7) 100%) !important;
	border: 1px solid var(--pw-lav-100) !important;
	border-radius: var(--pw-radius-lg) !important;
	padding: 32px !important;
}
/* 115:1671 -- Accent/5, 24 at 1.4. It was rendering at 20/1.4. */
.pwd-ss-quote .pwd-ss-qtext { font-size: 24px !important; line-height: 1.4 !important; }
/* 115:1674 -- the frame attributes the quote; nothing did. */
.pwd-ss-quote .pwd-ss-qby {
	display: block; margin-top: 12px;
	font-family: "Plus Jakarta Sans", sans-serif;
	font-size: 14px; font-weight: 400; line-height: normal;
	color: var(--pw-grey-2);
}

/* 115:1676 -- the header is a ROW: the portrait beside the name, not above
   it. Stacked, the card ran 80px taller than the frame and read as two
   separate blocks. */
.pwd-ss-about .pwd-ss-abouthead {
	display: flex; align-items: center; gap: 12px; margin-bottom: 16px;
}
.pwd-ss-aboutpic { display: block; margin: 0 !important; flex: none; }
.pwd-ss-aboutpic img {
	width: 64px; height: 64px; border-radius: 64px; object-fit: cover;
	border: 0.8px solid var(--pw-stroke); display: block;
}
.pwd-ss-aboutwho { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.pwd-ss-aboutname {
	display: block; font-size: 16px; font-weight: 700; line-height: normal;
	color: var(--pw-dark);
}
/* 115:1681 -- the frame carries a short role here. The bio underneath opens
   with the same words when {pw_person_role} reads a whole first sentence, so
   this line takes the SHORT form only. */
.pwd-ss-aboutrole {
	display: block; font-size: 12px; font-weight: 600; line-height: normal;
	color: var(--pw-primary);
}
/* 115:1682 -- 16 at 24, not 14 at 1.6. */
.pwd-ss-aboutbio { font-size: 16px !important; line-height: 24px !important; }
.pwd-ss-aboutbio p { margin: 0 0 12px !important; }
/* 115:1683 -- a rule above the link, and the link is the patient's own
   profile, not a second way back to the page you are already on. */
.pwd-ss-aboutlink {
	display: block; margin: 4px 0 0 !important;
	padding-top: 12px; border-top: 1px solid var(--pw-stroke);
}
.pwd-ss-aboutlink a {
	display: inline-flex; align-items: center; gap: 10px;
	font-size: 14px; font-weight: 500; line-height: 1.5;
	color: var(--pw-primary); text-decoration: none;
}
.pwd-ss-aboutlink svg { width: 15px; height: 15px; }
.pwd-ss-aboutlink a:hover { text-decoration: underline; }


/* =========================================================================
   PW Related Carousel  115:1689
   The band the story page was missing entirely: it carried a three-across
   grid of the hub's small cards under the frame's heading, which is a
   different component wearing the same words.
   ========================================================================= */
.pwd-rel { display: flex; flex-direction: column; gap: 32px; width: 100%; }
.pwd-rel__head { display: flex; flex-direction: column; gap: 12px; }
.pwd-rel__h {
	margin: 0 !important; padding: 0 !important;
	font-family: "Plus Jakarta Sans", sans-serif;
	font-size: 40px; font-weight: 700; line-height: 1.2;
	color: var(--pw-dark); text-transform: capitalize;
}
.pwd-rel__sub {
	margin: 0 !important; padding: 0 !important;
	font-family: "Plus Jakarta Sans", sans-serif;
	font-size: 18px; font-weight: 500; line-height: 1.5;
	color: var(--pw-grey-1);
}

/* 115:1695 -- four tabs on a hairline, the current one underlined in the
   brand colour. They are <button>s inside one tablist, so the keyboard gets
   them for free and nothing needs a URL of its own. */
.pwd-rel__tabs {
	display: flex; flex-wrap: wrap;
	border-bottom: 1px solid var(--pw-stroke);
}
.pwd-rel__tab {
	display: inline-flex; align-items: center; gap: 8px;
	padding: 12px 24px; margin: 0; background: none;
	border: 0; border-bottom: 2px solid transparent;
	font-family: "Plus Jakarta Sans", sans-serif;
	font-size: 16px; font-weight: 500; line-height: 1.5;
	color: var(--pw-grey-1); cursor: pointer;
	transition: color 0.14s ease, border-color 0.14s ease;
}
.pwd-rel__tab svg { width: 16px; height: 16px; flex: none; }
.pwd-rel__tab:hover { color: var(--pw-primary); }
.pwd-rel__tab.is-on { color: var(--pw-primary); font-weight: 700; border-bottom-color: var(--pw-primary); }
.pwd-rel__tab:focus-visible { outline: 2px solid var(--pw-primary); outline-offset: -2px; }

.pwd-rel__panel { display: flex; flex-direction: column; gap: 24px; }
.pwd-rel__panel[hidden] { display: none; }
.pwd-rel__row { display: flex; align-items: center; gap: 24px; }

/* The viewport scrolls; the chevron is beside it, not over it. 1240 = 571 +
   24 + 571 + 24 + 50 (115:5210 and 115:5233). */
.pwd-rel__viewport {
	flex: 1 1 auto; min-width: 0;
	overflow-x: auto; overflow-y: hidden;
	scroll-snap-type: x mandatory; scroll-behavior: smooth;
	scrollbar-width: none; -ms-overflow-style: none;
}
.pwd-rel__viewport::-webkit-scrollbar { display: none; }
.pwd-rel__viewport .cms-list {
	display: flex !important; grid-template-columns: none !important;
	gap: var(--pwd-gap, 24px) !important;
	margin: 0 !important; align-items: stretch;
}
.pwd-rel__viewport .cms-card {
	flex: 0 0 calc((100% - (var(--pwd-rel-vis, 2) - 1) * var(--pwd-gap, 24px)) / var(--pwd-rel-vis, 2));
	scroll-snap-align: start;
	background: var(--pw-white);
	border: 1px solid var(--pw-stroke);
	border-radius: var(--pw-radius-lg);
	overflow: hidden;
	display: flex; flex-direction: column;
	min-height: var(--pwd-card-min, 563px);
	box-shadow: 0 8px 24px -4px rgba(107, 51, 235, 0.06);
	transition: box-shadow 0.16s ease, transform 0.16s ease;
}
.pwd-rel__viewport .cms-card:hover { transform: translateY(-2px); }
/* Divi's own script wraps every rendered layout in #et-boc > .et-l AFTER the
   page loads, so a rule written against the response stops matching once the
   page has finished loading. Every wrapper in the chain has to carry the
   column through, or the card's own parts cannot fill it. */
.pwd-rel__viewport .cms-card > div,
.pwd-rel__viewport .cms-card .et-l,
.pwd-rel__viewport .cms-card .et_pb_section,
.pwd-rel__viewport .cms-card .et_pb_row,
.pwd-rel__viewport .cms-card .et_pb_column {
	display: flex !important; flex-direction: column;
	flex: 1 1 auto; min-height: 0;
	width: 100% !important; max-width: 100% !important;
	margin: 0 !important; padding: 0 !important;
	background: none !important; border: 0 !important;
}

/* 115:5233 -- one chevron, on the right. */
.pwd-rel__nav {
	flex: none; width: 50px; height: 50px; padding: 0;
	display: flex; align-items: center; justify-content: center;
	background: var(--pw-lav-50);
	border: 1px solid var(--pw-lav-200); border-radius: 25px;
	color: var(--pw-primary); cursor: pointer;
	transition: background 0.14s ease, opacity 0.14s ease;
}
.pwd-rel__nav svg { width: 20px; height: 20px; }
.pwd-rel__nav:hover { background: var(--pw-lav-200); }
.pwd-rel__nav[disabled] { opacity: 0.4; cursor: default; }

/* 115:5234 -- one dot per card, the leftmost visible one lit. */
.pwd-rel__dots { display: flex; gap: 10px; align-items: center; justify-content: center; }
.pwd-rel__dot {
	width: 10px; height: 10px; padding: 0; border: 0; border-radius: 10px;
	background: rgba(217, 209, 237, 0.5); cursor: pointer;
}
.pwd-rel__dot.is-on { background: #7A57E5; }

/* 115:5241 */
.pwd-rel__cta {
	align-self: center;
	display: inline-flex; align-items: center; justify-content: center; gap: 8px;
	height: 36px; min-width: 112px; padding: 0 16px;
	border: 1px solid var(--pw-lav-200); border-radius: 100px;
	font-family: "Plus Jakarta Sans", sans-serif;
	font-size: 14px; font-weight: 700; line-height: normal;
	color: var(--pw-primary); text-decoration: none;
	transition: background 0.14s ease;
}
.pwd-rel__cta svg { width: 14px; height: 14px; }
.pwd-rel__cta:hover { background: var(--pw-lav-50); color: var(--pw-primary); }

/* The band itself: white with a hairline over it, 60 top and bottom. */
.pwd-ss-relband { border-top: 1px solid var(--pw-stroke); }

/* ---- the related card's own parts, which a Divi module cannot pin ------- */
.pwd-rc-photo { margin: 0 !important; flex: none; }
.pwd-rc-photo .et_pb_image_wrap { display: block; }
.pwd-rc-photo img {
	width: 100% !important; height: var(--pwd-photo-h, 320px) !important;
	object-fit: cover; object-position: center 35%;
	border-radius: 0 !important; display: block;
}
/* There is no "body" element to pad: a Divi Library layout's modules are the
   direct children of its column, so the 28 of the frame's CardBody is each
   module's own margin -- which is also what keeps it editable in the builder.
   The bottom padding is the button's. */
.pwd-rc-badge p { margin: 0 !important; padding: 0 !important; }
.pwd-rc-badge .et_pb_text_inner > span,
.pwd-rc-badge .pwd-rc-tag {
	display: inline-flex; align-items: center;
	padding: 4px 10px; border-radius: 100px;
	background: var(--pw-lav-50);
	font-size: 14px; font-weight: 500; line-height: 1.5;
	color: var(--pw-primary);
}
.pwd-rc-title, .pwd-rc-title p, .pwd-rc-title a {
	font-family: Spectral, Georgia, serif !important;
	font-size: 24px !important; font-weight: 700 !important;
	line-height: 1.2 !important; letter-spacing: -0.48px;
	color: var(--pw-dark) !important; text-decoration: none;
}
.pwd-rc-title p { margin: 0 !important; padding: 0 !important; }
.pwd-rc-sum, .pwd-rc-sum p {
	font-size: 16px !important; font-weight: 500 !important;
	line-height: 1.5 !important; color: var(--pw-grey-1) !important;
}
.pwd-rc-sum p { margin: 0 !important; padding: 0 !important; }
.pwd-rc-sum .et_pb_text_inner {
	display: -webkit-box; -webkit-box-orient: vertical;
	-webkit-line-clamp: var(--pwd-lines, 2); overflow: hidden;
}
/* An auto margin only works on a flex item, and Divi wraps a button in a
   block of its own -- so it goes on the WRAPPER, not on the anchor. */
.pwd-rel__viewport .cms-card .et_pb_button_module_wrapper { margin-top: auto !important; }
.et_pb_button.pwd-rc-link {
	display: inline-flex !important; align-items: center; gap: 8px;
	padding: 8px 0 !important; border: 0 !important; background: none !important;
	font-family: "Plus Jakarta Sans", sans-serif !important;
	font-size: 16px !important; font-weight: 700 !important;
	line-height: normal !important; color: var(--pw-primary) !important;
	text-transform: capitalize;
}
.et_pb_button.pwd-rc-link::after {
	position: static !important; opacity: 1 !important; margin: 0 !important;
	line-height: inherit;
}
.et_pb_button.pwd-rc-link:hover { gap: 12px; background: none !important; }

@media (max-width: 980px) {
	.pwd-rel__viewport .cms-card { flex-basis: 86%; }
	.pwd-rel__nav { display: none; }
	.pwd-rel__tab { padding: 12px 16px; font-size: 14px; }
}

/* ---- the second pass, measured in the browser after the first went up ---- */

/* 115:1612 -- the hero row is display:block, so its columns FLOAT: an
   align-items on it reached nothing, the photograph kept its natural 865 and
   the section collapsed under it. Flexed, the columns are the same height by
   construction and the photograph fills 379 like the frame. */
.pwd-ss-herorow {
	display: flex !important;
	align-items: stretch !important;
	flex-wrap: nowrap;
}
.pwd-ss-heroleft.et_pb_column,
.pwd-ss-heropic.et_pb_column { float: none !important; }
.pwd-ss-photo, .pwd-ss-photo .et_pb_image_wrap, .pwd-ss-photo a { display: block; height: 100%; }
.pwd-ss-photo img { min-height: 331px; }

/* 115:1630 -- the pill is 29 tall: 14px at 1.5 plus 4 and 4. The text module
   leads at 1.7, which made it 32 and pushed the whole band 3 taller. */
.pwd-ss-meta .et_pb_text_inner { line-height: 1.5; }
/* 115:1634 -- the book icon sits on a pale rounded tile, not bare on the line. */
.pwd-ss-meta .pwd-ss-time .pwd-i,
.pwd-ss-meta .pwd-ss-time > span:first-child {
	display: inline-flex; align-items: center; justify-content: center;
	width: 31.5px; height: 30px; margin-right: 6px;
	background: #F7F5FA; border-radius: 10px;
}

/* The band is a section with a class, and the Related module's own wrapper was
   picking up a card's radius and fill from a rule further up the file. */
.pwd-rel { background: none !important; border-radius: 0 !important; box-shadow: none !important; }

/* 115:1696 -- a tab is 48 including its 2px underline, not 50. */
.pwd-rel__tab { padding: 12px 24px 10px; }

/* 115:5212 -- Divi wraps a linked image in an inline <a>, whose LINE BOX added
   59px under a 320 photograph and made every card 626 instead of 567. There is
   nothing to see and no error; the card is simply taller than the frame. */
.pwd-rc-photo a,
.pwd-rc-photo .et_pb_image_wrap,
.pwd-rc-photo span { display: block; line-height: 0; font-size: 0; }
.pwd-rc-photo .et_pb_image_wrap::after { content: none; }
/* 115:5217 -- two lines, so the button lands at the same height in both cards. */
.pwd-rc-title .et_pb_text_inner {
	display: -webkit-box; -webkit-box-orient: vertical;
	-webkit-line-clamp: 2; overflow: hidden;
}

/* ---- the third pass: three things measured in the rendered DOM ---------- */

/* 115:1626 -- Divi gives the image's <a> and its .et_pb_image_wrap an explicit
   height taken from the file's own proportions (378.656px here), so cropping
   the <img> alone leaves the wrapper at the photograph's natural height and
   the column, the row and the section all follow it. The hero column was 865
   tall against the frame's 379 with every rule in the cascade applying.
   Taking the photograph out of the flow is what makes the row's height the
   TEXT's, which is what the frame does. */
.pwd-ss-heropic.et_pb_column { position: relative; overflow: hidden; }
.pwd-ss-photo { position: absolute !important; inset: 0; margin: 0 !important; }
.pwd-ss-photo a,
.pwd-ss-photo .et_pb_image_wrap { display: block; height: 100% !important; }
.pwd-ss-photo img {
	width: 100% !important; height: 100% !important;
	min-height: 0 !important; object-fit: cover;
}

/* 115:1629 -- the row is already a flex container with a 24 gap of its own, so
   the 24 the frame puts before the read time was being applied twice and Share
   landed 30px right of the frame. The paddings are the frame's; the gap is not. */
.pwd-ss-meta .et_pb_text_inner { gap: 0 !important; }
.pwd-ss-metarow.et_pb_row { padding: 16px 0 !important; }
/* 115:1634 -- the class is pwd-inline-icon, not pwd-i, so the tile never
   applied. 31.5 x 30 on Lavender/Secondary/10, radius 10. */
.pwd-ss-meta .pwd-ss-time .pwd-inline-icon {
	width: 31.5px !important; height: 30px !important; margin-right: 6px;
	background: #F7F5FA; border-radius: 10px; flex: none;
}
.pwd-ss-meta .pwd-ss-time .pwd-inline-icon svg { width: 16px; height: 16px; }

/* 115:5212 -- the same wrapper height, on the related card: 568 x 378.656
   where the frame says 320, which made every card 616 instead of 563. */
.pwd-rc-photo a,
.pwd-rc-photo .et_pb_image_wrap {
	height: var(--pwd-photo-h, 320px) !important;
	overflow: hidden;
}

/* 115:1629 -- the band was 97 where the frame says 62: the row carries the
   frame's 16 and the text module's own inner carried another 16 from the
   first build. One of the two is the padding; the other is a duplicate. */
.pwd-ss-meta .et_pb_text_inner { padding: 0 !important; }

/* ---- the hub, fourth pass ----------------------------------------------- */

/* 115:3948 -- the right half of the featured card is 222 tall: icon 24, 12,
   quote 68, 12, author 38, then the button on the bottom edge. Every gap was
   being applied twice -- once as the module's own margin and once as the
   grid's row-gap -- so the column ran 275 and the card 392 against 337. */
.pwd-fs-card .et_pb_column { row-gap: 0 !important; }
.pwd-fs-mark  { margin-bottom: 12px !important; }
.pwd-fs-quote { margin-bottom: 12px !important; }
.pwd-fs-by    { margin-bottom: 0 !important; }
.pwd-fs-card .et_pb_button_module_wrapper {
	margin-top: 24px !important; margin-bottom: 0 !important;
}
/* 115:3955 / 115:3956 -- the frame leads both of these at "normal", so the
   author block is 38 tall and not 44. */
.pwd-fs-name, .pwd-fs-role { line-height: normal; }
.pwd-fs-role { font-size: 14px; color: var(--pw-grey-2); }

/* 115:3936 -- 32 under the grid, which is what the frame leaves between the
   workspace and the button. The row brought a second margin of its own. */
.pwd-sh-workspace.et_pb_row { margin-bottom: 0 !important; padding-bottom: 0 !important; }
.pwd-sh-morerow.et_pb_row { margin-top: 32px !important; padding: 0 !important; }

/* ---- the hub, fifth pass ------------------------------------------------ */

/* 115:3936 -- 32 between the grid and the button, and no more. The listing
   carries a 24 bottom margin so it clears whatever follows it, and the Load
   More module carries a 40 top margin for the same reason: together they put
   the button 96 under a grid the frame puts it 32 under. Here the row's own
   margin says it, so neither is needed. */
.pwd-sh-grid .cms-list,
.pwd-sh-grid .pwd-gridwrap { margin-bottom: 0 !important; }
.pwd-sh-morerow .pwd-more { margin-top: 0 !important; }

/* 115:3946 -- the same wrapper height as the hero and the related card: the
   <a> and .et_pb_image_wrap keep the file's own 249 while the <img> inside is
   cropped to 222, so the photograph set the height of the whole card. */
.pwd-fs-photo a,
.pwd-fs-photo .et_pb_image_wrap {
	display: block; height: 100% !important;
	border-radius: var(--pw-radius) !important; overflow: hidden;
	background: none !important;
}

/* 115:3946 -- the photograph is a fixed 222, not "as tall as the row": with
   height:100% against a row whose height it was itself setting, it kept the
   file's own 249 and pushed the button 26 below the frame's line. Stating the
   number breaks the circle, and the right-hand column adds up to exactly 222
   (24 + 12 + 68 + 12 + 38 + 24 + 44) once it does. */
.pwd-fs-photo,
.pwd-fs-photo a,
.pwd-fs-photo .et_pb_image_wrap,
.pwd-fs-photo img {
	height: var(--pwd-fs-photo-h, 222px) !important;
	min-height: 0 !important;
}
.pwd-fs-photo { align-self: start; }

/* 115:3957 -- 24 above the button, once. The card layout's own module already
   carries that 24, so the one added here on top of it made 48 and the card
   363 against the frame's 337. */
.pwd-fs-card .et_pb_button_module_wrapper { margin-top: 0 !important; }

/* 115:3890 / 115:3891 -- the grid card's tag is Text/14/Medium on 4/8, and it
   was rendering 12px SemiBold on 4/12. A pill one size down reads as a
   different component from the identical pill on the related card. */
.pwd-sh-grid .pwd-st-tag span,
.pwd-sh-grid .pwd-st-tag a {
	padding: 4px 8px;
	font-size: 14px; font-weight: 500; line-height: 1.5;
}

/* ---- three the QA found -------------------------------------------------- */

/* 115:1631 -- the whole pill is Lavender/600. Only the reference field's own
   anchor was purple; the "Condition: " in front of it inherited the meta
   row's grey, so the pill read as two colours. */
.pwd-ss-meta .pwd-ss-cond,
.pwd-ss-meta .pwd-ss-cond a { color: var(--pw-primary) !important; }

/* 115:1666 -- 40 between the quote card and the About card. A margin cannot
   say it: Divi writes each module's own margin into the page's stylesheet
   after this file and with !important, so it always wins. A GAP on the column
   is a property Divi never writes for a column, which is why it holds. */
.pwd-ss-aside.et_pb_column {
	display: flex !important; flex-direction: column; gap: 40px;
}
.pwd-ss-aside.et_pb_column > * { margin-bottom: 0 !important; }

/* 115:5211 -- the card is 563, full stop. A min-height lets the longer of two
   titles set its own height, and two cards side by side at different heights
   is the one thing a carousel must never do. The title and the summary are
   both clamped, so nothing is lost to the crop. */
.pwd-rel__viewport .cms-card { height: var(--pwd-card-min, 563px); }

/* ---- what the sweep over other stories found ---------------------------- */

/* 115:1693 -- Divi writes its own h2 rules for the body layout and they land
   after this file, so the heading came out SemiBold on some stories and Bold
   on others. One weight, stated. */
.pwd-rel__h { font-weight: 700 !important; }

/* I115:5241 -- a module's text colour does not colour its anchors: the CTA
   picked up the client's own Divi accent (#6a2b7f) instead of Lavender/600.
   The same trap as the story's back link. */
.pwd-rel__cta,
.pwd-rel__cta:hover,
.pwd-rel__cta:visited { color: var(--pw-primary) !important; }

/* =========================================================================
   Below 1440 -- which is every screen the Figma does not draw.
   The file has no mobile or tablet frames at all, so everything here is a
   reduction somebody decided rather than a design that was drawn. What it
   must not do is push the page sideways: a horizontal scrollbar on a phone
   is the most visible defect a layout can have and neither screen's checks
   could see it, because both were only ever measured at 1440.
   ========================================================================= */

/* The hub's hero photograph is a deliberate bleed -- 778 wide starting at
   x=659, so it runs to 1437 of the frame's 1440. On any narrower screen that
   is 1437 of less, and the page grew a scrollbar. The section clips it. */
.et_pb_section:has(> .et_pb_row > .et_pb_column > .pwd-sh-herorow),
.et_pb_section:has(.pwd-sh-herorow),
.et_pb_section:has(.pwd-ss-herorow) { overflow-x: clip; }

@media (max-width: 1439px) {
	/* Both screens are laid out on a 1240 column inside 100px margins. Under
	   1440 the margins are what gives first. */
	.pwd-sh-herorow, .pwd-ss-herorow,
	.pwd-sh-controlrow, .pwd-sh-workspace, .pwd-sh-morerow,
	.pwd-fs-card, .pwd-ss-bodyrow, .pwd-ss-relrow {
		max-width: calc(100vw - 48px) !important;
	}
	.pwd-sh-grid.et_pb_column { width: auto !important; flex: 1 1 auto !important; min-width: 0; }
	.pwd-ss-main.et_pb_column { width: auto !important; flex: 1 1 auto !important; min-width: 0; }
}

@media (max-width: 1279px) {
	/* Two fixed columns that add up to 1240 cannot sit side by side in less
	   than 1240. They stack, in the order the frame reads them. */
	.pwd-ss-herorow { flex-wrap: wrap; }
	.pwd-ss-heroleft.et_pb_column,
	.pwd-ss-heropic.et_pb_column {
		width: 100% !important; flex: 1 1 100% !important; margin-right: 0 !important;
	}
	.pwd-ss-heropic.et_pb_column { min-height: 320px; margin-top: 32px !important; }
	.pwd-ss-photo img { min-height: 320px; }

	.pwd-ss-bodyrow { flex-wrap: wrap; gap: 40px; }
	.pwd-ss-main.et_pb_column,
	.pwd-ss-aside.et_pb_column { width: 100% !important; flex: 1 1 100% !important; }

	.pwd-sh-workspace { flex-wrap: wrap; }
	.pwd-sh-side.et_pb_column,
	.pwd-sh-grid.et_pb_column { width: 100% !important; flex: 1 1 100% !important; }
	/* The 908 is the height of the two rows of cards BESIDE it. Stacked there
	   is nothing beside it, so a fixed height would be an arbitrary hole. */
	.pwd-side { height: auto; max-height: 420px; }
}

@media (max-width: 900px) {
	/* 115:3802 puts the search and the sort on one line beside a 32px
	   heading. At 480 that line alone was 494 wide. */
	.pwd-sh-controlrow .et_pb_column { flex-wrap: wrap; row-gap: 16px; }
	.pwd-sh-controls,
	.pwd-sh-controls .cms-filters,
	.pwd-sh-controls .cms-filters__form { width: 100%; min-width: 0; }
	.pwd-sh-controls .cms-filters__controls { flex-wrap: wrap; row-gap: 12px; }
	.pwd-sh-controls .cms-filters__search { width: 100% !important; max-width: 100% !important; }
	.pwd-sh-controls .cms-filters__field { flex: 1 1 auto; min-width: 0; }
	.pwd-sh-controls .pwd-select,
	.pwd-sh-controls .pwd-select__btn { max-width: 100%; min-width: 0; }
	.pwd-sh-h2 h2 { font-size: 28px; }
	.pwd-sh-title h1, .pwd-ss-title h1 { font-size: 36px; }
	.pwd-ss-sub h2 { font-size: 24px; }
	.pwd-rel__h { font-size: 30px; }
	/* A row of pills that cannot fit scrolls rather than pushing the page. */
	.pwd-rel__tabs { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; }
	.pwd-rel__tabs::-webkit-scrollbar { display: none; }
	.pwd-rel__tab { white-space: nowrap; }
}

@media (max-width: 620px) {
	.pwd-ss-photo img { border-radius: 80px 0 80px 0 !important; }
	.pwd-fs-photo, .pwd-fs-photo a,
	.pwd-fs-photo .et_pb_image_wrap, .pwd-fs-photo img { height: 200px !important; }
	.pwd-rel__viewport .cms-card { height: auto; min-height: 0; }
	.pwd-rc-photo img { height: 200px !important; }
	.pwd-rc-photo a, .pwd-rc-photo .et_pb_image_wrap { height: 200px !important; }
}

/* 115:1688 -- the third anchor on these screens to come out in the client's
   own Divi accent (#6a2b7f) rather than Lavender/600. A module's text colour
   does not reach its links, and Divi's own a{} rule is written after this
   file. Stated once, for every link this design owns. */
.pwd-ss-aboutlink a,
.pwd-ss-aboutlink a:hover,
.pwd-ss-aboutlink a:visited,
.pwd-ss-back a,
.pwd-ss-back a:hover { color: var(--pw-primary) !important; }


/* --- pwd-header-flash -------------------------------------------------------
   Divi prints a page's module design CSS inline at ~87% of the document,
   so until that lands the Theme Builder header sits on Divi's DEFAULT
   section (54) and row (27) padding and the whole page paints 81px low.
   Measured: first paint 4208ms at navY=81, correct at 4744ms.

   This file is a <link> in the head, so stating the header's own
   geometry here applies it BEFORE the first paint.

   Two classes on purpose -- the same specificity Divi's own
   .et_pb_section_0_tb_header.et_pb_section rule carries, and Divi's
   block is printed later, so a value the client sets in the Visual
   Builder still wins. This only beats Divi's one-class default.
   ------------------------------------------------------------------ */
.et-l--header .et_pb_section,
.et-l--header .et_pb_row {
	padding-top: 0;
	padding-bottom: 0;
}

/* =========================================================================
   The states a check never saw, 2026-09-02.
   qa-stories.py and qa-story.py both measure the screen as it first loads.
   Everything below was found by USING the page -- opening the sort, choosing
   a condition, reading a card title -- and none of it is a status code.
   ========================================================================= */

/* ---- 115:3809  the sort menu opened at 1240 wide ------------------------ */
/* .pwd-select__menu is `position:absolute; left:0; right:0`, so it fills its
   nearest POSITIONED ancestor. On the investigator bar that is the field; here
   the field had no position of its own, so the menu resolved against the row
   and opened as a full-width lavender band across the page with the options
   stretched over it. It is the styled select working exactly as written,
   anchored to the wrong box. */
.pwd-sh-controls .cms-filters__field { position: relative; }
.pwd-sh-controls .pwd-select__menu {
	left: auto; right: 0;
	width: max-content; min-width: 200px; max-width: 280px;
}
.pwd-sh-controls .pwd-select__opt { padding: 9px 12px !important; margin: 0 !important; }

/* ---- the chips row, and the stray Clear --------------------------------- */
/* 115:3799 draws neither. The frame's own controls already say both things:
   the sidebar lights the chosen condition and the search box holds its own
   term, so a chip repeating either is the same control twice -- which is the
   reason the pilled field is not repeated as a chip elsewhere on this site.
   The empty state is a different element (.cms-empty) and is NOT hidden, so
   a filter that finds nothing still has its way back. */
.pwd-sh-controls .cms-filters__actions,
.pwd-sh-workspace .cms-summary { display: none !important; }

/* ...but a listing that found nothing must still say so, and look like the
   design while it does. */
.pwd-sh-grid .cms-empty {
	margin: 0; padding: 32px;
	background: var(--pw-white);
	border: 1px solid var(--pw-stroke);
	border-radius: var(--pw-radius);
	font-family: "Plus Jakarta Sans", sans-serif;
	font-size: 16px; line-height: 1.5; color: var(--pw-grey-1);
}
.pwd-sh-grid .cms-empty__clear,
.pwd-sh-grid .cms-empty a {
	display: inline-flex; align-items: center; justify-content: center;
	margin-top: 16px; height: 36px; padding: 0 16px;
	border: 1px solid var(--pw-lav-200); border-radius: 100px;
	font-size: 14px; font-weight: 700;
	color: var(--pw-primary) !important; text-decoration: none;
}

/* ---- 115:3147  the title was being cut by the photograph ---------------- */
/* "Real people. Real impact." measures 593 in this face against a 571 column,
   and the photograph bleeds in from x=659 -- so the last word disappeared
   under it. Both had z-index 2 and the photograph is later in the document,
   so it won. The frame puts the words in front. */
.pwd-sh-heroleft.et_pb_column { z-index: 3; position: relative; }

/* ---- 115:3890 / 115:3892  the card -------------------------------------- */
/* The tag is one line in the frame (whitespace-nowrap, 29 tall). Left to wrap,
   "Immunoglobulin G4 Related Disease (IgG4-RD)" took two lines and pushed that
   card's title 21px below its neighbours' -- a row of cards that do not line
   up, which is the one thing this grid exists to prevent. */
.pwd-sh-grid .pwd-st-tag span,
.pwd-sh-grid .pwd-st-tag a {
	display: block; max-width: 100%;
	white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
/* 115:3892 is 232 x 54 -- TWO lines of 27. Every title on the page was being
   cut to one with an ellipsis, so "A Life Rewritten: Living Fully with
   Dermatomyositis" read as "A Life Rewritten: Living...". */
.pwd-sh-grid .pwd-st-title,
.pwd-sh-grid .pwd-st-title .et_pb_text_inner,
.pwd-sh-grid .pwd-st-title a {
	display: -webkit-box; -webkit-box-orient: vertical;
	-webkit-line-clamp: 2; overflow: hidden;
	text-overflow: clip; white-space: normal;
}

/* ---- the sidebar's scrollbar -------------------------------------------- */
/* `scrollbar-width: thin` is not thin on Windows: Chrome draws a full grey
   trough with an arrow at each end, and down the side of a lavender panel it
   reads as a piece of the browser sitting inside the design. The same lesson
   the filter bar's pill row learned. */
.pwd-side__list { scrollbar-width: thin; scrollbar-color: var(--pw-lav-200) transparent; }
.pwd-side__list::-webkit-scrollbar { width: 6px; }
.pwd-side__list::-webkit-scrollbar-track { background: transparent; }
.pwd-side__list::-webkit-scrollbar-thumb {
	background: var(--pw-lav-200); border-radius: 6px;
}
.pwd-side__list:hover::-webkit-scrollbar-thumb { background: var(--pw-lav-300, #C7B1F7); }


/* =========================================================================
   The story's article  115:1642
   ========================================================================= */

/* 115:1647 -- the frame sets the body copy in Medium, not Regular. At 18px
   over 856 that is the difference between an article and a caption. */
.pwd-ss-prose .et_pb_text_inner,
.pwd-ss-prose p,
.pwd-ss-prose li { font-weight: 500; }
/* 115:1646 -- Heading/6 is capitalized in the frame: "Living In The Unknown". */
.pwd-ss-prose h2,
.pwd-ss-prose h3 { text-transform: capitalize; }
/* The lead paragraph keeps its own weight; it is 20px and already heavier. */
.pwd-ss-lead .et_pb_text_inner, .pwd-ss-lead p { font-weight: 500; }

/* 115:1626 -- these are photographs of people, and a centred crop of a
   portrait source lands on the chin. The same bias the cards use. */
.pwd-ss-photo img { object-position: center 30%; }

/* 115:3888 -- the read-more sits 24 above the card's bottom edge, on every
   card. It was landing at 24 on some and 26 on others, because it simply
   follows the summary and a three-line clamp rounds to 61 or 63 depending on
   the words in it. A margin-top:auto cannot fix that here -- Divi writes this
   module's own margin into the page's stylesheet after this file -- so the
   slack goes to the summary instead, which is a property Divi never writes.
   The same repair the story cards needed. */
.pwd-sh-grid .pwd-st-summary { flex: 1 1 auto !important; }


/* --- pwd-firstpaint --------------------------------------------------------
   The three listing hubs keep Divi's Static CSS File Generation OFF, so
   their design CSS is an inline block at ~87% of the document and the
   hero paints on Divi's DEFAULTS first -- 54px of section padding and a
   1080px row against the frame's 219/200 and 1240.
   Measured on /conditions/: first paint 5012ms with h1 at y=82 and the
   column 1080 wide; correct at 5480ms.

   Divi writes every one of these values itself in a rule carrying an id
   and six classes, so nothing here can change the finished page -- only
   what the first paint looks like. A value the client sets in the
   Visual Builder still wins.
   ------------------------------------------------------------------ */
body.pwd-designed .et-l:not(.et-l--header):not(.et-l--footer) > .et_builder_inner_content > .et_pb_section > .et_pb_row:not(.pwd-narrow) {
	max-width: 1240px;
}
body.pwd-designed .et_pb_section:has(> .et_pb_row.pwd-ch-herorow),
body.pwd-designed .et_pb_section:has(> .et_pb_row.pwd-sh-herorow) {
	padding-top: 219px;
	padding-bottom: 60px;
}
body.pwd-designed .et_pb_section:has(> .et_pb_row.pwd-p-herorow) {
	padding-top: 200px;
	padding-bottom: 0;
}

/* ...and flex-grow could not do it either: Divi writes this module's own
   margin with !important from a `body #page-container` selector, so nothing
   in this file can pin it, and the slack it was given never moved.
   The clamp already says three lines; saying it as a HEIGHT as well makes
   every summary the same box, so the link below it lands in the same place on
   every card without anything needing to be pinned at all. */
.pwd-sh-grid .pwd-st-summary .et_pb_text_inner {
	height: calc(var(--pwd-lines, 3) * 1.5em);
}


/* --- pwd-hero-feather (115:3143, 115:3146) ---------------------------------
   The frame's hero photograph has no edge at all. Measured against its
   own render, its alpha ramps 0 -> 1 across the left 47% of the 778,
   0.15 -> 1 down the top 12% of the 530, and 1 -> 0 from 87.5% out past
   the right edge. Built as a 24px rounded rectangle it was a hard box
   cutting through the h1's full stop and running up behind the navbar.
   Below 1240 the photograph is back in the flow at full width, so the
   fade is desktop-only -- a 47% left ramp on a full-width photograph
   would eat half of it.
   ------------------------------------------------------------------ */
@media (min-width: 1241px) {
	.pwd-sh-heroimg img {
		border-radius: 0 !important;
		-webkit-mask-image:
		linear-gradient(to right, transparent 0%, #000 47%, #000 87.5%, transparent 104%),
		linear-gradient(to bottom, rgba(0,0,0,.15) 0%, #000 12%);
		mask-image:
		linear-gradient(to right, transparent 0%, #000 47%, #000 87.5%, transparent 104%),
		linear-gradient(to bottom, rgba(0,0,0,.15) 0%, #000 12%);
		-webkit-mask-composite: source-in;
		mask-composite: intersect;
	}
}
/* 115:3146 the title stack is drawn `capitalize`. The layer's own words
   are sentence case, so this is a text case and not a rewrite of copy
   the client owns. */
.pwd-sh-title h1 { text-transform: capitalize; }


/* --- pwd-hero-clip (115:2492) -------------------------------------------
   The photograph's own bottom is 541 and the Hero-Container is 533, so
   the frame simply ends it at the boundary. On the page the column is
   absolutely positioned, which paints above the next section's own
   background -- an 8px strip of photograph with a hard edge across it.
   ------------------------------------------------------------------ */
@media (min-width: 1241px) {
	/* Only above 1240 is the photograph out of the flow. Below it the
	   hero's content overflows the section's own box vertically and has
	   always been visible because overflow-y was -- clipping there cuts
	   the serif line, the intro and the photograph off the page. */
	body.pwd-designed .et_pb_section:has(> .et_pb_row.pwd-sh-herorow) {
		overflow: clip;
	}
}


/* --- pwd-hero-tablet ------------------------------------------------------
   Divi's row clearfix is off on this row (a pseudo-element becomes a
   flex item and eats a gap). Above 1240 min-height: 254 hides that;
   below it the row dropped to min-height 0 with two FLOATED columns in
   it, so it collapsed to zero -- measured at 768 the section was 279
   tall, which is its own padding and nothing else, and the photograph
   sat outside it at y=455 covered by the next section.
   flow-root contains the floats and changes nothing else.
   ------------------------------------------------------------------ */
@media (max-width: 1240px) {
	.pwd-sh-herorow { display: flow-root; }
	.pwd-sh-heroimg { margin-top: 32px; }
}


/* --- pwd-hero-tablet-width ------------------------------------------------
   .et_pb_image_wrap is inline-block, so with the height pinned to 320
   the photograph took the file's own 3:2 and came out 480 of a 720
   column. The frame draws no tablet; filling the column is a decision.
   ------------------------------------------------------------------ */
@media (max-width: 1240px) {
	.pwd-sh-heroimg .et_pb_image_wrap {
		display: block !important; width: 100%;
	}
	.pwd-sh-heroimg img { width: 100% !important; }
}


/* === pwd-explore-qa -- Explore by condition (115:3799), element by element ===
   Every box on this band was already the frame's. None of the seven
   things below is a box, and every one of them is visible at a glance. */

/* 115:3801 the heading is drawn `capitalize`. */
.pwd-sh-h2 h2 { text-transform: capitalize; }

/* 115:3803/3804 the magnifier sits 16 in and the placeholder 38. */
.pwd-sh-controls .cms-filters__icon { left: 16px; }
.pwd-sh-controls input[type="search"] { padding-left: 38px; }

/* 115:3809 the sort control is a white field with a hairline round it,
   not bare text on the page's own background. */
.pwd-sh-controls .pwd-select__btn {
	padding: 0 16px;
	background: var(--pw-white);
	border: 1px solid var(--pw-stroke);
}

/* Divi styles every ul on the site `padding: 0 0 23px 1em`, and the open
   sort list is a ul -- so it opened with 15px of indent down its left side
   and 23px of dead space under the last option, every option in Roboto 15.
   The reset for exactly this exists twice in this file, scoped to
   .pwd-screen and to .pwd-p-filterbar, and this bar is inside NEITHER.
   Stated on the component itself, so every placement of it is covered. */
.pwd-select__menu {
	padding: 6px !important; margin: 0 !important;
	list-style: none !important; list-style-type: none !important;
}
.pwd-select__opt {
	margin: 0 !important; padding: 9px 12px !important;
	list-style: none !important; list-style-type: none !important;
	font-family: "Plus Jakarta Sans", sans-serif;
	font-size: 14px; font-weight: 500; line-height: 1.5;
	color: var(--pw-grey-1); border-radius: 6px;
}
.pwd-select__opt::marker { content: none; }
.pwd-select__opt::before { content: none !important; display: none !important; }

/* 134:1004 fits on ONE line in 288: Spectral SemiBold 24 at 1.2 with -0.48
   of tracking. It was carrying 1.4, -1px and 8px of side padding, which
   took 16 off the width it had to fit in. */
.pwd-side__title {
	padding: 0 !important;
	line-height: 1.2; letter-spacing: -0.48px;
}

/* 115:3814 the fill runs ACROSS the sidebar -- lavender, white at 55%,
   lavender -- where the page ran one down it. */
.pwd-side {
	background: linear-gradient(90deg, rgba(245, 243, 255, 0.7) 0%,
		rgba(255, 255, 255, 0.7) 55%, rgba(245, 243, 255, 0.7) 100%);
}

/* 115:3816/3818/3820/3822 are all Plus Jakarta Sans and not one of the four
   names a family, so all four were Divi's Roboto. The count badge is a
   rounded rectangle at 10, not a full pill. */
.pwd-side__name,
.pwd-side__count { font-family: "Plus Jakarta Sans", sans-serif; }
.pwd-side__count { border-radius: 10px; }

/* 115:3890 ONE pill, hugging its own text. The base rule styles `span, a`
   alike and this collection's tag is a reference link, so the anchor drew a
   second pill inside the first -- 4/8 twice over, 37 tall against 29. And
   `display: block`, from the fix for a tag that wrapped, made a 14px
   condition name a 230-wide band. inline-block shrink-to-fits AND still
   truncates, which "Immunoglobulin G4 Related Disease (IgG4-RD)" needs. */
.pwd-sh-grid .pwd-st-tag .et_pb_text_inner > span {
	display: inline-block !important; max-width: 100%; vertical-align: top;
	font-family: "Plus Jakarta Sans", sans-serif;
}
.pwd-sh-grid .pwd-st-tag .et_pb_text_inner > span a {
	display: inline; padding: 0; background: none; border-radius: 0;
	font: inherit; color: inherit;
}

/* 117:6780 the button is the width of the card with justify-between, so its
   arrow sits on the card's right-hand edge rather than immediately after
   the words. No padding is added: the read link's distance from the card's
   bottom edge is already pinned and must not move. */
.pwd-sh-grid .pwd-st-read .et_pb_text_inner > a {
	display: flex; width: 100%; justify-content: space-between; align-items: center;
}


/* === pwd-explore-qa-2 -- and two the band only shows when it is DRIVEN === */

/* Divi gives every row a stacking context, so the open listbox's own
   z-index only competed inside the controls row and the workspace row
   below painted over it: elementFromPoint over the third option returned
   a card photograph. The control opened and could not be used. */
.pwd-sh-controlrow { z-index: 20; }
.pwd-sh-controlrow .et_pb_column { z-index: 20; }
.pwd-sh-workspace { z-index: 1; }

/* 115:3814 is 320 with 16 of padding, and Figma draws its 1px stroke
   CENTRED -- so the frame hands 134:1004 the full 288. A CSS border takes
   its 2px out of the content box instead, leaving 286 for a title that
   measures 286.7, which is the whole reason it was wrapping onto a second
   line. An inset shadow is the same hairline and costs no width. */
.pwd-side {
	border: 0 !important;
	box-shadow: inset 0 0 0 1px var(--pw-lav-100);
}

/* This collection has more conditions than the frame's 908 clips, so the
   list scrolls -- and its last visible row was cut in half at the bottom
   edge, which reads as the panel being broken rather than scrollable. The
   filter pill row on this site already answers that with a fade; the same
   one here. A short list never reaches the faded band, because the list
   box fills the sidebar whether or not its rows do. */
.pwd-side__list {
	-webkit-mask-image: linear-gradient(to bottom, #000 calc(100% - 28px), transparent 100%);
	mask-image: linear-gradient(to bottom, #000 calc(100% - 28px), transparent 100%);
	scrollbar-width: none;
}
.pwd-side__list::-webkit-scrollbar { width: 0; height: 0; }


/* === pwd-rel-wide -- a tab whose card is the width of the band =============
   116:6091 Investigator (1240 x 320), 116:5347 Condition (1240 x 240),
   116:5321 Study (1240 x 280). The carousel forces every wrapper between
   .cms-card and a module into a column, which is right for 115:5211 and
   wrong for all three of these. Scoped to --wide, so the two-up tab is
   untouched. Four classes beats the three the base rules carry. */

.pwd-rel__panel--wide .pwd-rel__viewport .cms-card .et_pb_row {
	flex-direction: row !important;
	align-items: stretch !important;
	flex: 1 1 auto !important;
}
.pwd-rel__panel--wide .pwd-rel__viewport .cms-card .et_pb_column {
	width: auto !important; min-width: 0 !important;
	flex: 1 1 0 !important;
}
/* Divi clears a row with two pseudo-elements; in a flex row each becomes
   a zero-wide flex item that still takes a gap. */
.pwd-rel__panel--wide .cms-card .et_pb_row::before,
.pwd-rel__panel--wide .cms-card .et_pb_row::after { display: none !important; }

/* ---- 116:6092  the investigator card ---------------------------------- */
/* 32 of card padding, 40 between the portrait and the words. */
.pwd-rel__panel--wide .cms-card .et_pb_column.pwd-ri-photocol {
	flex: 0 0 auto !important;
	padding: 32px 0 32px 32px !important;
	justify-content: center;
}
.pwd-rel__panel--wide .cms-card .et_pb_column.pwd-ri-body {
	flex: 1 1 0 !important;
	padding: 32px 32px 32px 40px !important;
	justify-content: flex-start;
}
/* 116:6093 aspect 240/240 at the card height, so 256 inside a 320 card. */
.pwd-ri-photo { flex: none !important; }
.pwd-ri-photo a,
.pwd-ri-photo .et_pb_image_wrap,
.pwd-ri-photo span { display: block; line-height: 0; font-size: 0; }
.pwd-ri-photo .et_pb_image_wrap::after { content: none; }
.pwd-ri-photo img {
	width: 256px !important; height: 256px !important;
	border-radius: 999px; object-fit: cover; object-position: center 30%;
	display: block; max-width: none;
}
/* 116:6096 the badge hugs its own text: 10/4 on Text/14/Medium. */
.pwd-ri-badge { flex: none !important; }
.pwd-ri-badge p { margin: 0 !important; padding: 0 !important; }
.pwd-ri-badge .pwd-ri-tag {
	display: inline-block; padding: 4px 10px;
	background: var(--pw-lav-50); border-radius: 100px;
	font-family: "Plus Jakarta Sans", sans-serif;
	font-size: 14px; font-weight: 500; line-height: 1.5;
	color: var(--pw-primary);
}
.pwd-ri-name, .pwd-ri-role, .pwd-ri-inst, .pwd-ri-bio { flex: none !important; }
.pwd-ri-name p, .pwd-ri-role p, .pwd-ri-inst p, .pwd-ri-bio p {
	margin: 0 !important; padding: 0 !important;
}
/* A module's text colour does not reach its links, and Divi writes its own
   a{} after this file. The fourth time this project has met it. */
.pwd-ri-name a { color: inherit !important; text-decoration: none; }
.pwd-ri-name a:hover { color: var(--pw-primary) !important; }
/* 116:6103 the rule is a Divider module, and Divi gives it its own height. */
.pwd-ri-rule { flex: none !important; }
.pwd-ri-rule .et_pb_divider_internal { margin: 0 !important; }
/* 116:6105 runs four lines in the frame; the client's bios run longer. */
.pwd-ri-bio .et_pb_text_inner {
	display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical;
	overflow: hidden;
}
.et_pb_button.pwd-ri-link,
.et_pb_button.pwd-rn-link,
.et_pb_button.pwd-rs-link {
	display: inline-flex !important; align-items: center; gap: 8px;
	align-self: flex-start;
	padding: 8px 0 !important; border: 0 !important;
	font-family: "Plus Jakarta Sans", sans-serif;
	font-size: 16px; font-weight: 700; line-height: normal;
	color: var(--pw-primary) !important; text-transform: capitalize;
}
.et_pb_button.pwd-ri-link::after,
.et_pb_button.pwd-rn-link::after,
.et_pb_button.pwd-rs-link::after {
	position: static !important; opacity: 1 !important;
	margin: 0 !important; line-height: inherit;
}
.et_pb_button.pwd-ri-link:hover,
.et_pb_button.pwd-rn-link:hover,
.et_pb_button.pwd-rs-link:hover { gap: 12px; background: none !important; }

/* ---- 116:5348  the condition card -------------------------------------- */
.pwd-rel__panel--wide .cms-card .et_pb_column.pwd-rn-body {
	flex: 1 1 0 !important; padding: 28px !important;
	justify-content: flex-start;
}
/* 116:5349 is 441 wide and the full height of the card. */
.pwd-rel__panel--wide .cms-card .et_pb_column.pwd-rn-photocol {
	flex: 0 0 441px !important; width: 441px !important; padding: 0 !important;
}
.pwd-rn-title, .pwd-rn-sum { flex: none !important; }
.pwd-rn-title p, .pwd-rn-sum p { margin: 0 !important; padding: 0 !important; }
.pwd-rn-title a { color: inherit !important; text-decoration: none; }
.pwd-rn-title a:hover { color: var(--pw-primary) !important; }
.pwd-rn-sum .et_pb_text_inner {
	display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical;
	overflow: hidden;
}

/* ---- 115:5249  the study card ------------------------------------------ */
/* 115:5250 and 115:5251 are both flex-1: the photograph is half the card. */
.pwd-rel__panel--wide .cms-card .et_pb_column.pwd-rs-photocol {
	flex: 1 1 0 !important; padding: 0 !important;
}
/* 115:5251 is justify-between, so the link sits on the card's bottom edge. */
.pwd-rel__panel--wide .cms-card .et_pb_column.pwd-rs-body {
	flex: 1 1 0 !important; padding: 28px !important;
	justify-content: space-between;
}
.pwd-rs-title, .pwd-rs-sum, .pwd-rs-tags { flex: none !important; }
.pwd-rs-title p, .pwd-rs-sum p, .pwd-rs-tags p { margin: 0 !important; padding: 0 !important; }
.pwd-rs-title a { color: inherit !important; text-decoration: none; }
.pwd-rs-title a:hover { color: var(--pw-primary) !important; }
.pwd-rs-sum .et_pb_text_inner {
	display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
	overflow: hidden;
}
/* 115:5259 -- 16/6 on Text/14/SemiBold, in Secondary/100 inside Strokes/2. */
.pwd-rs-tags .pwd-rs-tag {
	display: inline-block; padding: 6px 16px;
	background: var(--pw-lav-100); border: 1px solid var(--pw-lav-200);
	border-radius: 100px;
	font-family: "Plus Jakarta Sans", sans-serif;
	font-size: 14px; font-weight: 600; line-height: 1.5;
	color: var(--pw-primary);
}
.pwd-rs-tags .pwd-rs-tag a { color: inherit !important; text-decoration: none; }
/* Most of this collection carries no condition at all, and an empty pill is
   worse than none. The frame's other three tags are a trial status and its
   phases, which belong to the Studies collection the client never sent. */
.pwd-rs-tags .pwd-rs-tag:empty { display: none; }
.pwd-rs-tags:has(.pwd-rs-tag:empty) { display: none !important; }

/* ---- the photographs that fill a height the words beside them set ------- */
.pwd-rn-photo, .pwd-rs-photo { flex: 1 1 auto !important; margin: 0 !important; }
.pwd-rn-photo a, .pwd-rn-photo .et_pb_image_wrap, .pwd-rn-photo span,
.pwd-rs-photo a, .pwd-rs-photo .et_pb_image_wrap, .pwd-rs-photo span {
	display: block; height: 100%; line-height: 0; font-size: 0;
}
.pwd-rn-photo .et_pb_image_wrap::after,
.pwd-rs-photo .et_pb_image_wrap::after { content: none; }
/* Divi gives a linked image an explicit height from the file's own
   proportions, so cropping the img alone leaves the wrapper behind it. */
.pwd-rn-photo img, .pwd-rs-photo img {
	width: 100% !important; height: 100% !important;
	object-fit: cover; display: block; border-radius: 0;
}

/* Below the frame's own width a 441 photograph beside 28px of copy is not a
   card any more. There is no tablet frame; stacking is a decision. */
@media (max-width: 900px) {
	.pwd-rel__panel--wide .pwd-rel__viewport .cms-card { min-height: 0 !important; }
	.pwd-rel__panel--wide .pwd-rel__viewport .cms-card .et_pb_row {
		flex-direction: column !important;
	}
	.pwd-rel__panel--wide .pwd-rel__viewport .cms-card .et_pb_column {
		flex: 0 0 auto !important; width: 100% !important;
	}
	.pwd-rel__panel--wide .cms-card .et_pb_column.pwd-ri-photocol,
	.pwd-rel__panel--wide .cms-card .et_pb_column.pwd-ri-body { padding: 24px !important; }
	.pwd-rel__panel--wide .cms-card .et_pb_column.pwd-rn-photocol { height: 200px; }
	.pwd-rel__panel--wide .cms-card .et_pb_column.pwd-rs-photocol { height: 200px; }
}


/* === pwd-rel-wide-photo -- the crop has to reach the wrapper ====================
   Divi renders an image module as a > span.et_pb_image_wrap > img, and on
   these cards the img is position: absolute -- so it contributes no size
   at all and the wrap measured 0 x 0 inside a column that came out 32
   wide, its own padding and nothing else. Size the WRAPPER. Check 63. */

/* 116:6093 -- aspect 240/240 at the card height: 256 inside a 320 card. */
.pwd-ri-photo a { display: block; width: 256px; height: 256px; }
.pwd-ri-photo .et_pb_image_wrap {
	display: block; position: relative;
	width: 256px !important; height: 256px !important;
	border-radius: 999px; overflow: hidden;
}
.pwd-ri-photo img {
	position: absolute; inset: 0;
	width: 100% !important; height: 100% !important;
	object-fit: cover; object-position: center 25%;
	border-radius: 999px; max-width: none;
}

/* 116:5349 and 115:5250 both fill a height the words beside them set. */
.pwd-rn-photo, .pwd-rs-photo { display: block; height: 100%; }
.pwd-rn-photo a, .pwd-rs-photo a { display: block; height: 100%; }
.pwd-rn-photo .et_pb_image_wrap,
.pwd-rs-photo .et_pb_image_wrap {
	display: block; position: relative;
	width: 100% !important; height: 100% !important;
}
.pwd-rn-photo img, .pwd-rs-photo img {
	position: absolute; inset: 0;
	width: 100% !important; height: 100% !important;
	object-fit: cover; max-width: none; border-radius: 0;
}


/* === pwd-rel-wide-gaps -- the frame's own spacing, and its corners ============
   Every gap below is a custom_margin on the module as well, because that
   is where somebody looks for it -- but Divi writes a module's CSS by
   scanning the PAGE, and a card inside a Library layout is not on the
   page it scanned, so none of it is ever emitted. Same as the featured
   columns that measured 0 padding with 32 and 40 set on them. */

/* 116:6095 gap 16, 116:6098 gap 6, 116:6100 gap 2, 116:6104 gap 16. */
.pwd-ri-badge { margin: 0 0 16px !important; }
.pwd-ri-name  { margin: 0 0 6px  !important; }
.pwd-ri-role  { margin: 0 0 2px  !important; }
.pwd-ri-inst  { margin: 0 0 16px !important; }
.pwd-ri-rule  { margin: 0 0 16px !important; padding: 0 !important; }
.pwd-ri-bio   { margin: 0 0 16px !important; }
/* 116:5351 gap 24 */
.pwd-rn-title { margin: 0 0 24px !important; }
.pwd-rn-sum   { margin: 0 0 24px !important; }
/* 115:5252 gap 16 */
.pwd-rs-title { margin: 0 0 16px !important; }
.pwd-rs-sum   { margin: 0 0 16px !important; }
.pwd-rs-tags  { margin: 0 0 16px !important; }

/* Divi wraps a Button module in a block of its own and gives it a margin
   the button cannot see. The link sat 67px below the bio because of it. */
.pwd-ri-body .et_pb_button_module_wrapper,
.pwd-rn-body .et_pb_button_module_wrapper,
.pwd-rs-body .et_pb_button_module_wrapper {
	margin: 0 !important; padding: 0 !important; flex: none !important;
}

/* 116:6093 is a circle. The wrapper computes 8px from further up the file,
   and .pwd-ss-relrow .cms-card img takes the img's radius away at three
   classes and !important -- so both have to be beaten, not argued with. */
.pwd-rel__panel--wide .cms-card .pwd-ri-photo .et_pb_image_wrap {
	border-radius: 999px !important; overflow: hidden !important;
}
.pwd-rel__panel--wide .cms-card .pwd-ri-photo img {
	border-radius: 999px !important;
}
/* 116:5349 and 115:5250 carry no radius of their own: the card's own 24
   and its overflow: hidden are what round them, and only on the two
   corners that are the card's edge. */
.pwd-rel__panel--wide .cms-card .pwd-rn-photo .et_pb_image_wrap,
.pwd-rel__panel--wide .cms-card .pwd-rs-photo .et_pb_image_wrap {
	border-radius: 0 !important;
}


/* === pwd-rel-wide-half -- 115:5250 and 115:5251 are each half the card ========
   Both columns reported flex: 1 1 0px and min-width: 0 and still split
   553 / 609. State the half rather than argue for it. */
.pwd-rel__panel--wide .cms-card .et_pb_column.pwd-rs-photocol,
.pwd-rel__panel--wide .cms-card .et_pb_column.pwd-rs-body {
	flex: 1 1 50% !important; width: 50% !important; max-width: 50% !important;
}


/* ==========================================================================
   THE KEYWORD BOX'S MAGNIFIER                 Figma 135:603 . 115:3803/3804
   --------------------------------------------------------------------------
   The glyph is the design system's own export and the module puts it there;
   what is left for CSS is the one thing a module cannot say, which is where
   it sits relative to a field it is not inside.

   It is measured from the BOTTOM. The keyword box is always the last 40px of
   its column -- on the investigator screen a 13px label and 6 of gap sit
   above it, on the stories hub nothing does -- so a bottom offset centres it
   on the field in both, where front.css's top:50% centres it on the column
   and lands 11px high wherever there is a label.

   That is also why the fallback rule below has to say `top: auto`: front.css
   sets a top and a height, so adding a bottom over-constrains the box and
   the browser keeps the top.
   ========================================================================== */
.pwd-fb__icon {
	position: absolute;
	left: 14px;                   /* 135:603 -- the glyph's ink lands at 15 */
	bottom: 13px;                 /* (40 - 14) / 2, off the field's bottom  */
	width: 14px;
	height: 14px;
	line-height: 0;
	color: var(--pw-grey-2);      /* #9498A1, solid -- the frame's own      */
	pointer-events: none;
	z-index: 1;
}
.pwd-fb__icon .pwd-i {
	display: block;
	width: 14px;
	height: 14px;
}
/* 115:3803 puts it 16 in rather than 14, over a 38px indent. */
.pwd-sh-controls .pwd-fb__icon { left: 16px; }

/* The cms plugin's own magnifier, for any placement the swap did not reach.
   Same two faults, same repair -- so a bar that falls back still reads as
   the design rather than as a plugin. */
.pwd-p-filterbar .cms-filters__icon,
.pwd-sh-controls .cms-filters__icon {
	top: auto;
	bottom: 13px;
	transform: none;
	opacity: 1;
	color: var(--pw-grey-2);
}

/* === pwd-rel-wide-stack -- a stacked card has to be allowed to be tall =========
   The carousel sets a card height twice, in two blocks three hundred
   lines apart: min-height in one and height in the other. Only the first
   was being undone below 900, so the stacked card stayed 320 with
   overflow: hidden and the entire body was clipped away. */
@media (max-width: 900px) {
	.pwd-rel__panel--wide .pwd-rel__viewport .cms-card {
		height: auto !important; min-height: 0 !important;
	}
	/* the portrait sits on its own line, so it does not need the frame's 256 */
	.pwd-rel__panel--wide .cms-card .pwd-ri-photo a,
	.pwd-rel__panel--wide .cms-card .pwd-ri-photo .et_pb_image_wrap {
		width: 160px !important; height: 160px !important;
	}
	.pwd-rel__panel--wide .cms-card .et_pb_column.pwd-rn-photocol,
	.pwd-rel__panel--wide .cms-card .et_pb_column.pwd-rs-photocol,
	.pwd-rel__panel--wide .cms-card .et_pb_column.pwd-rs-body {
		width: 100% !important; max-width: 100% !important; flex: 0 0 auto !important;
	}
}

/* ---- pwd-share-control : Share is a control, not a link (115:1637) ----
   It was an <a> pointing at the page it is on. It is a <button> that
   initShare unhides and drives, so these rules take the UA's button
   look off it. font-SIZE and -weight are deliberately not set here:
   the 13/600 rule above already states them and this block is later
   in the file, so a `font:` shorthand would quietly beat it. */
.pwd-ss-meta .pwd-ss-share[hidden] { display: none !important; }
.pwd-ss-meta button.pwd-ss-share {
	appearance: none; -webkit-appearance: none;
	background: none; border: 0; margin: 0;
	font-family: inherit; line-height: inherit;
	color: var(--pw-grey-1); cursor: pointer;
}
.pwd-ss-meta button.pwd-ss-share:hover,
.pwd-ss-meta button.pwd-ss-share:focus-visible,
.pwd-ss-meta button.pwd-ss-share.is-done { color: var(--pw-primary); }
.pwd-ss-meta button.pwd-ss-share:focus-visible {
	outline: 2px solid var(--pw-primary); outline-offset: 2px; border-radius: 8px;
}


/* ==========================================================================
   CONDITION HUB, checked element by element against Figma 1:2030
   2026-09-02. Every number below carries the node it was read from.

   Nine faults, none of them a status code and none visible in a response
   body. The two the client saw first -- the magnifier lying on the pill's
   bottom-left corner and 50px of dead space under every directory card --
   are the first two blocks.
   ========================================================================== */

/* --- 1:2688 the search pill ----------------------------------------------
   The keyword box's magnifier was swapped for the design's own glyph
   earlier today, and the swap RENAMES the element: .cms-filters__icon
   became .pwd-fb__icon. This pill is the one placement that lays its icon
   out in the FLOW (position: static, a 12px gap, then the input), and
   .pwd-fb__icon is absolute -- so the rule written for it here stopped
   matching and the glyph fell to `left: 14px; bottom: 13px`, which on a
   56px pill is its bottom-left corner, 14px wide where 1:2690 is 20, and
   sitting on top of the placeholder's first letter.

   Both class names are named, so the pill is right whichever glyph the
   plugin hands it. */
.pwd-ch-search .pwd-fb__icon,
.pwd-ch-search .cms-filters__icon {
	position: static !important;
	left: auto !important; right: auto !important;
	top: auto !important; bottom: auto !important;
	flex: none;
	width: 20px !important; height: 20px !important;   /* 1:2690 */
	margin: 0 12px 0 0 !important;                     /* 1:2689 gap: 12 */
	color: #606775 !important;                         /* solid, the frame's */
	opacity: 1 !important;
	transform: none !important;
}
.pwd-ch-search .pwd-fb__icon .pwd-i,
.pwd-ch-search .pwd-fb__icon svg,
.pwd-ch-search .cms-filters__icon svg { width: 20px !important; height: 20px !important; }

/* 1:2693 and I1:2694;430:213 are both Plus Jakarta Sans. The pill set no
   font-family of its own and its input and button both say `inherit`, so
   all three fell through to Divi's Roboto -- the same trap the tags and
   buttons on the investigator screen fell into. */
.pwd-ch-search {
	font-family: "Plus Jakarta Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
}

/* --- 1:2800 the condition card -------------------------------------------
   The frame's card is 292 x 178: 24 of padding, an 81-tall title row, 16,
   a 33-tall tag, 24. The modules already carry exactly those margins, so
   the card's own content is 178 -- and the grid was asking for a 205px
   floor, which is where the dead space under every tag came from. The
   floor is a module setting (PW Entry Grid -> Smallest card height) and is
   178px now; this states it too, because Divi writes no CSS for a module
   inside a Library layout.

   1:2802 is 244 x 54 -- two lines -- and 1:2812 is one, so the title row's
   own 81 is three lines' worth. Unclamped, "Chronic Inflammatory
   Demyelinating Polyneuropathy (CIDP)" took five and made that card 234
   where its neighbours were 205. */
.pwd-ch-grid .cms-card { min-height: 178px; }
.pwd-cc-title .pwd-cc-name {
	display: -webkit-box;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 3;
	overflow: hidden;
}

/* --- 126:516 the health-area card ----------------------------------------
   141 x 176 in the frame; ours ran 186 because the label and the count set
   no font-family and so came out in Divi's Roboto at a different leading. */
.pwd-area, .pwd-area__label, .pwd-area__count {
	font-family: "Plus Jakarta Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
}
.pwd-area { min-height: 176px; }

/* --- 1:2685 the title stack ----------------------------------------------
   The frame draws "Explore Our Conditions. / Grow Your Community." The
   layer's own words are sentence case, so this is a text case and not a
   rewrite of copy the client owns -- the same call already taken on the
   stories hub (115:3146). */
.pwd-ch-title h1 { text-transform: capitalize; }

/* --- 1:3033 the newsletter band ------------------------------------------
   The band is full-bleed in every frame that draws it -- 1440 wide, with
   its content on the 1240 shell inside. Ours was the width of the ROW it
   sits in, so a lavender block sat between two white margins with the
   footer under it. The section is what bleeds; the module keeps its own
   padding and the row keeps the 1240. */
.et_pb_section:has(.pwd-newsletter) { background-color: var(--pw-band-bg); }
.et_pb_section:has(.pwd-newsletter) .pwd-newsletter { background: transparent; }

/* ===== 2026-09-02 -- the condition page, against frame 57:123 ============= */

/* --- the newsletter band belongs to the SECTION, not to a panel inside it --
   76:406 is a full-bleed 1440 band whose content sits on the same 1240 shell
   as everything above it. Built inside a Divi row it painted its own fill at
   1240 -- so the band was inset with white either side, which is the first
   thing the client noticed -- and then .pwd-shell took another 72 of gutter
   off each edge, leaving 1096 of content: the title wrapped onto two lines
   and the band measured 274 against the frame's 249.
   The fill is the Divi SECTION's background now, which is full-bleed AND is a
   setting the client can change in the Visual Builder. */
.et_pb_row .pwd-band-wrap { background: none; padding-bottom: 0; }
.et_pb_row .pwd-newsletter { background: none; }
.et_pb_row .pwd-newsletter > .pwd-shell {
	max-width: none;
	padding-left: 0;
	padding-right: 0;
}

/* --- the tab bar  57:140 -------------------------------------------------
   Eight tabs, each a 56px disc over a 14px label with a 3px indicator under
   it. What was there was a row of bare text links: no icon, no disc, no
   indicator and no sign of which section you were in. The markup is anchors
   in a Divi Text module and the icons are {pw_icon:} tokens, so every label,
   link and icon stays the client's in the builder. */
.pwd-sc-tabband {
	background: #fff;
	border-bottom: 1px solid #E4E7EC;
	box-shadow: 0 2px 10px -4px rgba(107, 51, 235, 0.15);
	position: relative;
	z-index: 2;
}
.pwd-sc-tabs .et_pb_text_inner {
	display: flex;
	justify-content: space-between;
	align-items: flex-start;
	gap: 8px;
}
.pwd-sc-tabs a {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 4px;
	padding: 12px 8px 0;
	text-decoration: none;
	/* 57:159 -- Medium 500, 14/1.5, Neutral/Dark. Divi writes the module's own
	   colour onto the wrapper and not onto its anchors, which is why this
	   states the colour rather than inheriting it. */
	font-family: "Plus Jakarta Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
	font-size: 14px;
	font-weight: 500;
	line-height: 1.5;
	color: #181628;
	white-space: nowrap;
}
.pwd-sc-tabs a::after {
	/* 57:160 -- the inactive indicator is drawn and transparent, so the tab
	   does not move by 3px the moment it becomes the current one. */
	content: "";
	display: block;
	width: 100%;
	height: 3px;
	border-radius: 2px 2px 0 0;
	background: transparent;
}
.pwd-sc-tabicon {
	width: 56px;
	height: 56px;
	border-radius: 50%;
	display: grid;
	place-items: center;
	flex: none;
	border: 1px solid #EFE8FD;
	/* 57:150 -- Gradient/2, across the disc rather than down it. */
	background: linear-gradient(90deg, rgba(242, 237, 255, 0.7), rgba(250, 247, 255, 0.4) 50%, rgba(245, 240, 255, 0.65));
	color: #595F6B;
}
.pwd-sc-tabicon .pwd-inline-icon { display: block; }
.pwd-sc-tabs a:hover { color: #7A44EC; }
.pwd-sc-tabs a:hover .pwd-sc-tabicon { border-color: #C7B1F7; }
.pwd-sc-tabs a.is-active { color: #7A44EC; font-weight: 700; }
.pwd-sc-tabs a.is-active::after { background: #7A44EC; }
.pwd-sc-tabs a.is-active .pwd-sc-tabicon {
	background: #7A44EC;
	border-color: #7A44EC;
	color: #fff;
}
.pwd-sc-tabs a:focus-visible {
	outline: 2px solid #7A44EC;
	outline-offset: 2px;
	border-radius: 8px;
}

/* Below the frame's own width the eight tabs cannot sit on one line, and
   there is no tablet frame to copy -- so the row scrolls, which is what the
   pill row on the stories hub already does with the same problem. */
@media (max-width: 1239px) {
	.pwd-sc-tabs .et_pb_text_inner {
		justify-content: flex-start;
		gap: 24px;
		overflow-x: auto;
		scrollbar-width: none;
		-ms-overflow-style: none;
	}
	.pwd-sc-tabs .et_pb_text_inner::-webkit-scrollbar { display: none; }
}

/* --- Related Stories & Profiles  57:572 ----------------------------------
   The heading is Heading/3 rather than the 32 the story page's band uses. */
.pwd-sc-related .pwd-rel__h { font-size: 40px; text-transform: capitalize; }
.pwd-sc-related .pwd-rel__sub { font-size: 18px; }


/* ==========================================================================
   INVESTIGATOR PROFILES, and the footer every page shares   pwd-inv-audit-20260902
   --------------------------------------------------------------------------
   Figma 135:593, and the footer instance 162:1811 inside it. Four faults,
   found by diffing the frame's own render against the page's rather than by
   comparing more numbers: 157 assertions passed on this screen throughout,
   and every one of them asks where a thing IS.
   ========================================================================== */

/* 135:593 -- the frame's ground is #FAF9FD and only the hero SECTION was
   painting it, so from the panel down the page fell through to the theme's
   white. The panel is white too, which left its 24px corners and its
   shadow with nothing to sit on and the whole screen reading as flat.
   Scoped to this page: the stories hub's ground really is white (115:2491),
   and only its middle band is washed. */
body.page-id-9511 { background-color: #FAF9FD; }

/* 135:598 -- the layer's words are sentence case and its text case is
   capitalize, so the frame draws "Meet The Investigators". */
body .pwd-p-hero .pwd-p-title h1 { text-transform: capitalize; }


/* 162:1811 -- Divi styles every ul on this site `padding: 0 0 23px 1em`
   from a selector carrying an id, so it beat this stylesheet's own reset.
   Every footer link and the whole badge row sat 14px right of the column
   edge the frame puts them on (I162:1811;162:458 is x=0 of its column), and
   each list carried 23px of dead space under it. The navbar has no ul, so
   this is deliberately not widened to it. */
body #page-container .pwd-footer ul,
body.et-tb-has-footer .pwd-footer ul { padding: 0 !important; margin: 0 !important; }

/* I162:1811;162:458-464 -- a List Item is 21 tall on a 25 pitch, and the
   list's own gap is 4. Divi's li line-height made it 26 on a 30 pitch, so
   each column ran 5px long per row and every link below the first sat low.
   The CONNECT column's rows really are 30 apart (162:502-517) and keep it:
   their anchor states its own height of 26, which wins here. */
.pwd-footer__item { line-height: 21px; }

/* --- pwd-news-gutter: the band's gutter below the row's 1240 ---------------------
   The shell's padding is removed above so the full-bleed section can put
   the content at x=100 on a 1240 row. The row is width:100%, so below its
   max-width that leaves no gutter at all -- x=0 and full-bleed text at
   1024, 768 and 390. Below 1280 the shell keeps its own gutter. */
@media (max-width: 1279px) {
	.et_pb_row .pwd-newsletter > .pwd-shell {
		padding-left: var(--pw-gutter);
		padding-right: var(--pw-gutter);
	}
}


/* --- 126:558 the health-area card ----------------------------------------
   141 x 176. The label is a FIXED 113 wide in the frame (126:563) -- wider
   than the 109 a 141 card with 16 of padding leaves it -- which is what
   keeps "Rheumatic & Musculoskeletal" on two lines. At 109 it took three,
   and because the row is `align-items: stretch` that one card set the
   height of all eight: 207 against the frame's 176.

   126:562 also puts the label and its count 2 apart, inside a group that
   is 10 from the icon. Ours had one 10px gap doing both jobs. */
.pwd-area__label {
	width: 113px;
	max-width: none;
	margin-left: auto; margin-right: auto;
}
.pwd-area__count { margin-top: -8px; }   /* the card's 10px gap, net 2 */

/* --- 1:2031 the hero photograph ------------------------------------------
   The frame's photograph is not a card beside the text. It fills the whole
   right of the 670-tall hero, runs off the right edge of the page, and has
   no edge of its own anywhere -- its alpha ramps in from nothing across
   the left of it and off the top. Built as a 669 x 470 rounded rectangle
   inside the 1240 shell it was a hard box with white all round it, which
   is the single thing that most made this screen read as unfinished.

   Desktop only. Below 1240 the photograph is back in the flow at full
   width, where a left ramp would eat half of it -- the same call already
   taken on the stories hub, and the same reason (check 75) it is scoped:
   clipping at every width takes the hero off the page entirely. */
@media (min-width: 1241px) {
	.pwd-ch-herorow { position: relative; }
	.pwd-ch-herorow > .et_pb_column.pwd-ch-heroleft { position: relative; z-index: 3; }
	.pwd-ch-herorow > .et_pb_column.pwd-ch-heropic {
		position: absolute !important;
		top: -219px;                       /* the section's own padding-top  */
		bottom: -80px;                     /* ...and its padding-bottom      */
		left: 640px;                       /* 571 of text + the frame's 69   */
		right: calc(620px - 50vw);         /* out to the viewport's own edge */
		width: auto !important; max-width: none !important;
		margin: 0 !important; flex: none !important;
		z-index: 1;
	}
	.pwd-ch-heropic .et_pb_module,
	.pwd-ch-heropic .et_pb_image,
	.pwd-ch-heropic .et_pb_image_wrap { height: 100%; display: block; margin: 0 !important; }
	.pwd-ch-heroimg img {
		width: 100% !important; height: 100% !important;
		object-fit: cover; object-position: 55% 40%;
		border-radius: 0 !important;
		-webkit-mask-image:
			linear-gradient(to right, transparent 0%, #000 42%),
			linear-gradient(to bottom, rgba(0,0,0,.1) 0%, #000 10%);
		mask-image:
			linear-gradient(to right, transparent 0%, #000 42%),
			linear-gradient(to bottom, rgba(0,0,0,.1) 0%, #000 10%);
		-webkit-mask-composite: source-in;
		mask-composite: intersect;
	}
	/* 50vw counts the scrollbar and the row does not, so the photograph
	   overshoots the real edge by a few pixels. Clipped, not hidden --
	   `hidden` would make the section a scroll container. */
	body.pwd-designed .et_pb_section:has(> .et_pb_row.pwd-ch-herorow) { overflow-x: clip; }
}

/* --- the first paint, continued ------------------------------------------
   The block far above states this page's section padding before Divi's own
   CSS arrives at ~87% of the document. It did not state the row WIDTH, and
   `max-width: 1240px` cannot beat Divi's default `width: 80%` -- so at 1366
   the content column painted 1093 wide and then jumped to 1240, and the
   navbar, whose layout row really is full width, painted 1080 at x=143 and
   then jumped to 0. That is the flash the client sees on every filter
   click, because a filter is a full page reload.

   These lose to Divi one frame later exactly as the rest of the block does:
   nothing here carries an id, so a value set in the Visual Builder wins. */
body.pwd-designed .et-l--header > .et_builder_inner_content > .et_pb_section > .et_pb_row,
body.pwd-designed .et-l--footer > .et_builder_inner_content > .et_pb_section > .et_pb_row {
	width: 100%;
	max-width: 100%;
}
body.pwd-designed .et-l:not(.et-l--header):not(.et-l--footer) > .et_builder_inner_content > .et_pb_section > .et_pb_row:not(.pwd-narrow) {
	width: min(1240px, 100%);
}
/* Divi's default h1/p carry padding of their own until the page's CSS
   lands, which is the last 27px of movement in the hero. */
body.pwd-designed .pwd-ch-title h1,
body.pwd-designed .pwd-ch-title p,
body.pwd-designed .pwd-ch-intro p { padding: 0; margin: 0; }


/* --- the hero photograph, corrected --------------------------------------
   Two numbers from the pass above were mine and not the frame's.

   1:2031 starts the photograph at about x=560, not at the right-hand edge
   of the text column -- it runs BEHIND the sentence rather than beside it,
   which is what the left ramp is for. At left: 640 with a 42% ramp nothing
   was solid until x=1034 and the band read as a photograph pinned to the
   corner. And the section's own padding-bottom is 80 (the Hero-Container
   is 670 with its text block ending at 590), which the firstpaint block
   further up states as 60 for the stories hub and was winning here. */
@media (min-width: 1241px) {
	body.pwd-designed .et_pb_section:has(> .et_pb_row.pwd-ch-herorow) { padding-bottom: 80px; }
	.pwd-ch-herorow > .et_pb_column.pwd-ch-heropic { left: 460px; }
	.pwd-ch-heroimg img { object-position: center 35%; }
}

/* Divi gives every h1 ten pixels of padding-bottom of its own, so the hero
   title measured 125 for two 57.6 lines and pushed the tag row nine below
   57:130's y=185. The frame's stack is 21 + 24 + 116 + 24. */
.pwd-sc-title h1 { padding-bottom: 0; }

/* --- Research & Resources  130:798 ---------------------------------------
   130:826 is a pill-shaped bar of five tabs over one white panel, and what
   was there was five headings stacked one under the other with a bare list
   under each. The bar is Divi's OWN Tabs module -- where Divi can do it, Divi
   does it -- so the five labels, their order and their contents are all the
   client's in the Visual Builder; this only says what one looks like. */
.pwd-sc-restabs.et_pb_tabs {
	border: 0;
	background: none;
}
.pwd-sc-restabs.et_pb_tabs ul.et_pb_tabs_controls {
	display: flex;
	gap: 16px;
	align-items: center;
	padding: 16px 12px;
	margin: 0;
	/* 130:826 -- Glass Effect over the band, an #E4E7EC hairline, fully round */
	background: rgba(255, 255, 255, 0.9);
	border: 1px solid #E4E7EC;
	border-radius: 100px;
	overflow-x: auto;
	scrollbar-width: none;
	-ms-overflow-style: none;
}
.pwd-sc-restabs.et_pb_tabs ul.et_pb_tabs_controls::after { display: none; }
.pwd-sc-restabs.et_pb_tabs ul.et_pb_tabs_controls::-webkit-scrollbar { display: none; }
.pwd-sc-restabs.et_pb_tabs ul.et_pb_tabs_controls li {
	flex: 1 0 0;
	min-width: 120px;
	float: none;
	margin: 0;
	padding: 0;
	border: 0;
	background: none;
	list-style: none;
}
.pwd-sc-restabs.et_pb_tabs ul.et_pb_tabs_controls li a {
	display: flex;
	align-items: center;
	justify-content: center;
	min-height: 48px;
	padding: 0 16px;
	border: 1px solid transparent;
	border-radius: 100px;
	/* 130:828 -- Text/16px Medium, Neutral/Dark */
	font-family: "Plus Jakarta Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
	font-size: 16px;
	font-weight: 500;
	line-height: 1.5;
	color: #181628;
	text-decoration: none;
	white-space: nowrap;
}
.pwd-sc-restabs.et_pb_tabs ul.et_pb_tabs_controls li.et_pb_tab_active a {
	/* 130:827 -- Bold, Lavender/600, on Gradient/2 inside an #E1D5FB edge */
	font-weight: 700;
	color: #7A44EC;
	border-color: #E1D5FB;
	background: linear-gradient(90deg, rgba(242, 237, 255, 0.7), rgba(250, 247, 255, 0.4) 50%, rgba(245, 240, 255, 0.65));
}
.pwd-sc-restabs.et_pb_tabs ul.et_pb_tabs_controls li a:hover { color: #7A44EC; }
.pwd-sc-restabs.et_pb_tabs .et_pb_all_tabs {
	/* 130:832 -- the panel is a card 20 under the bar, padded 32 */
	margin-top: 20px;
	background: #fff;
	border: 1px solid #E4E7EC;
	border-radius: 16px;
}
.pwd-sc-restabs.et_pb_tabs .et_pb_tab { padding: 32px; }
.pwd-sc-restabs .cms-block__heading { display: none; }  /* the tab IS the heading */

/* 130:833 -- two cards across, 24 apart */
.pwd-sc-restabs .cms-refs {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(360px, 1fr));
	gap: 24px;
	margin: 0;
	padding: 0;
	list-style: none;
}
.pwd-sc-restabs .cms-refs li.cms-ref {
	display: flex;
	gap: 20px;
	align-items: center;
	padding: 24px;
	margin: 0;
	border: 1px solid #E4E7EC;
	border-radius: 16px;
	list-style: none;
}
.pwd-sc-restabs .cms-refs li.cms-ref::before {
	/* 130:835 -- a 64px purple disc with the design's own users glyph in it */
	content: "";
	flex: none;
	width: 64px;
	height: 64px;
	border-radius: 50%;
	background: #7A44EC url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 16 16' fill='none'%3E%3Cpath d='M10.6669 14V12.6667C10.6669 11.9594 10.3859 11.2811 9.88577 10.781C9.38563 10.281 8.7073 10 8 10H3.99968C3.29238 10 2.61405 10.281 2.11391 10.781C1.61377 11.2811 1.3328 11.9594 1.3328 12.6667V14M10.6669 2.08529C11.2388 2.23353 11.7452 2.56746 12.1068 3.03466C12.4683 3.50186 12.6645 4.07588 12.6645 4.66662C12.6645 5.25736 12.4683 5.83138 12.1068 6.29858C11.7452 6.76578 11.2388 7.09971 10.6669 7.24795M14.6672 13.9999V12.6666C14.6668 12.0757 14.4701 11.5018 14.1081 11.0348C13.746 10.5678 13.2392 10.2343 12.667 10.0866M8.66672 4.66667C8.66672 6.13943 7.47272 7.33333 5.99984 7.33333C4.52696 7.33333 3.33296 6.13943 3.33296 4.66667C3.33296 3.19391 4.52696 2 5.99984 2C7.47272 2 8.66672 3.19391 8.66672 4.66667Z' stroke='white' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E") center / 32px 32px no-repeat;
}
.pwd-sc-restabs .cms-refs li.cms-ref > * {
	/* 130:839 -- Heading/7, capitalised. The frame draws a description and a
	   "Learn More" under it; every one of these values is an unresolved
	   reference into the Condition Resources collection the client has never
	   exported, so there is neither a sentence to print nor an address to
	   send anybody to. A button that goes nowhere is worse than no button. */
	font-family: "Plus Jakarta Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
	font-size: 20px;
	font-weight: 700;
	line-height: 1.4;
	color: #181628;
	text-transform: capitalize;
}
.pwd-sc-restabs .cms-refs li.cms-ref > a { color: #7A44EC; text-decoration: none; }
.pwd-sc-restabs .cms-refs li.cms-ref > a:hover { text-decoration: underline; }

/* The frame's own heading for the band, above the bar. */
.pwd-sc-resheading h2 { padding-bottom: 0; }

@media (max-width: 900px) {
	.pwd-sc-restabs.et_pb_tabs ul.et_pb_tabs_controls li { flex: 0 0 auto; }
	.pwd-sc-restabs.et_pb_tabs .et_pb_tab { padding: 24px; }
	.pwd-sc-restabs .cms-refs { grid-template-columns: 1fr; }
}


/* --- pwd-who-fix -----------------------------------------------------------
   "Who We Are" (Figma 135:1633) and the footer (162:1022), checked element by
   element on 2026-09-02. Everything here is a thing a Divi module cannot say
   about itself; every value that COULD be a module setting was set in the
   module instead, so it stays the client's in the Visual Builder.
   -------------------------------------------------------------------------- */

/* The footer's five link lists took Divi's own `ul { padding-left: 1em }`, so
   every link sat 14px right of the heading above it. 162:1022 has them flush
   -- heading and links share one left edge. This is on every page of the site.
   Check 76: a rule about a component belongs on the component.                */
.pwd-footer__list,
.pwd-footer .pwd-footer__list { padding-left: 0; margin-left: 0; }

/* Divi gives every heading `padding-bottom: 10px`. The frame gives none, and
   those 10px were the top of a 30px drift down the whole hero column: the h1
   box measured 68 against 135:2283's 58, the leadership h2 58 against
   135:2960's 48, and each team card grew 13. Check 51 -- a value nobody had
   thought to measure.                                                        */
body.pwd-designed .pwd-a-title h1,
body.pwd-designed .pwd-a-h2 h2,
body.pwd-designed .pwd-a-teamname h3 { padding-bottom: 0; }

/* 135:2284 / 135:2962 / 135:3700 are a 4px rule. Divi's divider module is 23px
   tall whatever weight it draws, so each of the four accent bars was carrying
   19px of empty box under it. The module now says `height="4px"` as well --
   this is the half that applies (check 79).                                  */
body.pwd-designed .pwd-a-bar { height: 4px; min-height: 0; }
body.pwd-designed .pwd-a-bar .et_pb_divider_internal { height: 4px; }

/* 135:2965 centres the chevron on the CARD; ours was pinned 176px from the
   top of the wrapper, which is the middle of the photograph and 51px above the
   card's own centre. The wrapper is the card row plus a 10px gap and a 10px
   dot, so `50% - 10px` is the card's centre whatever height the card ends up
   -- which matters, because these fixes change that height.                  */
body.pwd-designed .pwd-a-cbtn {
	top: calc(50% - 10px);
	transform: translateY(-50%);
}

/* Divi writes the tab controls' padding from a selector carrying an id, so
   nothing at three classes can reach it -- 130:826 is 68 tall, which is a
   48px pill with 10 above and below it. */
.pwd-sc-restabs.et_pb_tabs ul.et_pb_tabs_controls { padding: 10px 12px !important; }

/* 130:833 -- two cards across the panel, not three. */
.pwd-sc-restabs .cms-refs { grid-template-columns: repeat(auto-fill, minmax(480px, 1fr)); }

/* front.css draws an unresolved reference as a bordered chip, which is right
   in a run of prose and wrong as the title of a card. 130:839 is Heading/7,
   plain. */
.pwd-sc-restabs .cms-refs li.cms-ref .cms-ref-missing {
	border: 0;
	background: none;
	padding: 0;
	border-radius: 0;
	color: inherit;
	font: inherit;
}

@media (max-width: 900px) {
	.pwd-sc-restabs .cms-refs { grid-template-columns: 1fr; }
}


/* --- pwd-who-fix-2 ---------------------------------------------------------
   The two on this page that a module setting could not carry.
   -------------------------------------------------------------------------- */

/* 135:2303 sits at y=289 beside a text column that starts at 200 -- the
   mission card is 89 lower than the column next to it, not level with it.
   custom_margin on the column is saved and visible in the builder and never
   reaches the page: Divi writes the hero row's own column margins from the
   gutter afterwards and they win.                                           */
body.pwd-designed .pwd-a-herorow > .et_pb_column.pwd-a-card { margin-top: 89px; }
@media (max-width: 980px) {
	body.pwd-designed .pwd-a-herorow > .et_pb_column.pwd-a-card { margin-top: 40px; }
}

/* 135:3003 puts the dots 24 under the cards, not 10.                        */
body.pwd-designed .pwd-a-cdots { margin-top: 24px; }


/* --- 1:2785 Header-Controls ----------------------------------------------
   The frame puts a "Sort by: A-Z" pill and a grid/list toggle on the right
   of "All Conditions", 1032 into the 1240. Neither was built.

   The sort is deliberately NOT a second [cms_filters] bar: that shortcode
   only carries the pill field's value in hidden inputs, so a sort-only
   form would throw away whatever the visitor had typed in the hero's
   keyword box the moment they sorted. It is a select that rewrites the
   current query string instead, printed `hidden` and unhidden by the
   script -- a control that cannot work without JavaScript must not be on
   the page at all (the same bargain the Share button makes).

   The view toggle needs no script: it is two radios and :has().
   ------------------------------------------------------------------ */
.pwd-ch-dircol.et_pb_column {
	display: flex; flex-wrap: wrap; align-items: center;
}
.pwd-ch-dircol > .pwd-ch-dirhead { flex: 1 1 auto; margin-bottom: 0 !important; }
.pwd-ch-dircol > .pwd-ch-dirctl  { flex: none; margin-bottom: 0 !important; }
.pwd-ch-dircol > .pwd-ch-grid    { flex: 1 1 100%; margin-top: 40px; }   /* 1:2798 y=171 */

.pwd-ch-controls {
	display: flex; align-items: center; gap: 8px;      /* 1:2785 */
	font-family: "Plus Jakarta Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
}
.pwd-ch-controls [hidden] { display: none !important; }

/* 1:2786 -- 128 x 37, white, 1px #E4E7EC, radius 8, 12/8 of padding */
.pwd-ch-sort {
	position: relative;
	display: inline-flex; align-items: center; gap: 6px;
	padding: 8px 12px;
	background: var(--pw-white);
	border: 1px solid var(--pw-stroke); border-radius: 8px;
	font-size: 14px; line-height: 1.5; cursor: pointer;
}
.pwd-ch-sort__lead { color: var(--pw-grey-1); font-weight: 400; white-space: nowrap; }
.pwd-ch-sort select {
	appearance: none; -webkit-appearance: none;
	background: none; border: 0; padding: 0 18px 0 0; margin: 0;
	font-family: inherit; font-size: 14px; font-weight: 600; line-height: 1.5;
	color: var(--pw-dark); cursor: pointer;
	outline: none; box-shadow: none;
}
.pwd-ch-sort select:focus-visible { outline: 2px solid var(--pw-primary); outline-offset: 2px; }
.pwd-ch-sort__chev {
	position: absolute; right: 12px; top: 50%; transform: translateY(-50%);
	width: 14px; height: 14px; line-height: 0;      /* 1:2789 */
	color: var(--pw-grey-2); pointer-events: none;
}
/* Divi styles every select on the page; this one is inside our own pill. */
.pwd-ch-sort select option { color: var(--pw-dark); }

/* 1:2791 -- two 36 x 32 buttons in one 8px-cornered box, the chosen one
   on Lavender/Secondary/10. Radios rather than buttons, so it needs no
   script and keeps the keyboard for free. */
.pwd-ch-view {
	display: inline-flex; align-items: stretch;
	border: 1px solid var(--pw-stroke); border-radius: 8px; overflow: hidden;
}
.pwd-ch-view input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.pwd-ch-view label {
	display: flex; align-items: center; justify-content: center;
	width: 36px; height: 32px; padding: 8px 10px; margin: 0;
	background: var(--pw-white); color: var(--pw-grey-2);
	cursor: pointer; line-height: 0;
}
.pwd-ch-view label svg, .pwd-ch-view label .pwd-i { width: 16px; height: 16px; }
.pwd-ch-view input:checked + label { background: #F7F5FA; color: var(--pw-primary); }
.pwd-ch-view input:focus-visible + label { outline: 2px solid var(--pw-primary); outline-offset: -2px; }

/* The list view. One card a row, the title and its tag side by side --
   which is the only thing "list" can mean for a card that is a title, a
   tag and an arrow. */
body:has(#pwv-list:checked) .pwd-ch-grid .cms-list {
	grid-template-columns: 1fr !important;
}
body:has(#pwv-list:checked) .pwd-ch-grid .cms-card { min-height: 0; }
body:has(#pwv-list:checked) .pwd-ch-grid .cms-card .et_pb_column {
	flex-direction: row; align-items: center; gap: 24px;
}
body:has(#pwv-list:checked) .pwd-cc-title { flex: 1 1 auto; margin: 20px 0 20px 24px !important; }
body:has(#pwv-list:checked) .pwd-cc-title .et_pb_text_inner { min-height: 0; align-items: center; }
body:has(#pwv-list:checked) .pwd-cc-title .pwd-cc-name { -webkit-line-clamp: 2; }
body:has(#pwv-list:checked) .pwd-cc-tag { flex: none; margin: 0 24px 0 0 !important; }

@media (max-width: 700px) {
	.pwd-ch-dircol.et_pb_column { display: block; }
	.pwd-ch-controls { margin-top: 16px; }
}

/* --- the condition page below 1100 ---------------------------------------
   The hero photograph and the At A Glance box are pinned to the frame's 620
   and 520, and the media query that was meant to release them named
   `.pwd-sc-herorow > .et_pb_column` -- two classes -- against a desktop rule
   of `.pwd-sc-herorow > .et_pb_column.pwd-sc-heropic`, which is three. Both
   carry !important, so the more specific one wins whatever the viewport is
   and whatever order they are in: the reset had never applied once.

   Measured before this: the page scrolled sideways 140px at 480 and 230px at
   390, with the photograph hanging off the right of every one of the
   twenty-five condition pages. Nothing errored, every status code was 200,
   and no check in this project had ever measured this screen below 1440. */
@media (max-width: 1100px) {
	.pwd-sc-herorow > .et_pb_column.pwd-sc-heropic,
	.pwd-sc-herorow > .et_pb_column.pwd-sc-herotext,
	.pwd-sc-overrow > .et_pb_column.pwd-sc-glance,
	.pwd-sc-overrow > .et_pb_column.pwd-sc-overleft {
		flex: 1 1 100% !important;
		width: 100% !important;
		max-width: 100% !important;
	}
	.pwd-sc-heropic img { width: 100% !important; max-width: 100% !important; }
}


/* --- pwd-who-fix-3 ---------------------------------------------------------
   Three that only showed once the second pass had landed.
   -------------------------------------------------------------------------- */

/* 135:2303 is 89 lower than the text column beside it. The column's own
   custom_margin is saved and never reaches the page -- Divi writes the hero
   row's column margins from the gutter as a shorthand, after ours, so the
   top is reset to 0 (check 67). It has to say !important to be heard.       */
body.pwd-designed .pwd-a-herorow > .et_pb_column.pwd-a-card { margin-top: 89px !important; }
@media (max-width: 980px) {
	body.pwd-designed .pwd-a-herorow > .et_pb_column.pwd-a-card { margin-top: 40px !important; }
}

/* The wrapper is the card row plus a 24px gap and a 10px dot, so the card's
   own centre -- which is where 135:2965 puts the chevron -- is 17px above the
   wrapper's. The first pass allowed 10 and left it 6px high.                */
body.pwd-designed .pwd-a-cbtn { top: calc(50% - 17px); }

/* 135:3852 gives each figure 126 to write on and ours had 103, so every one
   of the three labels broke onto a third line. Gutter 2 on the row brought
   the column to 161; this is the 20px of padding still inside it.           */
body.pwd-designed .pwd-a-stats > .et_pb_column { padding-right: 12px; }


/* --- 8:1647 the Featured Condition card ----------------------------------
   The frame puts the photograph, the name, the copy and the two links
   directly on the column's own glass panel. Ours drew a second white card
   inside it -- 331 x 477 with its own 1px border and 16px corners, inside
   a 397 x 642 panel that already has both -- and because it sized to its
   own content it stopped 81px short of the bottom, so the two links
   floated in the middle of a box within a box.

   The card is a Divi Library layout shared with the directory grid, where
   the white card IS the design (1:2800). So it is undressed here, in the
   curated band only, rather than changed in the layout. */
.pwd-ch-curated .cms-card {
	background: transparent !important;
	border: 0 !important;
	border-radius: 0 !important;
	box-shadow: none !important;
	min-height: 0 !important;
}
.pwd-ch-curated .cms-card:hover { transform: none; box-shadow: none !important; }

/* ...and it fills the column, so "View Condition" lands on the panel's own
   bottom edge the way 8:1660 draws it. */
.pwd-ch-curated > .et_pb_column > .cms-results,
.pwd-ch-curated > .et_pb_column > .cms-results > .cms-list { flex: 1 1 auto; }
.pwd-ch-curated > .et_pb_column > .cms-results > .cms-list { display: flex !important; flex-direction: column; }
.pwd-ch-curated > .et_pb_column > .cms-results .cms-card,
.pwd-ch-curated > .et_pb_column > .cms-results .cms-card > div,
.pwd-ch-curated > .et_pb_column > .cms-results .cms-card .et_pb_section,
.pwd-ch-curated > .et_pb_column > .cms-results .cms-card .et_pb_row,
.pwd-ch-curated > .et_pb_column > .cms-results .cms-card .et_pb_column {
	display: flex; flex-direction: column; flex: 1 1 auto;
}
.pwd-ch-curated .pwd-ch-links { margin-top: auto !important; }

/* The story mini-cards keep their own white card -- 1:2984 really does
   draw one -- so the rule above is put back for them. */
.pwd-ch-stories .cms-card {
	background: var(--pw-white) !important;
	border: 1px solid var(--pw-stroke) !important;
	border-radius: 12px !important;
}

/* --- pwd-featured-empty: the featured row hides when it drew nothing -----------
   PW Featured Entry returns nothing when it stands down on a filtered
   listing, or when the narrowed set is empty -- and the Divi row around
   it keeps its 32px of padding, its fill and its "Featured Story"
   eyebrow, so the page carried an empty lavender box. Check 49: a module
   that renders nothing still leaves a section that paints. */
.et_pb_section:has(> .et_pb_row.pwd-fs-card):not(:has(.cms-card)) { display: none !important; }


/* =========================================================================
   THE BLOG  —  Figma "For Hamza's Team" file 14oEdpytJKMVIJv3CXSJcJ,
   page "Blogs" (222:2305).

   Listing   278:1915 blog-main       1440 x 2396, ground #FAF9FD
   Article   278:2053 single-blog     1440 x 2483, ground #FFFFFF
   Card      229:571 default / 229:545 hover

   Every number below carries the node it was read from. Nothing here was
   measured off a screenshot: each band went through get_design_context.

   What is NOT here, deliberately: every band's background, padding and width,
   and every word on the page. Those are Divi section, row and module settings
   so the client can change them in the Visual Builder. This file carries only
   what a Divi module cannot say about itself — what a card does about the
   card beside it, what a photograph does about its own proportions, and what
   a list does about a font it never set.
   ========================================================================= */

/* --- the filter bar (278:1944) -------------------------------------------
   1440 x 94, padding 16/100. The row is space-between: the two controls left
   at the bottom edge, the count right. `align-items: flex-end` and not
   center, because the two fields are a 13px label over a 40px field and the
   count is one 14px line -- centred, the count would float above the field
   it is counting. */
.pwd-bbar {
	display: flex;
	align-items: flex-end;
	justify-content: space-between;
	gap: 24px;
	width: 100%;
	margin: 0;
}
.pwd-bbar__group {
	display: flex;
	align-items: flex-end;
	gap: 16px;                                    /* 278:1946 */
	flex-wrap: nowrap;
	min-width: 0;
}
/* 278:1947 is a 220 column, 278:1953 a 160 one, both with 6 between the
   label and the field. A flex BASIS rather than a width, so a third control
   the client adds shares the row instead of wrapping under it -- a flex item
   wraps before it shrinks, which is how the investigator bar's search box
   once fell to 328px with every rule still matching. */
.pwd-bbar__field {
	display: flex;
	flex-direction: column;
	gap: 6px;
	min-width: 0;
}
.pwd-bbar__field--audience { flex: 0 1 220px; }
.pwd-bbar__field--sort     { flex: 0 1 160px; }

.pwd-bbar__label {                                /* 278:1948 */
	font-family: "Plus Jakarta Sans", sans-serif;
	font-size: 13px;
	font-weight: 600;
	line-height: normal;
	color: var(--pw-dark);
	margin: 0;
	white-space: nowrap;
}
.pwd-bbar__control {                              /* 278:1949 */
	position: relative;
	display: flex;
	align-items: center;
	height: 40px;
	padding: 0 14px;
	background: var(--pw-white);
	border: 1px solid var(--pw-stroke);
	border-radius: 8px;
}
/* The chevron is printed before the select so the script can move it into
   the button it builds; until then it sits at the field's right edge. */
.pwd-bbar__control > .pwd-i {
	position: absolute;
	right: 14px;
	width: 10px;
	height: 6px;
	color: var(--pw-dark);
	pointer-events: none;
}
.pwd-bbar__control.is-enhanced > .pwd-i { position: static; }
.pwd-bbar__control .pwd-select__btn {
	font-size: 14px;
	font-weight: 400;
	color: var(--pw-dark);
}
/* With the script off the native select is the control, and it has to look
   like the field rather than like a browser widget sitting inside one. */
.pwd-bbar__control .pwd-select__native {
	appearance: none;
	-webkit-appearance: none;
	width: 100%;
	height: 100%;
	padding: 0 24px 0 0;
	background: none;
	border: 0;
	font-family: "Plus Jakarta Sans", sans-serif;
	font-size: 14px;
	font-weight: 400;
	color: var(--pw-dark);
	cursor: pointer;
}
.pwd-bbar__count {                                /* 278:1960 */
	margin: 0;
	font-family: "Plus Jakarta Sans", sans-serif;
	font-size: 14px;
	font-weight: 500;
	line-height: normal;
	color: var(--pw-grey-2);
	white-space: nowrap;
}
/* Divi gives every row a stacking context, so a menu's z-index only ever
   competes inside its own row -- which is how the stories hub's sort list
   opened behind a card photograph. Raised on the bar itself rather than on
   the page, because this bar can be placed anywhere. */
.pwd-bbar { position: relative; z-index: 20; }
.pwd-bbar .pwd-select__menu { z-index: 40; }
.pwd-bbar__apply { display: flex; align-items: flex-end; }

/* --- the grid (278:1961) --------------------------------------------------
   grid-inner is 1240 x 540 and lays out as a real CSS grid: 2 columns,
   3 rows, 24 both ways, card 608 x 164. */
.pwd-bgrid {
	display: grid;
	gap: var(--pwd-b-gap, 24px);
	width: 100%;
	margin: 0;
}
.pwd-bgrid--cols-1 { grid-template-columns: minmax(0, 1fr); }
.pwd-bgrid--cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.pwd-bgrid--cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.pwd-bgrid--cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.pwd-bgrid--cols-auto { grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); }

/* --- one card (229:571, hover 229:545) ------------------------------------ */
.pwd-bgrid .pwd-blogcard {
	position: relative;
	display: block;
	height: var(--pwd-b-card-h, 164px);
	padding: 16px;
	background: var(--pw-white);
	border: 1px solid var(--pw-stroke);
	border-radius: 16px;
	box-shadow: var(--pw-shadow);                 /* gray/5 */
	overflow: hidden;
	transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.pwd-bgrid .pwd-blogcard:hover,
.pwd-bgrid .pwd-blogcard:focus-within {
	border-color: var(--pw-lav-100);              /* 229:545 */
	box-shadow: 0 2px 10px -4px rgba(107, 51, 235, 0.15);
}
.pwd-bgrid .pwd-blogcard:hover .pwd-bc__link,
.pwd-bgrid .pwd-blogcard:focus-within .pwd-bc__link { color: var(--pw-primary); }

/* Divi's front-end script wraps every rendered Library layout in
   <div id="et-boc"><div class="et-l"> AFTER the page loads, so a rule written
   against the response stops matching the moment the page finishes loading.
   Those two wrappers are unstyled blocks and absorb the height before the
   column can see it -- which is why the chain is stated all the way down. */
.pwd-blogcard > div,
.pwd-blogcard .et-l,
.pwd-blogcard .et_builder_inner_content,
.pwd-blogcard .et_pb_section,
.pwd-blogcard .et_pb_row { height: 100%; }

.pwd-blogcard .et_pb_section,
.pwd-blogcard .et_pb_row,
.pwd-blogcard .et_pb_column,
.pwd-blogcard .et_pb_module {
	background: none;
	margin: 0 !important;
	padding: 0 !important;
	max-width: none !important;
}
.pwd-blogcard .et_pb_row {
	display: flex;
	align-items: stretch;
	gap: 16px;                                    /* 229:571 */
	width: 100% !important;
}
/* Divi clears a row with ::before and ::after. In a flex row each becomes a
   flex item -- zero wide, and each still takes a gap -- so a 200px column
   measures 200 and the content column loses 32. */
.pwd-blogcard .et_pb_row::before,
.pwd-blogcard .et_pb_row::after { display: none !important; }

.pwd-blogcard .et_pb_column {
	float: none !important;
	width: auto !important;
}
.pwd-blogcard .et_pb_column:first-child {
	flex: 0 0 var(--pwd-b-photo-w, 200px);
	width: var(--pwd-b-photo-w, 200px) !important;
}
.pwd-blogcard .et_pb_column:last-child {
	flex: 1 1 auto;
	min-width: 0;
	display: flex;
	flex-direction: column;
	gap: 8px;                                     /* 229:574 */
}

/* The crop has to reach the WRAPPER, not just the image. Divi gives a linked
   image's <a> and its .et_pb_image_wrap an explicit height taken from the
   file's own proportions, so cropping the <img> alone leaves the wrapper at
   the photograph's natural height and the card follows it. */
.pwd-blogcard .et_pb_image { width: 100%; }
.pwd-blogcard .et_pb_image .et_pb_image_wrap,
.pwd-blogcard .et_pb_image > a {
	display: block;
	width: 100%;
	height: var(--pwd-b-photo-h, 132px);
	border-radius: 12px;                          /* 229:572 */
	overflow: hidden;
}
.pwd-blogcard .et_pb_image img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	/* Above centre: these are overwhelmingly photographs of people, and a
	   face sits in the upper half of a frame. */
	object-position: center 35%;
	border-radius: 12px;
}

.pwd-bc__title {                                  /* 229:575 */
	margin: 0 !important;
	padding: 0 !important;
	font-family: "Plus Jakarta Sans", sans-serif;
	font-size: 16px;
	font-weight: 700;
	line-height: 1.25;
	color: var(--pw-dark);
	display: -webkit-box;
	-webkit-line-clamp: var(--pwd-b-title-lines, 2);
	-webkit-box-orient: vertical;
	overflow: hidden;
	/* Reserved rather than natural. A one-line title otherwise leaves the
	   summary below it a different number of lines from the card beside it,
	   and the date and arrow then land at two different heights in one row --
	   which is the whole thing a listing's CSS exists to stop. */
	height: calc(var(--pwd-b-title-lines, 2) * 1.25em);
}
.pwd-bc__link {
	color: inherit;
	text-decoration: none;
	transition: color 0.15s ease;
}
/* One real link, stretched over the whole card: the arrow is decorative, so
   a screen reader gets the title and nothing repeated. */
.pwd-bc__link::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 1;
}
.pwd-bc__sum {                                    /* 229:576 */
	margin: 0 !important;
	padding: 0 !important;
	font-family: "Plus Jakarta Sans", sans-serif;
	font-size: 13px;
	font-weight: 400;
	line-height: 1.4;
	color: var(--pw-grey-1);
	display: -webkit-box;
	-webkit-line-clamp: var(--pwd-b-sum-lines, 2);
	-webkit-box-orient: vertical;
	overflow: hidden;
	height: calc(var(--pwd-b-sum-lines, 2) * 1.4em);
}
.pwd-bc__foot {                                   /* 229:577 */
	display: flex;
	align-items: center;
	justify-content: space-between;
	width: 100%;
	margin-top: auto !important;
}
.pwd-bc__date {                                   /* 229:580 */
	font-family: "Plus Jakarta Sans", sans-serif;
	font-size: 11px;
	font-weight: 400;
	line-height: normal;
	color: var(--pw-grey-2);
}
.pwd-bc__arrow {                                  /* 229:581 Icon Button */
	position: relative;
	z-index: 2;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 28px;
	height: 28px;
	border-radius: 100px;
	color: var(--pw-dark);
	transition: background 0.15s ease, color 0.15s ease;
}
.pwd-bc__arrow .pwd-i { width: 12px; height: 12px; }
.pwd-bgrid .pwd-blogcard:hover .pwd-bc__arrow {
	background: var(--pw-lav-50);
	color: var(--pw-primary);
}

/* Divi puts its own text styling on a Text module's inner wrapper. */
.pwd-blogcard .et_pb_text_inner { margin: 0; padding: 0; }
.pwd-blogcard .et_pb_text_inner > *:last-child { margin-bottom: 0; }

/* --- nothing matched ------------------------------------------------------
   A filter that reaches zero with no message and no link out leaves editing
   the address bar as the only escape, which nobody does. */
.pwd-bgrid-empty {
	padding: 32px 0 8px;
	text-align: center;
	font-family: "Plus Jakarta Sans", sans-serif;
}
.pwd-bgrid-empty p { margin: 0 0 16px; font-size: 16px; color: var(--pw-grey-1); }

/* --- the featured card (278:1927) -----------------------------------------
   1240 x 360, white on a #EFE8FD hairline, corners 24, and it CLIPS: the
   photograph inside it is drawn 440 tall against a 360 card. */
.pwd-bfeat .pwd-blogcard {
	position: relative;
	display: block;
	height: 360px;
	padding: 0;
	background: var(--pw-white);
	border: 1px solid var(--pw-lav-100);
	border-radius: 24px;
	overflow: hidden;
	box-shadow: none;
}
.pwd-bfeat .pwd-blogcard:hover { border-color: var(--pw-lav-200); }
.pwd-bfeat .et_pb_row {
	display: flex;
	align-items: stretch;
	gap: 40px;                                    /* 278:1927 */
	height: 100%;
}
.pwd-bfeat .et_pb_column:first-child {
	flex: 0 0 660px;                              /* 278:1928 */
	width: 660px !important;
}
.pwd-bfeat .et_pb_column:last-child {
	flex: 1 1 auto;
	min-width: 0;
	display: flex;
	flex-direction: column;
	justify-content: center;
	gap: 16px;                                    /* 278:1929 */
	padding: 40px 40px 40px 0 !important;
}
.pwd-bfeat .et_pb_image,
.pwd-bfeat .et_pb_image .et_pb_image_wrap,
.pwd-bfeat .et_pb_image > a {
	display: block;
	width: 100%;
	height: 100%;
	border-radius: 0;
	overflow: hidden;
}
.pwd-bfeat .et_pb_image img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center;
	border-radius: 0;
}
.pwd-bf__title {                                  /* 278:1930 */
	margin: 0 !important;
	padding: 0 !important;
	font-family: "Plus Jakarta Sans", sans-serif;
	font-size: 28px;
	font-weight: 800;
	line-height: 1.3;
	color: var(--pw-dark);
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}
.pwd-bf__sum {                                    /* 278:1931 */
	margin: 0 !important;
	padding: 0 !important;
	font-family: "Plus Jakarta Sans", sans-serif;
	font-size: 15px;
	font-weight: 400;
	line-height: 1.6;
	color: var(--pw-grey-1);
	display: -webkit-box;
	-webkit-line-clamp: 3;
	-webkit-box-orient: vertical;
	overflow: hidden;
}
.pwd-bf__meta {                                   /* 278:1932 */
	display: flex;
	align-items: center;
	gap: 24px;
	padding: 8px 0 !important;
}
.pwd-bf__author {                                 /* 278:1933 */
	display: flex;
	align-items: center;
	gap: 12px;
}
.pwd-bf__avatar {                                 /* 278:1934 */
	width: 40px;
	height: 40px;
	border-radius: 50%;
	object-fit: cover;
	display: block;
	flex: 0 0 40px;
}
.pwd-bf__who { display: flex; flex-direction: column; gap: 2px; }
.pwd-bf__name {                                   /* 278:1936 */
	font-family: "Plus Jakarta Sans", sans-serif;
	font-size: 14px;
	font-weight: 700;
	line-height: normal;
	color: var(--pw-dark);
	white-space: nowrap;
}
.pwd-bf__role {                                   /* 278:1937 */
	font-family: "Plus Jakarta Sans", sans-serif;
	font-size: 12px;
	font-weight: 400;
	font-style: normal;
	line-height: normal;
	color: var(--pw-grey-2);
	white-space: nowrap;
}
.pwd-bf__sep {                                    /* 278:1938 */
	flex: 0 0 1px;
	width: 1px;
	height: 32px;
	background: var(--pw-stroke);
	display: block;
}
.pwd-bf__date {                                   /* 278:1941 */
	font-family: "Plus Jakarta Sans", sans-serif;
	font-size: 13px;
	font-weight: 400;
	line-height: normal;
	color: var(--pw-grey-1);
	white-space: nowrap;
}
/* The export carries an author on three of the fifty-three posts and a
   photograph on none. A card that always drew the row would print the same
   placeholder face fifty times; with no author the date stands alone, which
   is what the earlier frame (228:1770) draws. */
.pwd-blogcard--noauthor .pwd-bf__author,
.pwd-blogcard--noauthor .pwd-bf__sep { display: none; }

/* 278:1943 -- Medium Primary: 36 tall, min 112 wide, 16 of side padding, the
   Gradient/1 fill, a 1px light edge on TOP only and the button shadow. */
.pwd-blogcard .et_pb_button.pwd-bf__cta,
.pwd-blogcard .et_pb_button.pwd-bf__cta:hover {
	display: inline-flex !important;
	align-items: center;
	justify-content: center;
	gap: 8px;
	height: 36px;
	min-width: 112px;
	padding: 0 16px !important;
	background-image: var(--pw-gradient) !important;
	background-color: transparent !important;
	border: 0 !important;
	border-top: 1px solid rgba(255, 255, 255, 0.2) !important;
	border-radius: 100px !important;
	box-shadow: var(--pw-btn-shadow);
	font-family: "Plus Jakarta Sans", sans-serif !important;
	font-size: 14px !important;
	font-weight: 500 !important;
	line-height: normal !important;
	letter-spacing: 0 !important;
	color: var(--pw-white) !important;
	text-transform: none;
}
/* Divi draws a button's icon in an absolutely positioned ::after and slides
   it in on hover. The frame simply has it beside the words, so it is put
   back in the flow -- otherwise it lands on top of its own label and reads
   as a strikethrough the moment the padding is taken out. */
.pwd-blogcard .et_pb_button.pwd-bf__cta::after {
	position: static !important;
	opacity: 1 !important;
	margin: 0 0 0 2px !important;
	line-height: 1 !important;
	font-size: 14px !important;
}
.pwd-blogcard .et_pb_button.pwd-bf__cta::before { display: none !important; }
/* The card carries one stretched link already; the button is the second and
   must sit above it to stay clickable in its own right. */
.pwd-blogcard .et_pb_button_module_wrapper { position: relative; z-index: 2; }

/* --- the page links (278:2030) ------------------------------------------- */
.pwd-bpages {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 8px;                                     /* 278:2032 */
	width: 100%;
}
.pwd-bpages__page,
.pwd-bpages__arrow {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	border-radius: 100px;
	font-family: "Plus Jakarta Sans", sans-serif;
	font-size: 14px;
	font-weight: 600;
	line-height: normal;
	color: var(--pw-grey-1);
	text-decoration: none;
	transition: background 0.15s ease, color 0.15s ease;
}
.pwd-bpages__page { padding: 12px 16px; }         /* 278:2037 */
.pwd-bpages__page:hover { background: var(--pw-lav-50); color: var(--pw-primary); }
.pwd-bpages__page.is-current {                    /* 278:2035 */
	background: var(--pw-primary);
	color: var(--pw-white);
	font-weight: 700;
}
.pwd-bpages__arrow {                              /* 278:2033 / 278:2049 */
	padding: 12px;
	border: 1px solid var(--pw-stroke-soft);
	color: var(--pw-grey-2);
}
.pwd-bpages__arrow.is-next { color: var(--pw-dark); }
.pwd-bpages__arrow:hover { border-color: var(--pw-primary); color: var(--pw-primary); }
.pwd-bpages__arrow.is-off { opacity: 0.4; pointer-events: none; }
.pwd-bpages__gap {                                /* 278:2045 */
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 15px;
	height: 42px;
	font-family: "Plus Jakarta Sans", sans-serif;
	font-size: 14px;
	font-weight: 600;
	color: var(--pw-grey-2);
}

/* --- the listing's hero (278:1916) ---------------------------------------
   The band is white and the wave is the SECTION's background image, so both
   are Divi settings. Only its size and where it sits are stated here: Divi's
   own background controls cannot express "905 wide, hanging off the right
   edge and below the band". */
.pwd-bl-hero {
	background-repeat: no-repeat !important;
	background-size: 905px auto !important;
	background-position: right -95px top 145px !important;
}
.pwd-bl-title {                                   /* 278:1920 */
	margin: 0 !important;
	padding: 0 !important;
	font-family: "Plus Jakarta Sans", sans-serif;
	font-size: 48px;
	font-weight: 700;
	line-height: 1.2;
	letter-spacing: 0;
	color: var(--pw-dark);
	text-transform: capitalize;
}
.pwd-bl-intro {                                   /* 278:1921 */
	margin: 0 !important;
	padding: 0 !important;
	font-family: "Plus Jakarta Sans", sans-serif;
	font-size: 18px;
	font-weight: 400;
	line-height: 1.5;
	color: var(--pw-grey-1);
}
/* 278:1923 -- Large Outline: 44 tall, min 120 wide, 20 of side padding, a
   #E1D5FB hairline, label 16 Medium in Lavender/600. */
.pwd-bl-sub.et_pb_button,
.pwd-bl-sub.et_pb_button:hover {
	display: inline-flex !important;
	align-items: center;
	justify-content: center;
	gap: 8px;
	height: 44px;
	min-width: 120px;
	padding: 0 20px !important;
	background: transparent !important;
	background-image: none !important;
	border: 1px solid var(--pw-lav-200) !important;
	border-radius: 100px !important;
	font-family: "Plus Jakarta Sans", sans-serif !important;
	font-size: 16px !important;
	font-weight: 500 !important;
	line-height: normal !important;
	letter-spacing: 0 !important;
	color: var(--pw-primary) !important;
	text-transform: none;
}
.pwd-bl-sub.et_pb_button::after,
.pwd-bl-sub.et_pb_button::before { display: none !important; }
.pwd-bl-sub.et_pb_button:hover { background: var(--pw-lav-50) !important; }

/* --- the article's hero (278:2054) ---------------------------------------- */
.pwd-bs-hero {
	background-repeat: no-repeat !important;
	background-size: 734px auto !important;
	background-position: right -130px top -60px !important;
}
.pwd-bs-herorow {
	display: flex;
	align-items: flex-start;
	gap: 40px;                                    /* 278:2055 */
}
.pwd-bs-herorow::before,
.pwd-bs-herorow::after { display: none !important; }
.pwd-bs-herorow > .et_pb_column {
	float: none !important;
	margin: 0 !important;
}
.pwd-bs-herorow > .et_pb_column:first-child {     /* 278:2057 */
	flex: 1 1 auto;
	min-width: 0;
	display: flex;
	flex-direction: column;
	gap: 24px;
	padding-bottom: 48px !important;
}
.pwd-bs-herorow > .et_pb_column:last-child {      /* 278:2067 */
	flex: 0 0 620px;
	width: 620px !important;
	display: flex;
	align-items: center;
	justify-content: center;
}
.pwd-bs__back {                                   /* 278:2059 */
	font-family: "Plus Jakarta Sans", sans-serif;
	font-size: 14px;
	font-weight: 600;
	line-height: 1.5;
	color: var(--pw-primary);
	text-decoration: none;
}
.pwd-bs__back:hover { text-decoration: underline; }
.pwd-bs__title {                                  /* 278:2061 */
	margin: 0 !important;
	padding: 0 !important;
	font-family: "Plus Jakarta Sans", sans-serif;
	font-size: 42px;
	font-weight: 700;
	line-height: 1.2;
	color: var(--pw-dark);
	text-transform: capitalize;
}
.pwd-bs__sub {                                    /* 278:2066 */
	margin: 0 !important;
	padding: 0 !important;
	font-family: "Plus Jakarta Sans", sans-serif;
	font-size: 14px;
	font-weight: 500;
	line-height: 1.5;
	color: var(--pw-grey-1);
}
/* 278:2068 is a 331 circle with a 6.49 white edge, holding a 272.6 circle
   inset 22.72 -- so the white is a ring and not a border. Stated as a ring
   because a border would eat the photograph's own diameter. */
.pwd-bs__photo { width: 331px; margin: 0 auto; }
.pwd-bs__photo .et_pb_image_wrap {
	display: flex !important;
	align-items: center;
	justify-content: center;
	width: 331px;
	height: 331px;
	background: var(--pw-white);
	border-radius: 50%;
	overflow: hidden;
}
.pwd-bs__photo img {
	width: 272.6px !important;
	height: 272.6px !important;
	max-width: none;
	object-fit: cover;
	border-radius: 50%;
	display: block;
}

/* --- the article's meta bar (278:2070) ------------------------------------ */
.pwd-bs-meta {
	border-bottom: 1px solid var(--pw-stroke);
	box-shadow: 0 2px 10px -4px rgba(107, 51, 235, 0.15);
	position: relative;
	z-index: 1;
}
.pwd-bs__pills {                                  /* 278:2071 */
	display: flex;
	align-items: center;
	gap: 12px;
	padding: 16px 0 !important;
	margin: 0 !important;
}
.pwd-bs__pill {
	display: inline-flex;
	align-items: center;
	padding: 4px 8px;
	border-radius: 100px;
	font-family: "Plus Jakarta Sans", sans-serif;
	font-size: 14px;
	font-weight: 500;
	line-height: 1.5;
}
.pwd-bs__pill--aud {                              /* 278:2072 */
	background: var(--pw-lav-50);
	color: var(--pw-primary);
}
.pwd-bs__pill--date {                             /* 278:2074 */
	background: #F1F3F7;                          /* Neutral/Grey 6 */
	color: var(--pw-grey-1);
}
/* The frame carries a Share control here and turns it OFF (278:2076 is
   visible:false), so this screen deliberately has none. */

/* --- the article body (278:2081) ------------------------------------------
   1240 wide, no sidebar, 24 between blocks. */
.pwd-bs__prose { font-family: "Plus Jakarta Sans", sans-serif; }
.pwd-bs__prose .et_pb_text_inner > *:first-child { margin-top: 0; }
.pwd-bs__prose p,
.pwd-bs__prose li {                               /* 278:2083 */
	font-size: 18px;
	font-weight: 500;
	line-height: 1.5;
	color: var(--pw-grey-1);
}
.pwd-bs__prose p { margin: 0 0 24px; }
.pwd-bs__prose h2,
.pwd-bs__prose h3,
.pwd-bs__prose h4,
.pwd-bs__prose h5 {                               /* 278:2085 */
	font-family: "Plus Jakarta Sans", sans-serif;
	font-weight: 700;
	line-height: 1.4;
	color: var(--pw-dark);
	/* Divi gives every heading 10px of padding-bottom, which nobody measures
	   and which lands under each of the six headings on a long article. */
	padding: 0 !important;
	margin: 24px 0 16px;
	text-transform: none;
}
.pwd-bs__prose h2 { font-size: 24px; }
.pwd-bs__prose h3 { font-size: 20px; }
.pwd-bs__prose h4,
.pwd-bs__prose h5 { font-size: 18px; }
.pwd-bs__prose ul,
.pwd-bs__prose ol { margin: 0 0 24px; padding-left: 22px; }
.pwd-bs__prose li { margin-bottom: 8px; }
.pwd-bs__prose a { color: var(--pw-primary); text-decoration: underline; }
.pwd-bs__prose img { max-width: 100%; height: auto; border-radius: 16px; }
/* 278:2088 -- a 4px Lavender/600 rule, 24 of left padding, and Spectral
   italic at 22/140%. Divi styles a blockquote with a grey bar and a grey
   background, both of which have to go. */
.pwd-bs__prose blockquote {
	margin: 0 0 24px !important;
	padding: 12px 16px 12px 24px !important;
	background: none !important;
	border: 0 !important;
	border-left: 4px solid var(--pw-primary) !important;
	border-radius: 0;
}
.pwd-bs__prose blockquote p,
.pwd-bs__prose blockquote {
	font-family: Spectral, Georgia, serif;
	font-size: 22px;
	font-weight: 600;
	font-style: italic;
	line-height: 1.4;
	color: var(--pw-dark);
}
.pwd-bs__prose blockquote p { margin: 0; }

/* --- below 1240 ----------------------------------------------------------
   The Figma has no tablet or phone frame for either screen, so every number
   below is a decision and is written down as one: the grid steps 2 -> 1, the
   two heroes stack, and the wide cards give up their fixed columns. */
@media (max-width: 1100px) {
	.pwd-bfeat .et_pb_column:first-child { flex: 0 0 46%; width: 46% !important; }
	.pwd-bs-herorow > .et_pb_column:last-child { flex: 0 0 44%; width: 44% !important; }
	.pwd-bs__photo,
	.pwd-bs__photo .et_pb_image_wrap { width: 100%; max-width: 331px; }
}
@media (max-width: 900px) {
	.pwd-bgrid--cols-2,
	.pwd-bgrid--cols-3,
	.pwd-bgrid--cols-4 { grid-template-columns: minmax(0, 1fr); }
	.pwd-bl-hero { background-size: 620px auto !important; background-position: right -120px top 190px !important; }
	.pwd-bs-hero { background-size: 520px auto !important; }
	/* The featured card stops being a row: 660 of photograph beside 540 of
	   text has nowhere to go, and a fixed 360 height would clip the words. */
	.pwd-bfeat .pwd-blogcard { height: auto; }
	.pwd-bfeat .et_pb_row { flex-direction: column; gap: 0; }
	.pwd-bfeat .et_pb_column:first-child { flex: 0 0 auto; width: 100% !important; }
	.pwd-bfeat .et_pb_image,
	.pwd-bfeat .et_pb_image .et_pb_image_wrap,
	.pwd-bfeat .et_pb_image > a { height: 240px; }
	.pwd-bfeat .et_pb_column:last-child { padding: 24px !important; }
	.pwd-bs-herorow { flex-direction: column; }
	.pwd-bs-herorow > .et_pb_column:last-child { flex: 0 0 auto; width: 100% !important; }
	.pwd-bs-herorow > .et_pb_column:first-child { padding-bottom: 24px !important; }
	.pwd-bs__title { font-size: 34px; }
	.pwd-bl-title { font-size: 38px; }
}
@media (max-width: 700px) {
	.pwd-bbar { flex-direction: column; align-items: stretch; gap: 12px; }
	.pwd-bbar__group { flex-wrap: wrap; }
	.pwd-bbar__field--audience,
	.pwd-bbar__field--sort { flex: 1 1 160px; }
	.pwd-bbar__count { text-align: right; }
	/* A 200px photograph beside 13px copy leaves the summary nowhere to go. */
	.pwd-bgrid .pwd-blogcard { height: auto; }
	.pwd-blogcard .et_pb_row { flex-direction: column; }
	.pwd-blogcard .et_pb_column:first-child { flex: 0 0 auto; width: 100% !important; }
	.pwd-blogcard .et_pb_image .et_pb_image_wrap,
	.pwd-blogcard .et_pb_image > a { height: 180px; }
	.pwd-bc__title,
	.pwd-bc__sum { height: auto; }
	.pwd-bs__photo,
	.pwd-bs__photo .et_pb_image_wrap { max-width: 260px; height: auto; }
	.pwd-bs__photo .et_pb_image_wrap { height: 260px; }
	.pwd-bs__photo img { width: 214px !important; height: 214px !important; }
	.pwd-bs__prose p, .pwd-bs__prose li { font-size: 16px; }
	.pwd-bs__prose h2 { font-size: 21px; }
	.pwd-bs__prose blockquote p { font-size: 19px; }
	.pwd-bpages { flex-wrap: wrap; }
}
@media (max-width: 480px) {
	.pwd-bl-hero,
	.pwd-bs-hero { background-image: none !important; }
	.pwd-bl-title { font-size: 30px; }
	.pwd-bs__title { font-size: 27px; }
	.pwd-bf__meta { flex-wrap: wrap; gap: 12px; }
	.pwd-bf__sep { display: none; }
}



/* =========================================================================
   THE BLOG, second pass — what the first render measured wrong.

   Six of the seven below are the same shape of fault this project keeps
   meeting: a rule that is present, valid, served and current, and losing to
   something else. Each carries what it was measured at.
   ========================================================================= */

/* A CSS border eats the box it is drawn on; a Figma stroke does not.
   229:571 is 608 x 164 with 16 of padding and a 1px stroke drawn INSIDE, so
   its content is 132 -- and border-box + a real border gave 130, which is
   the two pixels the footer overflowed by. An inset shadow is the same
   hairline and costs no width. Measured: content 130 -> 132. */
.pwd-bgrid .pwd-blogcard {
	border: 0;
	box-shadow: inset 0 0 0 1px var(--pw-stroke), var(--pw-shadow);
}
.pwd-bgrid .pwd-blogcard:hover,
.pwd-bgrid .pwd-blogcard:focus-within {
	box-shadow: inset 0 0 0 1px var(--pw-lav-100), 0 2px 10px -4px rgba(107, 51, 235, 0.15);
}
.pwd-bfeat .pwd-blogcard {
	border: 0;
	box-shadow: inset 0 0 0 1px var(--pw-lav-100);
}
.pwd-bfeat .pwd-blogcard:hover { box-shadow: inset 0 0 0 1px var(--pw-lav-200); }

/* The auto margin has to be on the FLEX CHILD, and the flex child is the
   Divi module, not the span inside it. On the inner span it did nothing at
   all, and the date and arrow sat wherever the summary left them -- below
   the card's own bottom edge on three of six cards, clipped away entirely
   by the overflow that keeps the card square. Measured: the footer 22px
   BELOW the card on cards 1, 2 and 5, and 2, 2 and 27 above it on the rest. */
.pwd-bc__footmod { margin-top: auto !important; }
.pwd-bc__foot { margin-top: 0 !important; }

/* Divi gives the last module in a column a bottom margin, and these four are
   the last module in theirs. Measured: the featured band 520 tall against
   the frame's 480, all 40 of it under a card that was exactly 360. */
.pwd-bfeat,
.pwd-bgrid,
.pwd-bbar,
.pwd-bpages,
.pwd-bgrid-empty { margin: 0 !important; }

/* The listbox button is a flex item and shrank to its own text, so a 160px
   field showed "Newest ..." in 64px of a 132px opening. Measured: the button
   82 wide inside a control 160 wide. */
.pwd-bbar__control .pwd-select__btn {
	flex: 1 1 auto;
	min-width: 0;
}
.pwd-bbar__control .pwd-select__value { flex: 1 1 auto; }

/* One row, whatever it holds. */
.pwd-bpages {
	flex-wrap: nowrap;
	padding: 0 !important;
	line-height: 1;
}
.pwd-bpages__page,
.pwd-bpages__arrow,
.pwd-bpages__gap { flex: 0 0 auto; }

/* Divi puts `padding-bottom: 1em` on every p on the site, from a selector
   carrying an id, so the article's 24 between blocks came out at 24 + 18.
   The heading padding is the same rule's other half -- 10px under each of a
   long article's six headings, which nobody measures. */
.pwd-bs__prose p,
.pwd-bs__prose ul,
.pwd-bs__prose ol,
.pwd-bs__prose h1,
.pwd-bs__prose h2,
.pwd-bs__prose h3,
.pwd-bs__prose h4,
.pwd-bs__prose h5,
.pwd-bs__prose h6,
.pwd-bs__prose blockquote p { padding-bottom: 0 !important; }
.pwd-bs__prose li { padding-bottom: 0 !important; }

/* 278:1924 puts the wave at inset 10.21% from the top and -10.27% past the
   right edge of a 1440 x 480 band -- so 49 down and 148 out, 905 wide. It
   was reading `right -95px top 145px`, which put it on the band's bottom
   corner with most of it below the fold. */
.pwd-bl-hero {
	background-size: 905px 612px !important;
	background-position: right -148px top 49px !important;
}



/* =========================================================================
   THE BLOG, third pass — the wrapper class was the wrong one.

   The four blog modules were wrapped in .pwd-screen to inherit its font and
   its list resets. .pwd-screen is written for a whole hand-built SCREEN and
   carries `background: var(--pw-page-bg); padding-bottom: 40px` -- so every
   one of them painted the page colour behind itself and put 40px of nothing
   under itself. Measured: the featured band 520 tall against the frame's
   480, all 40 of it under a card that was exactly 360; the filter bar 102
   tall against 62; and the two controls shrunk to 154 and 112 against the
   frame's 220 and 160.

   They carry .pwd-blogwrap now, which is this and nothing else.
   ========================================================================= */
.pwd-blogwrap {
	box-sizing: border-box;
	width: 100%;
	margin: 0 !important;
	padding: 0;
	background: none;
	font-family: "Plus Jakarta Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
	color: var(--pw-dark);
	-webkit-font-smoothing: antialiased;
}
.pwd-blogwrap *,
.pwd-blogwrap *::before,
.pwd-blogwrap *::after { box-sizing: border-box; }
.pwd-blogwrap p,
.pwd-blogwrap h1,
.pwd-blogwrap h2,
.pwd-blogwrap h3,
.pwd-blogwrap h4 { margin: 0; padding: 0; }

/* Divi's own `ul { padding: 0 0 23px 1em }` reaches the listbox wherever it
   is placed. Stated on the component rather than on the page, because a page
   scope is a promise the component will never be placed anywhere else -- and
   that promise has been broken twice on this site already. */
.pwd-blogwrap .pwd-select__menu,
.pwd-blogwrap .pwd-select__opt {
	list-style: none !important;
	list-style-type: none !important;
}
.pwd-blogwrap .pwd-select__opt::marker { content: none; }
.pwd-blogwrap .pwd-select__opt::before { content: none !important; display: none !important; }

/* The reset above is two classes and !important, and it was beating the one
   rule that has to win. Measured: margin-top computed 0px, so the date and
   the arrow sat 28 above the card's bottom edge instead of the frame's 16 --
   the same on all six cards, which is what made it look deliberate. */
.pwd-blogcard .et_pb_module.pwd-bc__footmod { margin-top: auto !important; }

/* Divi runs wpautop over a Text module's content, so a bare <span> comes
   back wrapped in a <p> -- and Divi gives every p on the site
   `padding-bottom: 1em` from a selector carrying an id. Twelve pixels under
   the card's footer row and under the featured card's author row, from a
   paragraph nobody wrote. */
.pwd-blogcard .et_pb_text_inner p {
	margin: 0 !important;
	padding: 0 !important;
}
.pwd-blogcard .et_pb_text_inner > p:empty { display: none; }



/* =========================================================================
   THE BLOG, fourth pass — two numbers that fell out of leftovers.
   ========================================================================= */

/* 278:1947 is a 220 column and 278:1953 a 160 one, and both were rendering
   at 0.7 of that: 154 and 112. Every rule matched and applied. The cause is
   the sizing algorithm, not the cascade -- the group around them is sized to
   its own content, and a flex item with `flex-shrink: 1` contributes its
   CONTENT width to that, not its basis. So the group measured 282 (the two
   labels and the two chosen values) and then shrank both fields to fit the
   box they had just defined.
   Shrink 0 makes the basis the contribution. Below 700 the fields go back to
   growing and shrinking, which is where wrapping is right. */
@media (min-width: 701px) {
	.pwd-bbar__field--audience { flex: 0 0 220px; }
	.pwd-bbar__field--sort     { flex: 0 0 160px; }
}

/* 278:2033 -- the same 42 the numbered pills are, rather than 12 of padding
   around whatever height a chevron glyph happens to have. Measured 31 x 44
   against a row the frame draws as 42 throughout. */
.pwd-bpages__arrow {
	width: 42px;
	height: 42px;
	padding: 0;
	font-size: 16px;
}



/* =========================================================================
   THE BLOG, fifth pass — the hero photograph sat at its column's left edge.
   ========================================================================= */

/* 278:2067 is a 620 column with `items-center justify-center` around a 331
   circle, so the circle sits at x=864 of the 1240. Divi's Image module is a
   block that fills its column, and the wrap inside it is left-aligned -- so
   the circle rendered at x=720, flush against the article text. Measured:
   photowrap x 720 against the frame's 864. */
.pwd-bs-herorow > .et_pb_column:last-child .et_pb_image {
	width: 331px !important;
	max-width: 331px !important;
	margin: 0 auto !important;
}



/* =========================================================================
   THE BLOG, sixth pass — the open dropdown was behind the cards.
   ========================================================================= */

/* Divi gives every ROW and every SECTION its own stacking context, so a
   z-index inside the bar only ever competes with the bar's own children.
   The grid section below it is a later sibling and painted over the open
   listbox: document.elementFromPoint over the third option came back as a
   card photograph, and the option could be seen and not clicked. The same
   fault is recorded twice already on this site, once per screen, because
   each time it was fixed on the page rather than on the component.

   Raised on the BAND, which is what actually stacks. */
.pwd-bl-bar {
	position: relative;
	z-index: 20;
}
.pwd-bl-featured { position: relative; z-index: 10; }
.pwd-bbar .pwd-select__menu { z-index: 60; }



/* =============================================================================
   ABOUT US, against the client's NEW Figma file (14oEdpytJKMVIJv3CXSJcJ),
   frames 135:1633 "Who We Are" and 135:3961 "Community Service".
   Checked element by element 2026-09-03.  Marker: pwd-about-newfigma-20260903

   Everything a Divi module CAN say is set in the module -- the team card's
   fill, edge, corners and padding are now four column settings, the headings'
   Text Transform is a module setting, the philosophy card's wash is a row
   setting.  What is left here is the four things a module cannot say about
   itself.
   ========================================================================= */

/* --- Who We Are ---------------------------------------------------------- */

/* 135:2967 draws the headshot with a plain centred cover crop.  Ours biased it
   30% up the frame, which cropped the chest and shoulders out of all four
   cards and made every face read a size larger than the frame's.  An Image
   module has no object-position setting, so this is the one place it can go. */
body.pwd-designed .pwd-a-teamphoto img { object-position: center center; }

/* 135:3006 is 10x10 like its five siblings.  The lit one was scaled to 1.1,
   so it sat half a pixel proud of the row it is meant to sit in. */
body.pwd-designed .pwd-a-cdot.is-on { transform: none; }

/* --- Community Service --------------------------------------------------- */

/* Divi gives every heading `padding-bottom: 10px`.  The Who We Are pass killed
   it there and this page never got the same rule, so the h1 measured 73
   against 135:3965's 58 and every h2 58 against 48 -- 10px a heading, and
   140px down the page by the footer.  Check 76: a rule about a component
   belongs on the component, and these are this page's components. */
body.pwd-designed .pwd-cs-title h1,
body.pwd-designed .pwd-cs-h2 h2,
body.pwd-designed .pwd-cs-philohead h2,
body.pwd-designed .pwd-cs-evtitle h3 { padding-bottom: 0; }

/* Divi ends every paragraph with `padding-bottom: 1em`, the last one included.
   135:4617 sets the philosophy card's own gap at 20 and 135:4626 the
   why-we-serve column's at 16, and neither has a trailing gap -- which is why
   the card measured 380 against 332 and the column 572 against 526.  Divi has
   no paragraph-spacing setting, so this cannot be a module value. */
body.pwd-designed .pwd-cs-philocopy p { padding-bottom: 20px; }
body.pwd-designed .pwd-cs-whycopy p   { padding-bottom: 16px; }
body.pwd-designed .pwd-cs-philocopy p:last-child,
body.pwd-designed .pwd-cs-whycopy p:last-child,
body.pwd-designed .pwd-cs-pledgecopy p:last-child { padding-bottom: 0; }

/* The philosophy card is now a Divi row with its own gradient and border, and
   a row paints its background behind its own padding -- which is what we want.
   This only stops the card's fill being clipped by the -25px the section above
   it now carries, so the wash still starts at the card's own top edge. */
body.pwd-designed .pwd-cs-philosophy { position: relative; z-index: 1; }

/* =========================================================================
   THE BLOG, first paint.

   Divi prints a page's module design CSS as an inline block roughly 87% of
   the way through the document, so until the whole thing has parsed the page
   paints on Divi's DEFAULTS -- 54px of section padding against this hero's
   200, and a 1080px row against 1240. A filter or a page link is a full page
   reload, so a visitor meets that half-second on every click.

   Every value below is one Divi writes itself in a rule carrying an id and
   six classes, so nothing here can change the finished page. It can only
   decide what the first frame looks like, and a value the client sets in the
   Visual Builder still wins one frame later.
   ========================================================================= */
body.pwd-designed .pwd-bl-hero {
	padding-top: 200px;
	padding-bottom: 60px;
}
body.pwd-designed .pwd-bl-featured { padding-top: 60px; padding-bottom: 60px; }
body.pwd-designed .pwd-bl-bar      { padding-top: 16px; padding-bottom: 16px; }
body.pwd-designed .pwd-bl-gridband { padding-top: 20px; padding-bottom: 60px; }
body.pwd-designed .pwd-bl-pages    { padding-top: 20px; padding-bottom: 80px; }

body.pwd-designed .pwd-bs-hero {
	padding-top: 160px;
	padding-bottom: 0;
}
body.pwd-designed .pwd-bs-meta { padding-top: 0; padding-bottom: 0; }
body.pwd-designed .pwd-bs-body { padding-top: 60px; padding-bottom: 60px; }

/* The newsletter band is the one row on either screen that is meant to run
   the full width, and the shell rule above caps every row at 1240 for that
   same first frame. Stated so the paper plane does not start 172px in and
   then jump. */
body.pwd-designed .et_pb_section:has(> .et_pb_row .pwd-newsletter) > .et_pb_row {
	max-width: 100%;
}



/* =============================================================================
   ABOUT US, second pass against 14oEdpytJKMVIJv3CXSJcJ.  Marker: pwd-about-newfigma-20260903-b
   ========================================================================= */

/* Divi writes BOTH a padding-bottom and a margin-bottom on a paragraph inside a
   Text module, so the first pass's `padding-bottom: 20px` added to a margin of
   its own and every gap came out twice the frame's.  Own both: the padding is
   zero and the margin is the number the frame states.
   135:4617 = 20, 135:4626 = 16, and neither has a trailing gap.              */
body.pwd-designed .pwd-cs-philocopy p { padding-bottom: 0; margin-bottom: 20px; }
body.pwd-designed .pwd-cs-whycopy p   { padding-bottom: 0; margin-bottom: 16px; }
body.pwd-designed .pwd-cs-pledgecopy p,
body.pwd-designed .pwd-cs-evcopy p,
body.pwd-designed .pwd-cs-evmeta p    { padding-bottom: 0; }
body.pwd-designed .pwd-cs-philocopy p:last-child,
body.pwd-designed .pwd-cs-whycopy p:last-child,
body.pwd-designed .pwd-cs-pledgecopy p:last-child { margin-bottom: 0; }

/* 135:4651 is 80 tall -- a rule, 20 of space, and two 24px lines 12 apart.
   Divi's paragraph padding put 16 more inside it, so the card ran 523 against
   135:4640's 509 and both service-day cards with it. */
body.pwd-designed .pwd-cs-evmeta p:first-child { margin-bottom: 12px; }

/* 135:4642 sets MANNA 25 below ORGANIZATION, so the block is 59 and not 55.
   Two spans in one Text module have no gap of their own. */
body.pwd-designed .pwd-cs-org { display: block; margin-bottom: 4px; }

/* 135:3965 is 58 tall.  The h1's line-height is already the frame's 57.6, but
   `Service.` is set in Spectral and a second family in one line box raises the
   strut by its own ascent -- so the box measured 63 with every value correct.
   Stating the line box is the only thing that settles it. */
body.pwd-designed .pwd-cs-title h1 { line-height: 58px; }
body.pwd-designed .pwd-cs-title h1 .pwd-cs-serif { line-height: inherit; }

/* =========================================================================
   THE BLOG, phone widths.
   ========================================================================= */

/* The frame's 571 column, and a floor under it. The module carries Divi's
   own responsive width so the client can change where it stops being 571 --
   this is only the guarantee that nothing ever pushes the page sideways,
   which is what a horizontal scrollbar on a phone announces to everybody. */
.pwd-bl-hero .et_pb_text,
.pwd-bl-hero .et_pb_text_inner,
.pwd-bl-hero .et_pb_button_module_wrapper { max-width: 100% !important; }
.pwd-bl-hero .pwd-bl-title,
.pwd-bl-hero .pwd-bl-intro { overflow-wrap: break-word; }



/* =========================================================================
   THE BLOG, the two phone widths.

   The Figma draws no phone frame for either screen, so both of these are
   decisions. What is not a decision is that nothing may push the page
   sideways.
   ========================================================================= */
@media (max-width: 560px) {
	/* Ten page links at 42 apiece plus their gaps want 410 of a 390 page.
	   The row wraps here rather than running off the edge -- and NOT above
	   this width, where it fits and wrapping would look like a mistake. */
	.pwd-bpages { flex-wrap: wrap; row-gap: 8px; }
	.pwd-bpages__page { padding: 12px 12px; }
	.pwd-bpages__arrow { width: 38px; height: 38px; }
}
/* The native select is the control with the script off, and it was 12px
   wider than the field it sits in. `overflow: hidden` on the field would
   have done it and would also have clipped the open listbox, which is
   absolutely positioned inside that same field. */
.pwd-bbar__control .pwd-select__native { max-width: 100%; }
.pwd-bbar__control { min-width: 0; }
.pwd-bbar__field { max-width: 100%; }



/* =============================================================================
   ABOUT US, third pass against 14oEdpytJKMVIJv3CXSJcJ.  Marker: pwd-about-newfigma-20260903-c
   ========================================================================= */

/* 135:3967 runs 25 past the bottom of 135:3962 and 135:4613 is drawn over that
   last 25.  The photograph's row says so with a negative bottom margin, and
   that only moves the next section's BOX: Divi's columns are floated and the
   hero establishes no block formatting context, so the float carried on to its
   full height and the philosophy row cleared it -- landing 25 below the box it
   was supposed to sit at the top of.  A negative margin cannot win against a
   clear; containing the float can. */
body.pwd-designed .pwd-cs-herowave { display: flow-root; }

/* =========================================================================
   THE BLOG, the two hero waves — read off their RENDER bounds.

   Both were positioned from the wrapper's bounding box, which is the box the
   rotation needs and not the box the ink occupies: 905 x 612 at 683,49 for a
   shape that actually paints 714 x 395 at 726,85. Stretched into the larger
   box the ribbon landed in the hero's bottom corner instead of across it.

   absoluteRenderBounds is what the export matches, to the pixel:
     listing 278:1924  x=726 y=85  714 x 395   (right edge at 1440)
     article 278:2056  x=707 y=0   733 x 491   (right edge at 1440)
   so both sit flush to the right and are drawn 1:1 against their own file.
   ========================================================================= */
.pwd-bl-hero {
	background-size: 714px 395px !important;
	background-position: right top 85px !important;
}
.pwd-bs-hero {
	background-size: 733px 491px !important;
	background-position: right top !important;
}
@media (max-width: 900px) {
	.pwd-bl-hero { background-size: 520px auto !important; background-position: right top 120px !important; }
	.pwd-bs-hero { background-size: 520px auto !important; }
}



/* =========================================================================
   THE BLOG, the select that would not disappear.

   `.is-enhanced > .pwd-select__native` shrinks the native select to 1px and
   hides it once the script has drawn a listbox over it. The rule that makes
   the select LOOK like the field -- for the visitor whose JavaScript is off,
   who has nothing else -- was written at the same specificity and later in
   the file, so it won: a 232px absolutely positioned select sitting 14px in,
   pushing the page 12px sideways at 480 and at 390. Invisible, because the
   thing overflowing has opacity 0.

   It belongs to the un-enhanced case only, which is what it was always for.
   ========================================================================= */
.pwd-bbar__control.is-enhanced .pwd-select__native {
	width: 1px !important;
	max-width: 1px !important;
	padding: 0 !important;
}


/* ===== 2026-09-03 -- the Condition Hub's curated band, against 1:2953 =====
   The design has been revised since this band was built, and the client
   opened the two side by side. Every box was already right -- three 397 cards
   24 apart, radius 24, an #E4E7EC hairline, 32 of padding -- and the contents
   of all three were a version of the frame that no longer exists.

   Note the file key changed: the design now lives at 14oEdpytJKMVIJv3CXSJcJ,
   not the OgbV8fQYBTjnPl1Y7Dx5Hd this file records elsewhere, and it carries
   a Blogs page that the old one did not. Read the node, not the memory. */

/* 8:1647 / 1:2979 / 1:3004 -- the card is a glass panel: white at 20%, and
   the middle one at 70%. What was there was a lavender gradient at 55%,
   which is what made the three read as tinted boxes rather than as paper. */
.pwd-ch-curated > .et_pb_column {
	background: rgba(255, 255, 255, 0.2);
	-webkit-backdrop-filter: blur(20px);
	backdrop-filter: blur(20px);
}
.pwd-ch-curated > .et_pb_column:nth-child(2) { background: rgba(255, 255, 255, 0.7); }

/* 8:1660 -- the two links are STACKED, 5 apart, and they are Neutral/Grey 1
   with the arrow beside them. Side by side and in purple was neither. */
.pwd-ch-links .et_pb_text_inner {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 5px;
}
.pwd-ch-links a { color: var(--pw-grey-1); }

/* 171:1101 -- the At A Glance list, which is what stands where a 345px
   photograph used to: a white card with an #F7F5FA hairline, four rows 16
   apart, each a 36px tile over Neutral/Grey 6 with a 20px glyph in it. */
.pwd-ch-glance .et_pb_text_inner {
	display: flex;
	flex-direction: column;
	gap: 16px;
	padding: 16px;
	background: #fff;
	border: 1px solid #F7F5FA;
	border-radius: 16px;
}
.pwd-ch-gitem { display: flex; align-items: center; gap: 12px; }
.pwd-ch-gicon {
	flex: none;
	width: 36px;
	height: 36px;
	border-radius: 8px;
	background: #FAF9FD;
	color: var(--pw-primary);
	display: inline-flex;
	align-items: center;
	justify-content: center;
}
.pwd-ch-gitem > span:last-child {
	font-size: 14px;
	font-weight: 500;
	line-height: 1.5;
	color: var(--pw-dark);
}

/* 1:3015 -- the support copy is 14px Medium, not 16px Regular. */
.pwd-ch-support .pwd-ch-supportcopy { font-size: 14px; font-weight: 500; }

/* 1:3016 -- a 14px chevron on the right of every support row. It is drawn
   in CSS rather than added to the markup for the reason the get-involved
   bullets are: it is the row's furniture, and a client editing the words
   should not have to carry a span of icon markup back with them. */
.pwd-ch-supportrow { position: relative; padding-right: 48px; }
.pwd-ch-supportrow::after {
	content: "";
	position: absolute;
	top: 20px;
	right: 20px;
	width: 14px;
	height: 14px;
	background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 16 16' fill='none'%3E%3Cpath d='M6 4L10 8L6 12' stroke='%23595F6B' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 14px 14px no-repeat;
}

/* 1:2985 -- a story row is 158 tall: 16 of padding, an 80 portrait beside a
   126-tall stack, 16 of padding. It measured 218 because neither the title
   nor the summary was clamped, and its own corner is 16 with an #F7F5FA
   hairline rather than 12 with a grey one. */
.pwd-ch-stories .cms-card {
	border-radius: 16px !important;
	border-color: #F7F5FA !important;
}
.pwd-ch-stories .pwd-sm-title,
.pwd-ch-stories .pwd-sm-sub {
	display: -webkit-box;
	-webkit-box-orient: vertical;
	overflow: hidden;
}
.pwd-ch-stories .pwd-sm-title { -webkit-line-clamp: 2; }
.pwd-ch-stories .pwd-sm-sub { -webkit-line-clamp: 2; }

/* 1:2985 -- a story row is a ROW: an 80 portrait, 16, then the text.
   The rule that makes the FEATURED card's stack fill its column --
   `.pwd-ch-curated > .et_pb_column > .cms-results .cms-card .et_pb_column
   { display:flex; flex-direction:column }` -- is five classes deep and
   matches the story rows too, so it turned each one on its side: the
   portrait's own module measured 80 x 53 with an 80 x 80 image overflowing
   it, and the summary ran the full 297 underneath. The card came out 218
   against the frame's 158. Scoped to the grid that draws them, and stated
   at a weight that beats it. */
.pwd-ch-stories .cms-card .et_pb_column {
	flex-direction: row !important;
	align-items: flex-start !important;
	gap: 16px !important;
}
.pwd-ch-stories .cms-card .pwd-sm-photo {
	flex: 0 0 80px !important;
	width: 80px !important;
	height: 80px !important;
}
.pwd-ch-stories .cms-card .pwd-sm-body { flex: 1 1 auto !important; min-width: 0; }

/* The hub hero photograph reaches the viewport's edge only if the WRAPPER
   does. `.et_pb_image_wrap` shrink-to-fits the file's own proportions at the
   pinned height, so swapping 1:2032's family photograph in -- a different
   aspect from the one that was there -- left the wrapper 831.6 inside an
   880 column and a 48px strip of white down the right of the page. The image
   itself was 100% of a box that was itself too narrow. Check 63, a third
   time: state the width on the wrapper, not only on the img. */
@media (min-width: 1241px) {
	.pwd-ch-heropic .et_pb_image_wrap,
	.pwd-ch-heropic .et_pb_image_wrap > a {
		width: 100% !important;
		max-width: none !important;
	}
}

/* ...and below 1241 too. `.et_pb_image_wrap` shrink-wraps to the file's own
   proportions at every width, not only on the desktop layout, so the tablet
   and phone hero came out 377 wide inside a full-width column: `width: 100%`
   on the img is 100% of a box that is itself too narrow. It only showed up
   when 1:2032's family photograph replaced a much wider file, which is what
   makes this the sort of fault a swap introduces and nothing catches --
   measure_hub.py has never been run below 1440. */
.pwd-ch-heropic .et_pb_image_wrap,
.pwd-ch-heropic .et_pb_image_wrap > a {
	width: 100% !important;
	max-width: none !important;
	display: block;
}

/* --- the directory's Sort by control  1:2786 -----------------------------
   The frame draws a field: 128 x 37, white, an #E4E7EC hairline, corners 8,
   12 of side padding, "Sort by:" in 14 Regular grey and the value in 14
   SemiBold dark with a 14px chevron after it. What was there was a bare
   <select> on the page's own background -- so the browser drew its own
   control, and on Windows its popup is a serif face on a blue highlight
   beside a screen that is otherwise entirely the design's. Check 76 again:
   a component's own look belongs on the component. */
.pwd-ch-sort {
	position: relative;              /* the enhanced menu hangs off this */
	display: inline-flex;
	align-items: center;
	gap: 6px;
	min-width: 128px;
	height: 37px;
	padding: 8px 12px;
	background: #fff;
	border: 1px solid #E4E7EC;
	border-radius: 8px;
	cursor: pointer;
	font-family: "Plus Jakarta Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
	font-size: 14px;
	line-height: 1.5;
}
.pwd-ch-sort__lead { flex: none; font-weight: 400; color: #595F6B; }
.pwd-ch-sort select {
	appearance: none;
	-webkit-appearance: none;
	background: none;
	border: 0;
	padding: 0;
	margin: 0;
	font: inherit;
	font-weight: 600;
	color: #181628;
	cursor: pointer;
}
.pwd-ch-sort select:focus { outline: none; }
.pwd-ch-sort:focus-within { border-color: #7A44EC; }
.pwd-ch-sort__chev { flex: none; display: inline-flex; color: #595F6B; }

/* Once the script has replaced the native popup, the button IS the control
   and the lead sits beside it. */
.pwd-ch-sort.is-enhanced .pwd-select__btn {
	flex: 1 1 auto;
	font-weight: 600;
	color: #181628;
}
.pwd-ch-sort.is-enhanced .pwd-ch-sort__chev { display: none; }
.pwd-ch-sort .pwd-select__menu {
	/* Divi gives every row its own stacking context, so a menu that only
	   competes inside its own row opens behind the cards below it. */
	z-index: 60;
	left: auto;
	right: 0;
	min-width: 160px;
}
/* This control is not inside .pwd-screen, so the option reset that lives
   there never reached it -- Divi puts a disc and a 1em indent on every li on
   the site. Stated on the component, which is where it belongs. */
.pwd-ch-sort .pwd-select__menu,
.pwd-ch-sort .pwd-select__opt {
	list-style: none !important;
	list-style-type: none !important;
}
.pwd-ch-sort .pwd-select__opt::marker { content: none; }
.pwd-ch-sort .pwd-select__opt::before { content: none !important; display: none !important; }
.pwd-ch-sort .pwd-select__opt {
	margin: 0 !important;
	padding: 9px 12px !important;
	border-radius: 6px;
	cursor: pointer;
	font-size: 14px;
	font-weight: 500;
	line-height: 1.5;
	color: #595F6B;
}

/* 1:2784 -- the line under the heading is a live count, not a slogan. */
.pwd-ch-count { font-size: 14px; font-weight: 400; color: #595F6B; }

/* --- Diagnosis Journey  171:1277 -----------------------------------------
   The designer replaced this band: it was a heading over the entry's prose
   and it is now a seven-step timeline -- numbered circles on a purple line,
   each over a white 167 x 160 card. (The node id changed with it, 57:441 ->
   171:1277, which is why nothing noticed: every OTHER section on the frame
   kept its id and its height.)

   It is one Divi Text module, so the client edits the words in the Visual
   Builder the way they already edit At A Glance. Two things make it safe for
   them to add or remove a step:

     the number is a CSS counter, not typed -- delete step 3 and 4 becomes 3;
     the connector is drawn by each step to the NEXT one, so it is always
     exactly as long as there are steps, whatever the client leaves. */
.pwd-sc-journey .et_pb_text_inner {
	display: flex;
	align-items: flex-start;
	gap: var(--pwd-step-gap, 12px);
	counter-reset: pwd-step;
}
.pwd-sc-step {
	position: relative;
	flex: 1 1 0;
	min-width: 0;
	display: flex;
	flex-direction: column;
	align-items: center;
	counter-increment: pwd-step;
}
/* 171:1281 -- one line, from this circle's centre to the next one's. */
.pwd-sc-step:not(:last-child)::after {
	content: "";
	position: absolute;
	top: 17px;                                   /* the circle's own centre */
	left: 50%;
	width: calc(100% + var(--pwd-step-gap, 12px));
	height: 2px;
	background: #7A44EC;
	z-index: 0;
}
/* 171:1285 -- 36px, white, a 2px Lavender/600 ring, the number inside it. */
.pwd-sc-step::before {
	content: counter(pwd-step);
	position: relative;
	z-index: 1;
	flex: none;
	width: 36px;
	height: 36px;
	border-radius: 50%;
	background: #fff;
	border: 2px solid #7A44EC;
	display: flex;
	align-items: center;
	justify-content: center;
	font-family: "Plus Jakarta Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
	font-size: 14px;
	font-weight: 700;
	line-height: 1;
	color: #7A44EC;
}
/* 171:1513 -- the card starts 52 down, which is 36 of circle and 16 of gap. */
.pwd-sc-stepcard {
	position: relative;
	z-index: 1;
	margin-top: 16px;
	width: 100%;
	min-height: 160px;
	padding: 20px 14px;
	background: #fff;
	border: 1.5px solid #EFE8FD;
	border-radius: 16px;
	text-align: center;
}
.pwd-sc-steptitle {
	display: block;
	font-size: 16px;
	font-weight: 500;
	line-height: 1.5;
	color: #181628;
	margin-bottom: 12px;
}
.pwd-sc-stepcopy {
	display: block;
	font-size: 14px;
	font-weight: 500;
	line-height: 1.5;
	color: #595F6B;
}
/* 171:1279 -- Heading/3, and 48 above the timeline. */
.pwd-sc-journeyhead h2 {
	font-size: 40px !important;
	line-height: 1.2em !important;
	padding-bottom: 0;
}

/* Seven 167s need the frame's own 1240. Below it the row scrolls rather than
   wrapping: a timeline broken onto two lines stops reading as a sequence,
   and the frame draws no tablet to copy. */
@media (max-width: 1239px) {
	.pwd-sc-journey .et_pb_text_inner {
		overflow-x: auto;
		scrollbar-width: none;
		-ms-overflow-style: none;
		padding-bottom: 4px;
	}
	.pwd-sc-journey .et_pb_text_inner::-webkit-scrollbar { display: none; }
	.pwd-sc-step { flex: 0 0 167px; }
}

/* 171:1285 is 36 including its 2px ring: without border-box the circle is 40
   and every card sits 4 low. The frame puts the card at 52 -- 36 of circle
   and the container's own 16. */
.pwd-sc-step::before { box-sizing: border-box; }
.pwd-sc-stepcard { box-sizing: border-box; }


/* =========================================================================
   THE BLOG, a post with no picture yet.

   Somebody writes the article before they choose the photograph, so this is
   the ordinary state of a new post and not an edge case. src="" resolves to
   the page's own URL -- the browser fetches the whole document as an image
   and draws a broken-image glyph in the middle of the card -- so the token
   hands back a transparent pixel and the card says so instead.

   A flat lavender tile, which reads as a card waiting for a picture rather
   than a card that has failed. The card keeps its size either way, so a
   picture-less post does not knock the row it is in out of line.
   ========================================================================= */
.pwd-blogcard--nophoto .et_pb_image .et_pb_image_wrap {
	background: var(--pw-lav-50);
	box-shadow: inset 0 0 0 1px var(--pw-stroke);
}
.pwd-blogcard--nophoto .et_pb_image img { opacity: 0; }

/* The article's own hero is a 331 circle; empty, it is the same tile. */
.pwd-bs__photo .et_pb_image_wrap:has(img[src^="data:image/gif"]) {
	background: var(--pw-lav-50);
	box-shadow: inset 0 0 0 1px var(--pw-stroke);
}



/* =============================================================================
   THE NAVBAR DROPDOWN OVERLAYS THE PAGE.  Marker: pwd-nav-overlay-20260903

   This SUPERSEDES the decision recorded a few thousand lines above, where
   `.pwd-nav__panel` is introduced with the comment "inside the navbar card so
   the card grows".  The card did grow -- and it took the whole page with it.
   Hovering any menu item moved the hero down 197px, and 227px on Products,
   on every route on the site; the document's own height moved with it.  A
   dropdown is an overlay, and an overlay does not occupy space.
   ========================================================================= */

/* `.pwd-nav` already carries a drop-shadow filter, which is enough to make it
   the containing block for an absolute child -- but a layout that depends on a
   filter side-effect is a layout nobody can read, so say it. */
.pwd-nav { position: relative; }

/* A direct child of `.pwd-nav`, so 100% is the bottom of the whole card: the
   panel hangs under the bar exactly where it did, and the bar keeps its own
   106px whatever the panel holds.  The filter above draws one shadow round the
   union of the two, which is what makes them read as a single card. */
.pwd-nav__panel {
	position: absolute;
	top: 100%;
	left: 0;
	right: 0;
	z-index: 3;
}

/* 161:2501's open states draw the bar and the panel as one card, so the seam
   between them is square.  Neither selector names a dropdown key -- the keys
   are slugs of the client's own words, and one they add tomorrow has a key no
   stylesheet could know.  The click path sets aria-expanded on the trigger;
   the hover path is CSS only, and has to hold the panel open while the pointer
   is inside it too. */
.pwd-nav:has(.pwd-nav__trigger[aria-expanded="true"]) .pwd-nav__main {
	border-bottom-left-radius: 0;
	border-bottom-right-radius: 0;
}
/* nav-click 2026-09-10: squared only while a panel is really open (aria-expanded, above). */

/* Below the frame's own width the panel can be taller than what is left of the
   screen, and an overlay that runs off the bottom cannot be read.  It scrolls
   inside itself rather than growing the page. */
@media (max-width: 980px) {
	.pwd-nav__panel {
		max-height: calc(100vh - 160px);
		overflow-y: auto;
		overscroll-behavior: contain;
	}
}
/* --- the timeline, now drawn from the entry's own field -------------------
   PW Journey renders its own row rather than living inside a Text module, so
   the rules that named `.pwd-sc-journey .et_pb_text_inner` are stated for
   `.pwd-sc-steps` as well. Everything else -- the counter, the connector, the
   card -- is unchanged and already adapts to however many steps there are. */
.pwd-sc-steps {
	display: flex;
	align-items: stretch;
	gap: var(--pwd-step-gap, 12px);
	counter-reset: pwd-step;
}
.pwd-sc-steps .pwd-sc-step { justify-content: flex-start; }
/* A condition's own steps are not all the same length, and the frame's cards
   are one height per row -- so the card grows and every card in the row grows
   with it rather than the copy being clipped. */
.pwd-sc-steps .pwd-sc-stepcard {
	flex: 1 1 auto;
	display: flex;
	flex-direction: column;
	justify-content: center;
}
.pwd-sc-jhead {
	margin: 0 0 48px;
	padding: 0;
	font-family: "Plus Jakarta Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
	font-size: 40px;
	font-weight: 700;
	line-height: 1.2;
	color: #181628;
}
/* The sentence that introduces the list, and anything written after it. */
.pwd-sc-jintro,
.pwd-sc-joutro {
	font-size: 18px;
	font-weight: 400;
	line-height: 1.5;
	color: #595F6B;
}
.pwd-sc-jintro { margin: -24px 0 32px; }
.pwd-sc-joutro { margin: 32px 0 0; }
.pwd-sc-jintro p:last-child,
.pwd-sc-joutro p:last-child { margin-bottom: 0; padding-bottom: 0; }

@media (max-width: 1239px) {
	.pwd-sc-steps {
		overflow-x: auto;
		scrollbar-width: none;
		-ms-overflow-style: none;
		padding-bottom: 4px;
	}
	.pwd-sc-steps::-webkit-scrollbar { display: none; }
	.pwd-sc-steps .pwd-sc-step { flex: 0 0 167px; }
}

/* A condition draws as many steps as its own field holds -- six on ANCA, four
   on CIDP -- and the frame's 167 is simply what SEVEN of them come to across
   the 1240. Letting four take a quarter of the row each puts a 300-wide card
   on one condition beside a 167 one on the next, so the step is capped and
   the row centred: every timeline on the site then reads the same shape
   whatever the entry holds, which is the point of reading it from the CMS in
   the first place. */
.pwd-sc-steps { justify-content: center; }
.pwd-sc-steps .pwd-sc-step { max-width: 280px; }

/* Epilepsy's field holds TEN steps and Eosinophilic Esophagitis three, so the
   row has to hold both without squashing one or stranding the other. Each
   step keeps a floor of 150 and the row scrolls past it -- and the centring
   is auto margins on the first and last rather than justify-content, because
   a centred flex row that overflows is clipped at its left edge and the first
   step's circle disappears behind it. */
.pwd-sc-steps {
	justify-content: flex-start;
	overflow-x: auto;
	scrollbar-width: none;
	-ms-overflow-style: none;
}
.pwd-sc-steps::-webkit-scrollbar { display: none; }
.pwd-sc-steps .pwd-sc-step {
	flex: 1 1 150px;
	min-width: 150px;
}
.pwd-sc-steps .pwd-sc-step:first-child { margin-left: auto; }
.pwd-sc-steps .pwd-sc-step:last-child { margin-right: auto; }

/* ==========================================================================
   Single investigator profile -- Figma 211:1294, in the SECOND file key
   14oEdpytJKMVIJv3CXSJcJ. Every rule below carries the node it was read from.

   What is in here is only what a Divi module cannot say about itself: how a
   photograph is cropped, what a card does about the card beside it, and the
   three-stop wash Divi's own gradient control cannot express. Every colour,
   word, link, size and spacing a person would go looking for is a module or
   column setting in the Visual Builder -- see mk-single-inv.php.
   ========================================================================== */

/* ------------------------------------------------------------- hero --- */
/* 211:1297 -- 1240 wide, 694 of text beside 506 of card, 40 apart. Divi's
   own 1_2,1_2 is 48.5/48.5, so the split is stated here. */
.pwd-iv-herorow {
	display: grid !important;
	grid-template-columns: 694px 506px;
	gap: 40px;
	align-items: center;
}
/* Divi clears a row with ::before and ::after. In a flex or grid row each
   becomes an item and takes a gap -- check 50. */
.pwd-iv-herorow::before,
.pwd-iv-herorow::after { display: none !important; }

.pwd-iv-herorow > .et_pb_column {
	width: auto !important;
	margin: 0 !important;
	float: none !important;
}

/* 211:1298 -- the 48 the frame puts under the text is the COLUMN's, not the
   section's: on the section it would have pushed the meta band down. */
.pwd-iv-heroleft { align-self: start; }

/* 211:1300 -- a module's text colour never reaches its links, and Divi writes
   its own a{} after this file. The third time this project has met it. */
.pwd-iv-back a,
.pwd-iv-back a:hover {
	color: var(--pw-primary) !important;
	text-decoration: none;
	display: inline-flex;
	align-items: center;
	gap: 6px;
}
.pwd-iv-back a .pwd-i { transform: rotate(180deg); }

/* 211:1302 -- Accent/2: Spectral Bold 48 at 1.2, tracking -2. */
.pwd-iv-title h1 {
	letter-spacing: -2px;
	padding-bottom: 0 !important;
	/* 211:1302 is TITLE case. It has to be a text-transform rather than the
	   module's own words, because the words are the entry's title -- the
	   client's data -- and Divi's font control has no capitalize in it
	   (check 105). The stories hub and the blog h1 both do the same. */
	text-transform: capitalize;
}

/* ---------------------------------------------------- the hero card --- */
/* 211:1311 -- the card IS the column, so its fill, hairline, corners and
   shadow are Divi column settings. What cannot be a setting is the two-up
   shape: 135 of photograph, 24, then the four lines, 8 apart. */
.pwd-iv-heroright {
	display: grid !important;
	grid-template-columns: 135px minmax(0, 1fr);
	column-gap: 24px;
	row-gap: 8px;
	align-content: center;
	padding: 24px !important;
	overflow: hidden;
}
.pwd-iv-heroright > .pwd-iv-photo {
	grid-column: 1;
	grid-row: 1 / span 4;
	align-self: center;
	margin: 0 !important;
}
/* 211:1313 -- 135 x 163, corners 16. The crop has to reach the WRAPPER and
   not only the <img>: Divi gives both an explicit height taken from the
   file's own proportions, so cropping the image alone leaves the wrapper at
   the photograph's natural height and the column follows it (check 63). */
.pwd-iv-photo .et_pb_image_wrap,
.pwd-iv-photo a,
.pwd-iv-photo img {
	display: block !important;
	width: 135px !important;
	height: 163px !important;
	max-width: 135px !important;
	border-radius: 16px !important;
	overflow: hidden;
}
.pwd-iv-photo img { object-fit: cover; object-position: center 30%; }

.pwd-iv-heroright > .et_pb_module { margin: 0 !important; }
.pwd-iv-name h3,
.pwd-iv-name h2 { padding-bottom: 0 !important; }

/* 211:1322 -- the institution line: a 16px mark, 8 from its words. */
.pwd-iv-inst .et_pb_text_inner {
	display: flex;
	align-items: center;
	gap: 8px;
}
.pwd-iv-inst .pwd-i {
	flex: 0 0 16px;
	width: 16px;
	height: 16px;
	color: var(--pw-primary);
}
/* Three of the nine have no institution in the export and one has no short
   specialty. A line with nothing in it is not drawn, rather than leaving a
   gap where the frame has a value. One :has(), no nesting -- check 96. */
.pwd-iv-heroright .et_pb_text:has(.pwd-iv-v:empty) { display: none !important; }

/* --------------------------------------------------------- meta bar --- */
/* 211:1326 -- 68 tall: 16 of padding over a 36 row, white, a hairline under
   it and the frame's own purple shadow. */
.pwd-iv-metaband {
	border-bottom: 1px solid var(--pw-stroke);
	box-shadow: 0 2px 10px -4px rgba(107, 51, 235, 0.15);
}
.pwd-iv-meta .et_pb_text_inner > .pwd-iv-metarow,
.pwd-iv-metarow {
	display: flex;
	align-items: center;
	gap: 16px;
	min-height: 36px;
}
.pwd-iv-metaitem {
	display: flex;
	align-items: flex-start;
	gap: 8px;
}
/* 211:1329 -- a 32 x 30 tile, corners 10, holding a 20px glyph. */
.pwd-iv-metaicon {
	flex: 0 0 32px;
	width: 32px;
	height: 30px;
	border-radius: 10px;
	background: var(--pw-lav-10, #F7F5FA);
	display: flex;
	align-items: center;
	justify-content: center;
	color: var(--pw-grey-2);
}
.pwd-iv-metaicon .pwd-i { width: 20px; height: 20px; }
.pwd-iv-metatext {
	display: flex;
	flex-direction: column;
	gap: 2px;
}
/* 211:1333 / 211:1334 -- 11 Regular grey over 14 SemiBold dark, both at the
   frame's automatic leading rather than at a token line height. */
.pwd-iv-metalabel {
	font: 400 11px/1.27 'Plus Jakarta Sans', sans-serif;
	color: var(--pw-grey-2);
}
.pwd-iv-metaval,
.pwd-iv-metaval a {
	font: 600 14px/1.27 'Plus Jakarta Sans', sans-serif;
	color: var(--pw-dark) !important;
	text-decoration: none;
}
/* 211:1335 -- 1 x 36. */
.pwd-iv-metarule {
	flex: 0 0 1px;
	width: 1px;
	align-self: stretch;
	min-height: 36px;
	background: var(--pw-stroke);
}
/* Two of the nine investigators carry no condition and none of them is
   missing a date, so only the first item can be empty -- and when it is, the
   rule beside it would be a hairline against nothing. */
.pwd-iv-metaitem:has(> .pwd-iv-metatext > .pwd-iv-metaval:empty) { display: none !important; }
.pwd-iv-metarow:has(> .pwd-iv-metaitem:first-child > .pwd-iv-metatext > .pwd-iv-metaval:empty) .pwd-iv-metarule {
	display: none !important;
}

/* ----------------------------------------------------------- article --- */
/* 211:1344 -- an 856 article beside a 320 card, 64 apart. */
.pwd-iv-storyrow {
	display: grid !important;
	grid-template-columns: 856px 320px;
	gap: 64px;
	align-items: start;
}
.pwd-iv-storyrow::before,
.pwd-iv-storyrow::after { display: none !important; }
.pwd-iv-storyrow > .et_pb_column {
	width: auto !important;
	margin: 0 !important;
	float: none !important;
}

/* 211:1347 / 211:1348 -- the client's own article, under the frame's own
   type. The prose is one wysiwyg field, so the headings inside it are the
   client's and their level varies by entry (h4 on some, h5 on others) --
   every level is given the frame's Heading/6.
   Divi gives every heading `padding-bottom: 10px` and every paragraph
   `padding-bottom: 1em`, both from selectors carrying an id, so both have to
   be said with !important or the band runs 10px long per heading. */
.pwd-iv-prose .et_pb_text_inner > h1,
.pwd-iv-prose .et_pb_text_inner > h2,
.pwd-iv-prose .et_pb_text_inner > h3,
.pwd-iv-prose .et_pb_text_inner > h4,
.pwd-iv-prose .et_pb_text_inner > h5,
.pwd-iv-prose .et_pb_text_inner > h6 {
	font: 700 24px/1.4 'Plus Jakarta Sans', sans-serif;
	color: var(--pw-dark);
	margin: 40px 0 16px !important;
	padding: 0 !important;
	letter-spacing: 0;
}
.pwd-iv-prose .et_pb_text_inner > *:first-child { margin-top: 0 !important; }
.pwd-iv-prose .et_pb_text_inner > p {
	font: 500 18px/1.5 'Plus Jakarta Sans', sans-serif;
	color: var(--pw-grey-1);
	margin: 0 0 16px !important;
	padding: 0 !important;
}
.pwd-iv-prose .et_pb_text_inner > p:last-child { margin-bottom: 0 !important; }
.pwd-iv-prose .et_pb_text_inner a { color: var(--pw-primary) !important; }
.pwd-iv-prose .et_pb_text_inner ul,
.pwd-iv-prose .et_pb_text_inner ol {
	margin: 0 0 16px;
	padding: 0 0 0 1.25em;
	list-style-position: outside;
}
.pwd-iv-prose .et_pb_text_inner li {
	font: 500 18px/1.5 'Plus Jakarta Sans', sans-serif;
	color: var(--pw-grey-1);
	padding-bottom: 0 !important;
}
.pwd-iv-prose .et_pb_text_inner sup { font-size: 60%; }
.pwd-iv-prose .et_pb_text_inner img { border-radius: 16px; height: auto; }

/* -------------------------------------------------------- pull quote --- */
/* 211:1355 -- corners 24, a 1px #EFE8FD edge, 32 of padding. Those three are
   the module's own settings. The wash is here because it is a three-stop
   gradient and Divi's own control expresses two. */
.pwd-iv-quote {
	background: linear-gradient(90deg, rgba(245, 243, 255, 0.7) 0%, rgba(255, 255, 255, 0.7) 55%, rgba(245, 243, 255, 0.7) 100%);
	margin: 40px 0 !important;
}
.pwd-iv-quote .et_pb_text_inner {
	display: flex;
	flex-direction: column;
	gap: 12px;
}
.pwd-iv-quote .et_pb_text_inner > p { margin: 0 !important; padding: 0 !important; }
/* 211:1357 -- the mark is 24 and it is the frame's own purple. */
.pwd-iv-qmark { display: block; color: var(--pw-primary); line-height: 0; }
.pwd-iv-qmark .pwd-i { width: 24px; height: 24px; }
/* 211:1359 -- Accent/5: Spectral SemiBold Italic 24 at 1.4. */
.pwd-iv-qtext {
	font: italic 600 24px/1.4 'Spectral', Georgia, serif;
	color: var(--pw-dark);
	margin: 0 !important;
	padding: 0 !important;
}
/* 211:1362 -- 14 Regular grey, at the frame's automatic leading. */
.pwd-iv-qby {
	display: block;
	font: 400 14px/1.29 'Plus Jakarta Sans', sans-serif;
	color: var(--pw-grey-2);
}
/* No collection on this site has a quote column, so the quote is the first
   sentence the person is quoted saying in their own article -- and four of
   the nine articles contain no quotation at all. An empty quote card is
   worse than none, so it is not drawn. */
.pwd-iv-quote:has(.pwd-iv-qtext:empty) { display: none !important; }

/* -------------------------------------------------------- about card --- */
/* 211:1369 -- 320 x 310, white, a hairline, corners 16, 24 of padding, its
   parts 16 apart. All of that is the COLUMN's own Divi settings; what is
   here is the header's shape and the avatar's crop. */
.pwd-iv-about > .et_pb_module { margin: 0 0 16px !important; }
.pwd-iv-about > .et_pb_module:last-child { margin-bottom: 0 !important; }

.pwd-iv-abouthead .et_pb_text_inner {
	display: flex;
	align-items: center;
	gap: 12px;
}
/* 211:1372 -- a 64 circle on a 0.8px hairline. */
.pwd-iv-aboutpic {
	flex: 0 0 64px;
	width: 64px;
	height: 64px;
	border-radius: 64px;
	border: 0.8px solid var(--pw-stroke);
	overflow: hidden;
	display: block;
}
.pwd-iv-aboutpic img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center 25%;
	display: block;
	border-radius: 64px;
}
.pwd-iv-aboutwho { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
/* 211:1374 / 211:1375 -- 16 Bold dark over 12 SemiBold purple. */
.pwd-iv-aboutname { font: 700 16px/1.25 'Plus Jakarta Sans', sans-serif; color: var(--pw-dark); }
.pwd-iv-aboutkind { font: 600 12px/1.25 'Plus Jakarta Sans', sans-serif; color: var(--pw-primary); }
/* 211:1376 -- 14 Regular at 1.6. */
.pwd-iv-aboutbio .et_pb_text_inner,
.pwd-iv-aboutbio .et_pb_text_inner p {
	font: 400 14px/1.6 'Plus Jakarta Sans', sans-serif;
	color: var(--pw-grey-1);
	margin: 0 !important;
	padding: 0 !important;
}

/* ------------------------------------------------- the two big cards --- */
/* 211:1378 and 211:1403 -- 1240 wide, corners 24, a 1px edge, 32 of padding.
   Those are the ROW's settings. The wash is the same three-stop one, at 0.2
   on the conditions card and 0.7 on the stories card. */
.pwd-iv-condcard,
.pwd-iv-storiescard {
	background: linear-gradient(90deg, rgba(245, 243, 255, 0.7) 0%, rgba(255, 255, 255, 0.7) 55%, rgba(245, 243, 255, 0.7) 100%) !important;
}
.pwd-iv-condcard { background: linear-gradient(90deg, rgba(245, 243, 255, 0.2) 0%, rgba(255, 255, 255, 0.2) 55%, rgba(245, 243, 255, 0.2) 100%) !important; }
.pwd-iv-condcard > .et_pb_column,
.pwd-iv-storiescard > .et_pb_column { width: 100% !important; margin: 0 !important; }

/* 211:1379 / 211:1405 -- an 18px mark, 8 from an 18 SemiBold purple label. */
.pwd-iv-eyebrow .et_pb_text_inner {
	display: flex;
	align-items: center;
	gap: 8px;
}
.pwd-iv-eyebrow .pwd-i {
	flex: 0 0 18px;
	width: 18px;
	height: 18px;
	color: var(--pw-primary);
}
.pwd-iv-eyebrow .et_pb_text_inner,
.pwd-iv-eyebrow .et_pb_text_inner span {
	font: 600 18px/1.5 'Plus Jakarta Sans', sans-serif;
	color: var(--pw-primary);
}
/* 211:1386 / 211:1387 -- the condition's own name and its own summary. */
.pwd-iv-condname .et_pb_text_inner { font: 700 18px/1.5 'Plus Jakarta Sans', sans-serif; color: var(--pw-dark); }
.pwd-iv-condsum .et_pb_text_inner { font: 400 16px/1.5 'Plus Jakarta Sans', sans-serif; color: var(--pw-grey-1); }
.pwd-iv-condname .et_pb_text_inner *,
.pwd-iv-condsum .et_pb_text_inner * { padding-bottom: 0 !important; margin: 0 !important; }

/* The gaps the frame states between the eyebrow, the pair of lines and the
   rows: 24 / 12 / 24. Each is also the module's own margin setting, which is
   where a person looks for it -- but Divi writes no CSS at all for a module
   inside a Library layout and its margins on a row's children are rewritten
   as a shorthand, so these are stated (check 79 and check 67). */
.pwd-iv-condcard .pwd-iv-eyebrow { margin: 0 0 24px !important; }
.pwd-iv-condcard .pwd-iv-condname { margin: 0 0 12px !important; }
.pwd-iv-condcard .pwd-iv-condsum { margin: 0 0 24px !important; }
.pwd-iv-storiescard .pwd-iv-eyebrow { margin: 0 0 24px !important; }
.pwd-iv-storiescard .pwd-iv-storygrid { margin: 0 0 24px !important; }
/* The condition's name and summary are the referenced entry's own fields, so
   an investigator with no condition draws neither -- and then the pair of
   lines would be 36px of nothing above the rows. */
.pwd-iv-condname:has(.et_pb_text_inner:empty),
.pwd-iv-condsum:has(.et_pb_text_inner:empty) { display: none !important; }

/* ------------------------------------------- the repeated card, twice --- */
/* Both of the grids below draw a Divi Library layout once per entry, so
   every word, photograph, colour and link inside a card is the client's in
   the Visual Builder and "two cards or three" is one number on the module.
   What a module cannot say is what a card does about the card beside it. */
.pwd-iv-condgrid .cms-list,
.pwd-iv-storygrid .cms-list {
	grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
	gap: 16px !important;
	margin: 0 !important;
}

/* 211:1389 -- Support Item Row: 580 x 105, white, a 1px #EFE8FD edge,
   corners 16, 20 of padding; a 40 badge, the words, and a 14 arrow held to
   the top-right. */
.pwd-iv-condgrid .cms-card {
	background: var(--pw-white);
	border: 1px solid var(--pw-lav-100);
	border-radius: 16px;
	padding: 20px;
	min-height: 105px;
	box-sizing: border-box;
}
/* Divi's front-end script wraps every rendered layout in <div id="et-boc">
   <div class="et-l"> AFTER the page loads, so a rule written against the
   response stops matching the moment the page finishes -- check 31. */
.pwd-iv-condgrid .cms-card > div,
.pwd-iv-condgrid .cms-card .et_pb_section,
.pwd-iv-condgrid .cms-card .et_pb_row,
.pwd-iv-condgrid .cms-card .et_pb_row > .et_pb_column {
	display: block;
	width: 100% !important;
	max-width: none !important;
	margin: 0 !important;
	padding: 0 !important;
	background: none !important;
}
.pwd-iv-condgrid .cms-card .et_pb_row > .et_pb_column {
	display: grid;
	grid-template-columns: 40px minmax(0, 1fr) 14px;
	column-gap: 16px;
	row-gap: 2px;
	align-items: start;
}
.pwd-iv-condgrid .cms-card .et_pb_module { margin: 0 !important; }
.pwd-ivcr-badge {
	grid-column: 1;
	grid-row: 1 / span 2;
	width: 40px;
	height: 40px;
	border-radius: 10px;
	background: var(--pw-lav-50);
	display: flex !important;
	align-items: center;
	justify-content: center;
	color: var(--pw-primary);
}
.pwd-ivcr-badge .et_pb_text_inner { line-height: 0; }
.pwd-ivcr-badge .pwd-i { width: 20px; height: 20px; }
.pwd-ivcr-title { grid-column: 2; grid-row: 1; }
.pwd-ivcr-title .et_pb_text_inner,
.pwd-ivcr-title a {
	font: 700 14px/1.5 'Plus Jakarta Sans', sans-serif;
	color: var(--pw-dark) !important;
	text-decoration: none;
}
.pwd-ivcr-sum { grid-column: 2; grid-row: 2; }
.pwd-ivcr-sum .et_pb_text_inner {
	font: 500 14px/1.5 'Plus Jakarta Sans', sans-serif;
	color: var(--pw-grey-1);
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}
.pwd-ivcr-arrow { grid-column: 3; grid-row: 1; }
.pwd-ivcr-arrow a {
	display: block;
	color: var(--pw-primary) !important;
	line-height: 0;
}
.pwd-ivcr-arrow .pwd-i { width: 14px; height: 14px; }

/* 211:1410 -- Story Card: 580 x 116, white, a 1px #F7F5FA edge, corners 16,
   16 of padding; an 80 portrait with corners 12, then the words 16 from it. */
.pwd-iv-storygrid .cms-card {
	background: var(--pw-white);
	border: 1px solid #F7F5FA;
	border-radius: 16px;
	padding: 16px;
	min-height: 116px;
	box-sizing: border-box;
}
.pwd-iv-storygrid .cms-card > div,
.pwd-iv-storygrid .cms-card .et_pb_section,
.pwd-iv-storygrid .cms-card .et_pb_row,
.pwd-iv-storygrid .cms-card .et_pb_row > .et_pb_column {
	display: block;
	width: 100% !important;
	max-width: none !important;
	margin: 0 !important;
	padding: 0 !important;
	background: none !important;
}
.pwd-iv-storygrid .cms-card .et_pb_row > .et_pb_column {
	display: grid;
	grid-template-columns: 80px minmax(0, 1fr);
	column-gap: 16px;
	row-gap: 4px;
	align-items: start;
}
.pwd-iv-storygrid .cms-card .et_pb_module { margin: 0 !important; }
.pwd-ivsr-pic {
	grid-column: 1;
	grid-row: 1 / span 3;
}
.pwd-ivsr-pic .et_pb_image_wrap,
.pwd-ivsr-pic a,
.pwd-ivsr-pic img {
	display: block !important;
	width: 80px !important;
	height: 80px !important;
	max-width: 80px !important;
	border-radius: 12px !important;
	overflow: hidden;
}
.pwd-ivsr-pic img { object-fit: cover; object-position: center 30%; }
.pwd-ivsr-title { grid-column: 2; grid-row: 1; }
.pwd-ivsr-title .et_pb_text_inner,
.pwd-ivsr-title a {
	font: 700 14px/1.5 'Plus Jakarta Sans', sans-serif;
	color: var(--pw-dark) !important;
	text-decoration: none;
}
.pwd-ivsr-sum { grid-column: 2; grid-row: 2; }
.pwd-ivsr-sum .et_pb_text_inner {
	font: 400 14px/1.5 'Plus Jakarta Sans', sans-serif;
	color: var(--pw-grey-1);
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}
/* 211:1416 -- the link is 8 under the summary and names the patient. */
.pwd-ivsr-link { grid-column: 2; grid-row: 3; margin-top: 2px !important; }
.pwd-ivsr-link a {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	font: 700 14px/1.2 'Plus Jakarta Sans', sans-serif;
	color: var(--pw-primary) !important;
	text-transform: capitalize;
	text-decoration: none;
}
.pwd-ivsr-link .pwd-i { width: 16px; height: 16px; }

/* 211:1424 -- "view all patient stories": 16 Bold, grey, capitalised. */
.pwd-iv-viewall a {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	font: 700 16px/1.2 'Plus Jakarta Sans', sans-serif;
	color: var(--pw-grey-1) !important;
	text-transform: capitalize;
	text-decoration: none;
}
.pwd-iv-viewall .pwd-i { width: 16px; height: 16px; }
.pwd-iv-viewall { margin: 0 !important; }

/* A control the script hides must not be given a display by this file --
   check 82. */
.pwd-iv-hero [hidden],
.pwd-iv-story [hidden],
.pwd-iv-related [hidden] { display: none !important; }

/* --------------------------------------------------------- narrower --- */
/* The frame draws no tablet and no phone, so everything below 1240 is a
   decision. The rule each time is the frame's own reading order: the text
   before the portrait, the article before the card beside it. */
@media (max-width: 1279px) {
	.pwd-iv-herorow,
	.pwd-iv-storyrow { grid-template-columns: minmax(0, 1fr) minmax(0, 380px); }
	.pwd-iv-storyrow { gap: 40px; }
}
@media (max-width: 1023px) {
	.pwd-iv-herorow,
	.pwd-iv-storyrow {
		grid-template-columns: minmax(0, 1fr);
		gap: 32px;
	}
	.pwd-iv-heroleft { padding-bottom: 0 !important; }
	.pwd-iv-metarow { flex-wrap: wrap; row-gap: 12px; }
	.pwd-iv-metarule { display: none !important; }
}
@media (max-width: 899px) {
	.pwd-iv-condgrid .cms-list,
	.pwd-iv-storygrid .cms-list { grid-template-columns: minmax(0, 1fr) !important; }
}
@media (max-width: 599px) {
	.pwd-iv-heroright {
		grid-template-columns: minmax(0, 1fr);
		row-gap: 12px;
		justify-items: start;
	}
	.pwd-iv-heroright > .pwd-iv-photo { grid-row: auto; grid-column: 1; }
	.pwd-iv-title h1 { font-size: 32px !important; }
	.pwd-iv-prose .et_pb_text_inner > h1,
	.pwd-iv-prose .et_pb_text_inner > h2,
	.pwd-iv-prose .et_pb_text_inner > h3,
	.pwd-iv-prose .et_pb_text_inner > h4,
	.pwd-iv-prose .et_pb_text_inner > h5,
	.pwd-iv-prose .et_pb_text_inner > h6 { font-size: 20px; }
	.pwd-iv-prose .et_pb_text_inner > p { font-size: 16px; }
	.pwd-iv-qtext { font-size: 20px; }
}
/* pwd-iv-end */


/* Divi writes every h2 on the site from a selector carrying an id, so the
   journey heading computed 32/20 against 171:1279's 40 and the 48 the
   container leaves under it. One class cannot reach that, and this heading
   is the module's own rather than a Text module the client sets in the
   builder -- so it says so outright. */
.pwd-sc-journeyband .pwd-sc-jhead {
	font-size: 40px !important;
	line-height: 1.2 !important;
	margin: 0 0 48px !important;
	padding-bottom: 0 !important;
}
.pwd-sc-journeyband .pwd-sc-jintro { margin-top: -24px; }

/* ------------------------------------------- Symptom cards + At A Glance */
/* Added 2026-09-03, from 57:354 (SymptomsSection) and 57:331 (AtAGlanceBox).
   Both bands used to be the same words on all twenty-five conditions -- one
   because the grid was not built at all and the prose behind it is filled on
   sixteen of them, the other because four hard-coded lines sat in the Theme
   Builder body that draws every condition. */

.pwd-symcards {
	display: grid;
	grid-template-columns: repeat(var(--pwd-symcols, 4), minmax(0, 1fr));
	gap: 16px;                       /* 57:357 / 57:358 */
	margin: 0;
	padding: 0;
	list-style: none;
}

.pwd-symcard {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 16px;
	min-height: 172px;               /* 57:359 -- a fixed height in the frame,
	                                    a floor here: the client's own symptom
	                                    names run longer than the designer's
	                                    and a clipped word is worse than a
	                                    taller card. */
	padding: 16px 28px;
	background: #fff;
	border: 1px solid #e4e7ec;
	border-radius: 16px;
	box-shadow: 0 4px 16px rgba( 28, 24, 40, 0.05 );
	text-align: center;
}

.pwd-symcard__icon {
	display: flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 auto;
	width: 44px;
	height: 44px;
	padding: 8px;
	border-radius: 12px;
	background: #f7f4fe;             /* Lavender/Secondary/50 */
	color: #7a44ec;                  /* the glyph is stroke-drawn, so this is it */
	box-sizing: border-box;
}

.pwd-symcard__icon svg {
	display: block;
	width: 24px;
	height: 24px;
}

.pwd-symcard__label {
	font-family: 'Plus Jakarta Sans', sans-serif;
	font-size: 18px;
	font-weight: 500;
	line-height: 1.5;
	color: #181628;
}

@media ( max-width: 1100px ) {
	.pwd-symcards { grid-template-columns: repeat( 3, minmax( 0, 1fr ) ); }
}

@media ( max-width: 820px ) {
	.pwd-symcards { grid-template-columns: repeat( 2, minmax( 0, 1fr ) ); }
}

@media ( max-width: 520px ) {
	.pwd-symcards { grid-template-columns: 1fr; }
	.pwd-symcard { min-height: 0; }
}

/* At A Glance: the box is a Divi column, and the lines inside it are now the
   entry's own. An entry with none leaves the module empty, and a heading over
   a hole is worse than no box. */
.pwd-sc-glance:not( :has( .pwd-sc-gitem ) ) {
	display: none !important;
}

/* The lines came out of a Text module until now, so the grid was stated on
   Divi's .et_pb_text_inner. The module renders the grid element itself. */
.pwd-sc-glancegrid {
	display: grid;
	grid-template-columns: repeat( var( --pwd-glancecols, 2 ), minmax( 0, 1fr ) );
	gap: 16px;
	font-family: 'Plus Jakarta Sans', sans-serif;
	font-size: 14px;
	font-weight: 500;
	line-height: 1.5;
	color: #181628;
}

@media ( max-width: 640px ) {
	.pwd-sc-glancegrid { grid-template-columns: 1fr; }
}

/* A Related band with nothing to relate does not paint.
   The module returns '' when no tab has a card behind it -- which is now the
   honest answer on the two conditions the client's own export gives no
   related stories and no related profiles -- and the Divi section around it
   still drew its 60px of padding and its fill. Check 49: a module that
   renders nothing still leaves a section that paints. The row is the tell:
   .pwd-sc-related is the Related band's own row, and a band that really drew
   something always has a panel in it. */
.pwd-sc-band:has( > .et_pb_row.pwd-sc-related ):not( :has( .pwd-rel__panel ) ) {
	display: none !important;
}

/* 57:356 -- the Symptoms heading is Heading/3, where the other bands on this
   page are Heading/4. It belongs to the card module now: it used to be the
   heading argument on [cms_field field="symptoms_summary"], which prints
   nothing at all on the nine conditions that do not fill that field -- so
   those pages drew ten cards under no heading. */
.pwd-sc-band .pwd-symh {
	font-size: 40px;
	line-height: 1.2;
	text-transform: capitalize;
	margin: 0 0 32px !important;
}

/* pwd-block: cond-tidy-1 */
/* ---------------------------------------------- the condition page, tidied */
/* Added 2026-09-04, from the client reading the live pages beside the frame. */

/* 171:1517 -- the words start at the TOP of a step card. They were centred,
   so on a condition whose steps are not all the same length the titles sat at
   six different heights across one row, which is the first thing the eye
   catches. The card still grows to the tallest in the row. */
.pwd-sc-steps .pwd-sc-stepcard {
	justify-content: flex-start;
}

/* The hero search pill drew a second box inside itself: the input's own
   border is off, but nothing turned off the browser's FOCUS ring, so typing
   in it put a dark rounded rectangle around the text with the magnifier
   outside it. The ring is what tells a keyboard user where they are, so it
   moves to the pill rather than being deleted. */
.pwd-ch-search .cms-filters input[type="search"] {
	outline: none !important;
	box-shadow: none !important;
}

.pwd-ch-search .cms-filters__search:focus-within {
	border-color: var( --pw-primary );
	box-shadow: 0 0 0 3px rgba( 122, 68, 236, 0.15 );
}

/* pwd-block: content-cards */
/* -------------------------------------------- PW Content Cards (57:411 / 57:490) */
/* The Types and Treatment bands. The frame draws three cards and two numbered
   ones; the client's own content runs from two items to thirteen, in groups
   under their own sub-headings, so the grid wraps and every group starts a
   new row. Card, icon tile, number and tick are the frame's own values. */

.pwd-cc__h {
	margin: 0 0 32px !important;
	padding: 0 !important;
	font-family: 'Plus Jakarta Sans', sans-serif;
	font-size: 40px;                 /* 57:413 / 57:492 Heading/3 */
	font-weight: 700;
	line-height: 1.2;
	color: #181628;
}

.pwd-cc__sub {
	margin: 32px 0 16px !important;
	padding: 0 !important;
	font-family: 'Plus Jakarta Sans', sans-serif;
	font-size: 20px;
	font-weight: 700;
	line-height: 1.4;
	color: #181628;
}

.pwd-cc > .pwd-cc__sub:first-of-type {
	margin-top: 0 !important;
}

.pwd-cc__note {
	margin: 0 0 20px !important;
	padding: 0 !important;
	font-family: 'Plus Jakarta Sans', sans-serif;
	font-size: 18px;
	font-weight: 400;
	line-height: 1.5;
	color: #595f6b;
}

.pwd-cc__grid {
	display: grid;
	grid-template-columns: repeat( var( --pwd-cc-cols, 3 ), minmax( 0, 1fr ) );
	gap: 16px;                       /* 57:414 */
	margin: 0 0 24px;
	padding: 0;
	list-style: none;
}

.pwd-cc__card {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 8px;
	padding: 24px;                   /* 57:415 */
	background: #fff;
	border: 1px solid #e4e7ec;
	border-radius: 16px;
	box-shadow: 0 4px 16px rgba( 28, 24, 40, 0.05 );
}

.pwd-cc__icon {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 48px;                     /* 57:416 */
	height: 48px;
	margin-bottom: 8px;
	padding: 12px;
	border-radius: 12px;
	background: #f7f4fe;
	color: #7a44ec;
	box-sizing: border-box;
}

.pwd-cc__icon svg,
.pwd-cc__icon img {
	display: block;
	width: 24px;
	height: 24px;
	object-fit: contain;
}

/* 57:496 -- the numbered card leads with 01 in Lavender/600, 48 tall. */
.pwd-cc__num {
	font-family: 'Plus Jakarta Sans', sans-serif;
	font-size: 48px;
	font-weight: 700;
	line-height: 1.1;
	color: #7a44ec;
	margin-bottom: 16px;
}

.pwd-cc__title {
	font-family: 'Plus Jakarta Sans', sans-serif;
	font-size: 20px;                 /* 57:420 */
	font-weight: 700;
	line-height: 1.4;
	color: #181628;
}

.pwd-cc__sublabel {
	font-family: 'Plus Jakarta Sans', sans-serif;
	font-size: 14px;                 /* 57:421 */
	font-weight: 500;
	line-height: 1.5;
	color: #7a44ec;
}

.pwd-cc__body {
	font-family: 'Plus Jakarta Sans', sans-serif;
	font-size: 16px;                 /* 57:422 */
	font-weight: 400;
	line-height: 1.5;
	color: #595f6b;
}

/* 57:506 -- "Other supportive care may include", each line on a ticked disc. */
.pwd-cc__ticks {
	display: grid;
	grid-template-columns: repeat( auto-fit, minmax( 320px, 1fr ) );
	gap: 12px 24px;
	margin: 0 0 24px;
	padding: 0;
	list-style: none;
}

.pwd-cc__ticks li {
	display: flex;
	align-items: flex-start;
	gap: 12px;
	margin: 0;
	font-family: 'Plus Jakarta Sans', sans-serif;
	font-size: 16px;
	font-weight: 400;
	line-height: 1.5;
	color: #595f6b;
}

.pwd-cc__ticks svg {
	flex: 0 0 auto;
	width: 20px;
	height: 20px;
	margin-top: 2px;
	padding: 4px;
	border-radius: 50%;
	background: #efe8fd;
	color: #7a44ec;
	box-sizing: border-box;
}

/* The field that carries no bold-led item keeps the prose it always had, and
   the prose rules on this page already style it. */
.pwd-cc--prose .cms-block__heading {
	display: none;                   /* the module's own heading is above it */
}

@media ( max-width: 1100px ) {
	.pwd-cc__grid { grid-template-columns: repeat( 2, minmax( 0, 1fr ) ); }
}

@media ( max-width: 720px ) {
	.pwd-cc__grid { grid-template-columns: 1fr; }
	.pwd-cc__h { font-size: 32px; }
}

/* ==========================================================================
   pwd-full-summary -- 2026-09-09, asked for.

   The client wrote a 235-character Short Summary and the card showed two
   lines of four. 229:571 IS a 164-tall card with a two-line summary, so
   this is a departure from the frame rather than a repair of one, and it
   is a setting -- PW Blog Grid and PW Blog Featured both carry "Show the
   whole summary", default on, and turning it off restores the frame.

   The frame's numbers survive as MINIMA, so a short summary still lines up
   with 229:571 and only a long one grows. Nothing here pins a height: the
   grid stretches the cards in a row to the tallest of them, and the footer
   keeps its own `margin-top: auto`, so the date and the arrow still sit on
   the card's bottom edge -- which is what the clamp was protecting.

   The title is here too. It was cut on the same cards (2 lines of 3) and a
   headline broken mid-word is worse than a summary that stops early; there
   is no reason to free one and not the other.
   ========================================================================== */
.pwd-bfull .pwd-blogcard {
	height: auto !important;
	min-height: var(--pwd-b-card-h, 164px);
}
.pwd-bfull .pwd-bc__sum,
.pwd-bfull .pwd-bf__sum,
.pwd-bfull .pwd-bc__title {
	display: block !important;
	-webkit-line-clamp: none !important;
	line-clamp: none !important;
	overflow: visible !important;
	height: auto !important;
}

/* ==========================================================================
   pwd-hero-wave -- 2026-09-09, the client's design-QA note on the stories
   hero: "adjust hero image to match design with static wave".

   115:2495 is drawn BETWEEN the photograph and a cut-out of the two women,
   so it crosses the trees and the ground and the people stand in front of
   it. It was on the page as the section's background image, which paints
   under its own children -- and the exported file had no alpha, so raising
   it would have laid a white rectangle over the photograph.

   The file is Figma's own render of that node with the people taken out of
   it, so this is one overlay and not three layers. The placement is the one
   the section background already had -- `contain` at 100% 0% puts a 924-wide
   image at x=516 of 1440, which is where 115:2495 sits. Only the layer moved.

   z-index 3 because the photograph's column is 2. pointer-events: none, or
   an overlay across the band would swallow every click under it. */
.pwd-sh-hero::after {
	content: "";
	position: absolute;
	inset: 0;
	/* INHERIT: the image is the Divi SECTION's own background setting, so
	   one file and one control serve both copies. Naming the URL here as
	   well would mean a wave the client changes in the builder moves the
	   copy behind the photograph, which nobody sees, and leaves this one. */
	background-image: inherit;
	background-repeat: inherit;
	background-position: inherit;
	background-size: inherit;
	z-index: 3;
	pointer-events: none;
}

/* Below 1240 the hero stacks and the photograph is back in the flow, so an
   overlay pinned to the band's top-right corner no longer sits over it --
   it lands on the words instead. The frame draws no tablet, so it is not
   drawn. */
@media (max-width: 1239px) {
	.pwd-sh-hero::after { content: none; }
}

/* pwd-block: cards-band-empty */
/* A card band with nothing in it does not paint. PW Content Cards returns
   nothing where the field renders nothing -- eleven conditions have no Types
   at all -- and the Divi section around it would otherwise draw its 60px and
   its fill, which is check 49. The row carries the class because a row always
   renders and the module does not. */
/* .pwd-vb is named here because the Visual Builder is the OTHER render of
   this module: entry data deliberately does not resolve there, so it
   draws the grey summary panel rather than cards. Without it, this rule
   matched and took the whole Types and Treatment sections off the
   builder on all twenty-five condition pages -- the client could not
   see the band, let alone edit it. */
.pwd-sc-band:has( > .et_pb_row.pwd-sc-cardsrow ):not( :has( .pwd-cc, .pwd-vb ) ) {
	display: none !important;
}

/* pwd-block: cards-headings */
/* Divi styles every h2 and h3 inside a .pwd-sc-band at 32px with !important
   on its margins, and it wins on one class. A group heading inside a card
   band is 20 -- it is a label over a row of cards, not a band title. */
.pwd-sc-band .pwd-cc .pwd-cc__sub,
.pwd-sc-band .pwd-cc__sub {
	font-size: 20px !important;
	font-weight: 700;
	line-height: 1.4;
	margin: 32px 0 16px !important;
}

.pwd-sc-band .pwd-cc > .pwd-cc__sub:first-child {
	margin-top: 0 !important;
}


/* pwd-iv-condlink -- the single investigator profile, 2026-09-04.
 *
 * 211:1389's condition rows carry an arrow and are links into the condition;
 * the name above them (211:1386) is not. Those rows drew the SAME condition a
 * second time on every profile -- an investigator names one condition and the
 * grid below narrowed to it -- so they are gone, and with them the only way
 * from this card into the condition's own page. The name is the link now.
 *
 * Both declarations are here rather than in the module because a module's own
 * text colour does not reach its anchors, and Divi writes its a{} after this
 * file: the third time this project has met it.
 */
.pwd-iv-condname a.pwd-iv-condlink {
	color: inherit;
	text-decoration: none;
	display: inline-flex;
	align-items: center;
	gap: 8px;
}
.pwd-iv-condname a.pwd-iv-condlink .pwd-i {
	color: #7A44EC;
	flex: 0 0 auto;
	transition: transform .15s ease;
}
.pwd-iv-condname a.pwd-iv-condlink:hover,
.pwd-iv-condname a.pwd-iv-condlink:focus-visible {
	color: #7A44EC;
}
.pwd-iv-condname a.pwd-iv-condlink:hover .pwd-i {
	transform: translateX(3px);
}

/* pwd-iv-condsolo -- the Related Conditions card with no rows under it.
 *
 * The summary carries 24 of bottom margin because 211:1388's row grid used
 * to follow it. The grid drew the same condition the name above it already
 * states, so it is gone -- and the margin was left holding open 24px of
 * nothing at the bottom of the card. It is only a gap while there is
 * something under it to be a gap from.
 *
 * The :has() is inside :not() at the top level, which is legal; a :has()
 * inside another :has() is the one a browser drops in silence (check 96).
 */
.pwd-iv-condcard:not(:has(.cms-card)) .pwd-iv-condsum {
	margin-bottom: 0 !important;
}

/* ------------------------------------------------------------------
   The featured card's details column, against 278:1929.

   Its padding was 40 top and bottom where the frame's is 34, so on the
   three articles that carry an author -- the only case the frame draws --
   the title sat at 590 against the frame's 574, the summary at 679
   against 662, and Read Article at 815 against 830. The card itself was
   the frame's 1240 x 360 the whole time and the error was inside it,
   which is why nothing that measured the band could see it.

   34 is arithmetic rather than a guess: 34 + 72 title + 16 + 72 summary
   + 16 + 56 author row + 16 + 44 button + 34 comes to exactly 360, the
   card's own height. So with an author there is no slack at all and the
   column's justify-content: center is a no-op. It only does anything on
   the fifty articles that name no author, where the frame has nothing to
   say and a centred stack reads better than 35px dumped under the
   button.
   ------------------------------------------------------------------ */
.pwd-bfeat .et_pb_column:last-child {
	padding: 34px 40px 34px 0 !important;         /* 278:1929 */
}

/* marker: pwd-bfeat-pad34 */


/* pwd-block: curated-empty-column */
/* The hub's curated band is three columns: a Featured Condition, two stories,
   and the support rows. The first is a card and the other two are written on
   the page, so when the card draws nothing -- a search that matched none of
   the collection -- the column stayed, a heading over a hole. The module
   marks itself empty and the column folds away; the other two then share the
   row rather than leaving a third of it blank. */
.pwd-ch-curated > .et_pb_column:has( .pwd-featured-none ) {
	display: none !important;
}

.pwd-ch-curated:has( .pwd-featured-none ) {
	display: flex !important;
	gap: 24px;
}

.pwd-ch-curated:has( .pwd-featured-none ) > .et_pb_column {
	flex: 1 1 0 !important;
	width: auto !important;
	max-width: none !important;
	margin: 0 !important;
}

/* ------------------------------------------------------------------
   Read Article sits 24 under the author row, not 16.  [278:1942, 278:1943]

   The frame does it in two pieces: cta-read-row starts 16 after the author
   row and is 44 tall, and the button is 36 tall at y=8 INSIDE it. Built as
   one 16px gap the stack came to 285 where the frame's is 292, and because
   the column is centred those 7 pixels split -- so the title, the summary
   and the button each landed 3 to 4 out with every box on the card the
   right size. 8px here is the row's own inset, and it makes the stack 292,
   which is 360 minus the 34 of padding top and bottom exactly.
   marker: pwd-bfeat-cta8
   ------------------------------------------------------------------ */
.pwd-blogcard .et_pb_button.pwd-bf__cta { margin-top: 8px !important; }


/* pwd-block: featured-resource */
/* The Featured Resource above the resource tabs (130:805, drawn from the
   Clinical Study Resources collection). Two of the fourteen resources name
   the condition they are about, so on every other condition the module draws
   its "nothing here" marker and the whole block folds away. */
.pwd-sc-featres:has( .pwd-featured-none ) {
	display: none !important;
}

.pwd-sc-featres {
	display: block;
	margin: 0 0 32px;
}

/* The card is the story page's wide study card, which the carousel sizes with
   its own variables. Standing on its own it takes the band's width and its
   own natural height. */
.pwd-sc-featres .cms-list {
	--pwd-card-min: 0px;
	--pwd-rel-vis: 1;
	display: block;
	margin: 0;
}

.pwd-sc-featres .cms-card {
	width: 100%;
	min-height: 0;
}

/* ------------------------------------------------------------------
   pwd-chrome-linkcolour -- the chrome states its own link colours, so
   Divi's customizer cannot take them.

   Divi ships `a, .et-db #et-boc .et-l a { color: #6a2b7f }` -- ONE id
   and three classes -- and it ships it in
   et-divi-customizer-CPT-global.min.css, which is enqueued only on
   custom-post-type routes.  Every colour in this file is written at one
   or two classes, so on those routes Divi wins and on every other route
   it does not.  Measured: /stories/ rendered 55 of 55 chrome links in
   #6a2b7f -- the Get Started button's label, all 21 footer links,
   "Elevate Sign In" and all sixteen "Explore" links in the dropdowns --
   while the same navbar on the other 30 routes was correct.  One page's
   button a different colour from every other page's, with no error
   anywhere, which is exactly what a status code cannot see.

   These restate the values already in this file, so nothing changes on
   a page that is already right.  Colour only, and every selector names
   a chrome class -- none of this can reach a page's own content.
   ------------------------------------------------------------------ */
.pwd-nav__cta,
.pwd-nav__cta:hover,
.pwd-nav__cta:focus-visible                { color: var(--pw-white) !important; }

.pwd-nav__explore,
.pwd-nav__sub,
.pwd-nav__pill--link                       { color: var(--pw-grey-1) !important; }
.pwd-nav__explore:hover,
.pwd-nav__sub:hover,
.pwd-nav__pill--link:hover,
.pwd-nav__card:hover .pwd-nav__explore     { color: var(--pw-primary) !important; }

.pwd-footer__item a                        { color: var(--pw-white) !important; }
.pwd-footer__item a:hover                  { color: var(--pw-lav-200) !important; }
.pwd-footer__item.is-sub a                 { color: var(--pw-grey-2) !important; }
.pwd-footer__legal a                       { color: var(--pw-grey-2) !important; }
.pwd-footer__legal a:hover                 { color: var(--pw-white) !important; }

/* pwd-block: journey-one-size */
/* 171:1513 is 167 x 160, and it is that for all seven steps whatever each one
   says. The built row let every card take its own copy's height, so Epilepsy's
   ten steps came out at three different heights with the last one cut off at
   the page edge -- the client photographed it beside the frame. One size, the
   frame's own, and the row scrolls when there are more steps than fit. These
   rules sit at the end of the file deliberately: they are the last word on a
   component several passes have edited. */

.pwd-sc-steps .pwd-sc-step {
	flex: 0 0 167px !important;      /* 171:1284 -- 1240 over seven, gaps out */
	min-width: 167px !important;
	max-width: 167px !important;
}

.pwd-sc-steps .pwd-sc-stepcard {
	flex: 0 0 auto !important;
	height: 160px !important;        /* 171:1513 */
	min-height: 160px !important;
	justify-content: flex-start !important;
	gap: 12px;                       /* 171:1517 */
	padding: 20px 14px !important;
	border: 1.5px solid #efe8fd !important;
	border-radius: 16px !important;
	background: #fff;
	overflow: hidden;
}

/* The words are clamped rather than the card stretched, because a row of cards
   that are each as tall as their own sentence is the thing that looked broken.
   Nothing is lost from the page: the entry's own Diagnosis prose is printed
   under the timeline. */
.pwd-sc-steps .pwd-sc-steptitle {
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
	font-size: 16px;                 /* 171:1518 Text/16 Medium */
	font-weight: 500;
	line-height: 1.5;
	color: #181628;
}

.pwd-sc-steps .pwd-sc-stepcopy {
	display: -webkit-box;
	-webkit-line-clamp: 3;
	-webkit-box-orient: vertical;
	overflow: hidden;
	font-size: 14px;                 /* 171:1519 Text/14 Medium */
	font-weight: 500;
	line-height: 1.5;
	color: #595f6b;
}

/* A row that fits is centred; one that does not scrolls from its first step,
   because a centred flex row that overflows is clipped at its left edge and
   the first circle disappears behind it. */
.pwd-sc-steps {
	justify-content: flex-start;
	overflow-x: auto;
	scroll-snap-type: x proximity;
}

.pwd-sc-steps .pwd-sc-step {
	scroll-snap-align: start;
}

@media ( max-width: 560px ) {
	.pwd-sc-steps .pwd-sc-step {
		flex: 0 0 150px !important;
		min-width: 150px !important;
		max-width: 150px !important;
	}
}

/* pwd-block: featured-study-card */
/* 130:805 exactly: the words on the left, a 420-wide photograph on the right
   at the card's full height. The band was borrowing the story page's carousel
   card, whose photograph is on the left and whose title is 24px Spectral, and
   at 1240 wide that read as a huge picture with a stripe of text under it. */

.pwd-sc-featres .cms-card {
	padding: 28px;                            /* 130:805 */
	background: #fff;
	border: 1px solid #e4e7ec;
	border-radius: 24px;
	box-shadow: 0 8px 12px rgba( 107, 51, 235, 0.06 );
	overflow: hidden;
}

.pwd-sc-featres .pwd-fs2-row {
	display: flex !important;
	align-items: stretch;
	gap: 28px;
	width: 100% !important;
	max-width: 100% !important;
	padding: 0 !important;
}

.pwd-sc-featres .pwd-fs2-row::before,
.pwd-sc-featres .pwd-fs2-row::after { display: none !important; }

.pwd-sc-featres .pwd-fs2-body {
	flex: 1 1 auto !important;
	width: auto !important;
	max-width: none !important;
	margin: 0 !important;
	display: flex;
	flex-direction: column;
	justify-content: space-between;   /* 130:806 -- eyebrow, block, button */
}

.pwd-sc-featres .pwd-fs2-photocol {
	flex: 0 0 420px !important;       /* 130:822 */
	width: 420px !important;
	max-width: 420px !important;
	margin: 0 !important;
}

.pwd-sc-featres .pwd-fs2-photo,
.pwd-sc-featres .pwd-fs2-photo .et_pb_image_wrap,
.pwd-sc-featres .pwd-fs2-photo a {
	display: block;
	height: 100% !important;
	width: 100% !important;
}

.pwd-sc-featres .pwd-fs2-photo img {
	width: 100% !important;
	height: 100% !important;
	min-height: 224px;
	object-fit: cover;
	border-radius: 16px !important;   /* 130:822 */
}

.pwd-sc-featres .pwd-fs2-eyebrow .et_pb_text_inner {
	text-transform: uppercase;
	letter-spacing: 0.04em;
}

.pwd-sc-featres .pwd-fs2-title .et_pb_text_inner {
	text-transform: capitalize;       /* 130:809 */
}

.pwd-sc-featres .pwd-fs2-title a,
.pwd-sc-featres .pwd-fs2-link a {
	color: inherit;
	text-decoration: none;
}

.pwd-sc-featres .pwd-fs2-title a:hover { color: #7a44ec; }

.pwd-sc-featres .pwd-fs2-link a {
	display: inline-flex;
	align-items: center;
	gap: 8px;                          /* 130:821 */
}

.pwd-sc-featres .pwd-fs2-link svg { width: 16px; height: 16px; }

/* 130:813-820 -- the phase pills. The Recruiting badge and the trial phases
   belong to the Studies collection nobody exported, so the card carries the
   one tag this collection really has: the condition it is about. */
.pwd-sc-featres .pwd-fs2-tags .et_pb_text_inner {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
}

.pwd-sc-featres .pwd-fs2-tag a,
.pwd-sc-featres .pwd-fs2-tag span,
.pwd-sc-featres .pwd-fs2-tag {
	display: inline-flex;
	align-items: center;
	padding: 6px 16px;
	border-radius: 100px;
	background: #efe8fd;
	border: 1px solid #e1d5fb;
	font-family: 'Plus Jakarta Sans', sans-serif;
	font-size: 14px;
	font-weight: 600;
	line-height: 1.5;
	color: #7a44ec;
	text-decoration: none;
}

/* A tag that is itself a link renders its own anchor inside the span, so only
   the outer one carries the pill. */
.pwd-sc-featres .pwd-fs2-tag a {
	padding: 0;
	border: 0;
	background: none;
}

@media ( max-width: 900px ) {
	.pwd-sc-featres .pwd-fs2-row { flex-direction: column-reverse; }
	.pwd-sc-featres .pwd-fs2-photocol {
		flex: 0 0 auto !important;
		width: 100% !important;
		max-width: 100% !important;
	}
	.pwd-sc-featres .pwd-fs2-photo img { min-height: 200px; max-height: 260px; }
}

/* pwd-block: featured-study-row-direction */
/* The card grid states `flex-direction: column` on every element inside a
   card -- `.cms-list--carded .cms-card > div, .et-l, .et_pb_column ...` -- so
   the two halves of this card stacked and the photograph landed under the
   words at 420 square. That rule exists to make a stacked card fill its
   column and it reaches anything a card contains, which is check 76 again.
   The row says which way it runs. */
.pwd-sc-featres .pwd-fs2-row {
	flex-direction: row !important;
}

.pwd-sc-featres .pwd-fs2-body {
	width: auto !important;
	max-width: none !important;
	min-width: 0 !important;
}

.pwd-sc-featres .pwd-fs2-photo img { max-height: 300px; }

@media ( max-width: 900px ) {
	.pwd-sc-featres .pwd-fs2-row { flex-direction: column-reverse !important; }
}

/* pwd-block: journey-clamp-fit */
/* Three clamped lines of copy under a two-line title does not fit inside
   171:1513's 160, so the last line was cut through the middle of the letters.
   The card is the frame's height, so the words fit it: two lines of title and
   two of copy is 48 + 12 + 42 inside 120 of content box, whatever the step
   says. The full sentence stays in the markup -- it is on the page in the
   entry's own Diagnosis prose, and a screen reader still reads it. */
.pwd-sc-steps .pwd-sc-stepcopy {
	-webkit-line-clamp: 2;
	margin: 0;
}

.pwd-sc-steps .pwd-sc-steptitle {
	margin: 0;
}

/* Anything the clamp does not catch -- a long unbroken word -- breaks rather
   than pushing the card out of shape. */
.pwd-sc-steps .pwd-sc-stepcard { overflow-wrap: anywhere; }

/* pwd-block: resource-list */
/* The five resource tabs (130:834). The frame draws a card per resource with
   a round purple icon beside the name; the page drew a row of grey pills,
   because the values were slugs with no picture to draw. They are rows with a
   picture of their own now, so the card is what the frame says. The
   description and the Learn More the frame also draws are not built: the
   Condition Resources collection was never exported, so a name is all the
   data there is, and a button that goes nowhere is worse than none. */

.pwd-rl {
	display: grid;
	grid-template-columns: repeat( var( --pwd-rl-cols, 2 ), minmax( 0, 1fr ) );
	gap: 16px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.pwd-rl__item {
	display: flex;
	align-items: center;
	gap: 16px;
	margin: 0;
	padding: 20px;
	background: #fff;
	border: 1px solid #e4e7ec;
	border-radius: 16px;
	box-shadow: 0 4px 16px rgba( 28, 24, 40, 0.05 );
}

.pwd-rl__icon {
	display: flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 auto;
	width: 48px;
	height: 48px;
	border-radius: 50%;
	background: var( --pw-gradient, linear-gradient( 135deg, #9163ee, #7a44ec ) );
	background-color: #7a44ec;
	color: #fff;
	overflow: hidden;
}

.pwd-rl__icon svg { width: 22px; height: 22px; }
.pwd-rl__icon img { width: 100%; height: 100%; object-fit: cover; }

.pwd-rl__name {
	font-family: 'Plus Jakarta Sans', sans-serif;
	font-size: 16px;
	font-weight: 700;
	line-height: 1.5;
	color: #181628;
	overflow-wrap: anywhere;
}

.pwd-rl__none {
	margin: 0;
	font-family: 'Plus Jakarta Sans', sans-serif;
	font-size: 16px;
	color: #595f6b;
}

/* Divi's own tab panel padding is the band's, and the cards bring their own. */
.pwd-sc-restabs .et_pb_tab_content > .pwd-rl { margin: 0; }

@media ( max-width: 780px ) {
	.pwd-rl { grid-template-columns: 1fr; }
}


/* ------------------------------------------------------------------
   pwd-relbox -- the Related Resources band is not a card.

   115:1690 "Container" is a plain `flex flex-col gap-[32px]` frame: no
   fill, no stroke, no radius, no shadow. Only the two StoryCards inside
   it carry `border border-[#e4e7ec] rounded-[24px] shadow`.

   `.pwd-rel` had been given the CARD's own rule -- white, 24px corners,
   a purple shadow and a 1px #E4E7EC edge -- and a later line already
   undid the fill, the radius and the shadow with !important and MISSED
   the border. So a hairline rectangle was drawn around the whole band on
   all seventy story pages and all twenty-five condition pages, and it
   cost 2px besides: the 1240 head measured 1238, the viewport 1164 and
   each card 570 against the frame's 571.

   qa-story.py asserted the band's own top rule and the CARD's border and
   passed on both throughout -- nothing had ever read the container's.
   ------------------------------------------------------------------ */
.pwd-rel { border: 0 !important; }

/* pwd-block: journey-left-align */
/* 171:1283 StepsRow sits at x=0 inside 171:1278's 1240 -- the first step's card
   starts on the container's own left edge, level with the "Diagnosis Journey"
   heading above it (171:1279, also x=0).
   The row had `margin-left: auto` on its first step and `margin-right: auto` on
   its last, which centres it -- written when the step was allowed to grow, so
   that four steps did not read as a quarter-width card each. The step is pinned
   to the frame's 167 now (journey-one-size), so those auto margins only ever
   inset the row: six steps came out 89px in from the left on both sides, with
   the heading flush and the timeline under it indented. The client photographed
   exactly that beside the frame.
   Left-aligned, so a condition with two steps and one with ten both start where
   the frame starts them. The row still scrolls when there are more steps than
   fit, which is what the auto margins were being careful about. */

.pwd-sc-steps                            { justify-content: flex-start !important; }
.pwd-sc-steps .pwd-sc-step:first-child   { margin-left: 0 !important; }
.pwd-sc-steps .pwd-sc-step:last-child    { margin-right: 0 !important; }


/* =========================================================================
   pwd-ss-below1440-fix -- the story page between 1288 and 1439, read beside
   115:1610 on 2026-09-04 after the client opened it at 1366.

   Two faults, and both are a rule of ours that was present, matched, served
   and LOSING (check 52). qa-story.py passed 171/171 throughout, because it
   has only ever run at 1440 -- check 66, met again on the one screen that
   was said to be finished.

   1. "Under 1440 the margins are what gives first" was written as
      `max-width: calc(100vw - 48px)`, which does not shrink the margins --
      it REMOVES the 1240 cap. Between 1288 and 1439 the row is therefore
      WIDER than the frame's content column: at 1366 the hero, the article
      and the Related band measured 1318 at x=24 while the navbar above them
      was 1229 at x=68, so the page had three different left edges (24, 63
      and 68) and the article ran 934 where 115:1647 gives it 856. min() is
      the whole repair: it keeps the shrink below 1288 byte for byte and
      restores the cap above it. --pw-shell is the 1240 the design already
      states, so the number lives in one place.

   2. The photograph was 2px tall on every width below 1280, on all seventy
      story pages. Both halves of the stack rule had been dead since they
      were written: Divi's own `#et-boc .et-l .et_pb_column { min-height: 1px }`
      carries an id and beat `.pwd-ss-heropic.et_pb_column` (0,2,0), and the
      unconditional `.pwd-ss-photo img { min-height: 0 !important }` twelve
      hundred lines above beat the block's own `min-height: 320px`. Stating
      the column's height with !important wins both -- Divi's rule has none --
      and the absolutely positioned photograph then fills it, so the img's
      min-height: 0 no longer matters and is left alone.

      320 is not a frame number: the file draws no tablet at all. It is the
      height whoever wrote the stack block already chose, now applying.
   ========================================================================= */

@media (max-width: 1439px) {
	.pwd-sh-herorow, .pwd-ss-herorow,
	.pwd-sh-controlrow, .pwd-sh-workspace, .pwd-sh-morerow,
	.pwd-fs-card, .pwd-ss-bodyrow, .pwd-ss-relrow {
		max-width: min(var(--pw-shell), calc(100vw - 48px)) !important;
	}
}

@media (max-width: 1279px) {
	.pwd-ss-heropic.et_pb_column { min-height: 320px !important; }
}


/* =========================================================================
   pwd-rc-card-fit -- the Related Resources card, read against 115:5211 on
   2026-09-04. The card is a fixed 563 with overflow:hidden, and on any story
   whose summary took two lines "Read Story" ran to 571 and was CLIPPED IN
   HALF. Three of the seventy were checked and one clipped, which is why it
   read as a one-off rather than a defect.

   The mechanism that was supposed to prevent it has never worked: the
   wrapper's `margin-top: auto !important` computes 16px, because Divi writes
   the module's own margin from a selector carrying an id and wins at equal
   importance (check 71). Rather than fight that, the frame's own arithmetic
   is stated, so nothing needs pinning:

       photo    0   - 320
       badge  348   - 377      (28 of padding)
       title  393   - 451      (2 lines, already clamped)
       summ   463   - 487      115:5218 is ONE line, 24 tall
       button 503   - 535      117:7479 is 120 x 32
       card                563  = 535 + 28 of padding

   The summary was clamped to two lines but never given a height, so it was
   24 on a short teaser and 48 on a long one and the button moved with it.
   One line at 24 is what the frame draws and what makes every card's button
   land on the same y -- which is the whole reason a card grid states a
   height at all.
   ========================================================================= */

.pwd-rc-sum .et_pb_text_inner {
	-webkit-line-clamp: 1;
	height: 24px;
}

.et_pb_button.pwd-rc-link {
	height: 32px;
	padding-top: 0 !important;
	padding-bottom: 0 !important;
}


/* =========================================================================
   pwd-rc-title-fit -- the Related Resources card, read against 115:5211 on
   2026-09-04, after the client put two story cards side by side and found
   "Read Story" at a different height in each.

   The summary was pinned to one line the same day (pwd-rc-card-fit) and the
   TITLE was not: it is clamped to two lines and given no height, so it is 29
   tall on a short title and 58 on a long one, and everything under it moves
   with it. Measured on /stories/an-ulcerative-colitis-.../ at 1440:

                        card 11142        card 11143
       title              394 - 452         394 - 423   <- 29 short
       summary            464 - 488         435 - 459   <- 29 high
       Read Story         504 - 536         502 - 534

   The two buttons happen to land 2px apart there only because the wrapper's
   `margin-top: auto` absorbs 27 of the 29 -- and at 768 nothing absorbs it and
   they land 29 apart (520 against 491). Either way the summary line is 29 out
   in every card whose title is one line, which is what the eye reads as two
   cards that do not line up.

   115:5217 gives the title 393 - 451, which is two lines of 24px at 1.2. Said
   as a HEIGHT as well as a clamp, every row under it lands on the same y in
   every card and nothing has to be pinned -- the same move the story grid card
   already makes for its summary (check 71). Nothing is lost to it: the clamp
   was already two lines, so a title that took one still takes one and simply
   reserves the second.

       photo    0 - 320
       badge  348 - 377
       title  393 - 451   <- stated
       summ   463 - 487
       button 503 - 535
       card         563
   ========================================================================= */

.pwd-rel__viewport .cms-card .pwd-rc-title .et_pb_text_inner {
	height: 58px;
}

/* The photograph, the badge and the summary are each a fixed box already, so
   with the title stated the column's content is exactly the frame's 563 and
   the auto margin has nothing left to absorb. It stays, harmlessly, as the
   backstop for a card the client adds a module to. */


/* --- pwd-who-fix-4 ---------------------------------------------------------
   The rule between two of the values columns.
   -------------------------------------------------------------------------- */

/* 135:3011 centres each rule in the 48 between two columns of text. Divi
   draws it as `border-left` on the column, which puts it ON the column's own
   left edge -- 1px from the words to its right and 41 from the words to its
   left. The client saw the text touching the line.
   The gutter between two column boxes is 24 and each column holds 242 of
   text in a 259 box, so the middle of the gap BETWEEN THE WORDS is 20 to the
   left of the box edge, which is where the frame puts the line. */
body.pwd-designed .pwd-a-valuesgrid > .et_pb_column { position: relative; }
body.pwd-designed .pwd-a-valuesgrid > .et_pb_column + .et_pb_column {
	border-left: 0 !important;
}
body.pwd-designed .pwd-a-valuesgrid > .et_pb_column + .et_pb_column::after {
	content: "";
	position: absolute;
	left: -20px; top: 0; bottom: 0;
	width: 1px;
	background: #E4D5F5;
	pointer-events: none;
}
/* Below the frame's own width the columns stack, and a vertical rule between
   two things that are one above the other is nonsense. */
@media (max-width: 980px) {
	body.pwd-designed .pwd-a-valuesgrid > .et_pb_column + .et_pb_column::after {
		display: none;
	}
}

/* ==========================================================================
   THE VALUES CARD, READ AGAIN                     Figma 135:3656 / 135:3664
   --------------------------------------------------------------------------
   pwd-about3-values

   The client read this band beside the frame and said the design has a wave
   behind it and the content's padding is wrong. Both were true, and
   qa_who.py passed 100/100 the whole time -- it measures the boxes that were
   already asserted, and not one of these is a box.

   The wave, and the rule between two columns, were fixed the same afternoon
   by another session (`pwd-who-fix-4` above, and the section's own
   background image). Nothing here touches either: two rules drawing one
   divider is two dividers.

   What is left is the card itself and the alignment of the four columns. The
   wash and the gaps are Divi settings now (fix-who-values.php), because they
   are what the client would want to change. What is here is only what a
   module cannot say about itself.
   ========================================================================== */

/* 135:3656 is a three-stop wash, and both halves of the card were a flat
   rgba(255,255,255,0.72) -- which is also what was hiding the wave the other
   session had just put behind it, because an opaque-ish white sits between
   the two.

   This supersedes the fill under "the values card: two rows that read as
   one" further up this file. It has to say the wash as a background-IMAGE
   and the colour as transparent, because that rule's `background` shorthand
   is `!important` and would otherwise go on painting white underneath. The
   rows carry the same wash as their own Divi gradient, which outranks this
   and is where the client can change it (check 79); this is the half that
   applies if that setting is ever cleared.

   The border is Lavender/Secondary/200, and the frame's Glass Effect is a
   20 radius, not the 12 that was there.                                     */
.pwd-a-valuestop,
.pwd-a-valuesgrid {
	background-color: transparent !important;
	background-image: linear-gradient(
		90deg,
		rgba(245, 243, 255, 0.7) 0%,
		rgba(255, 255, 255, 0.7) 55%,
		rgba(245, 243, 255, 0.7) 100%
	) !important;
	border-color: #E1D5FB !important;
	backdrop-filter: blur(20px);
	-webkit-backdrop-filter: blur(20px);
}

/* 135:3664 -- every title reserves two lines, so all four descriptions start
   at the same y. The frame states it twice: "Resourceful" and "Lifetime
   Learner" each carry a second, empty paragraph so their box is 54 like the
   two titles that really do wrap.

   Without it the row is as tall as whatever is in it -- 32 for a one-line
   title, because the icon tile is 32, and 54 for a two-line one -- so the
   four descriptions started at 2039, 2020, 2020 and 2039. That 19px stagger
   is the thing the client photographed. A module has no way to say "as tall
   as the title beside me", which is why this is not a module setting: two
   18px lines at 1.5 is 54, and the module now sets the 1.5.                 */
.pwd-a-valueshead .et_pb_text_inner {
	min-height: 54px;
}

/* Below 980 the grid wraps to two columns and then to one. The frame draws no
   tablet or phone at all, so this is a decision rather than a measurement: a
   title stops reserving a second line once there is nothing beside it to line
   up with.                                                                  */
@media (max-width: 980px) {
	.pwd-a-valueshead .et_pb_text_inner {
		min-height: 0;
	}
}


/* =========================================================================
   pwd-ss-meta-gutter -- the story's meta band below 1288, found while
   screenshotting the hero repair at 1024 rather than by any measurement.

   115:1628 is a full-bleed band whose CONTENT sits on the same 1240 column
   as the hero above it and the article below it. The band's section is
   full-bleed correctly; its inner row carries only Divi's own
   max-width: 1240px, which below 1240 + 48 resolves to the viewport and
   leaves NO side gutter at all -- so "Condition:", the read time and Share
   were flush against the left edge of the screen at 1024, 768 and 480 while
   everything above and below them kept 24. At 1279 it was 4px out (20
   against 24), which is the same fault too small to see.

   The newsletter row is full-bleed for the same reason and is NOT listed
   here: it carries its own .pwd-shell, so its content is already inset by
   --pw-gutter and adding a cap would inset it twice (check 86).
   ========================================================================= */

@media (max-width: 1439px) {
	.pwd-ss-metarow {
		max-width: min(var(--pw-shell), calc(100vw - 48px)) !important;
	}
}


/* pwd-block: cards-supportive-aside */
/* -------------------------------- PW Content Cards: the row (57:493 / 57:527)
 *
 * 57:493 is a ROW of three children, not a stack: Step 01 Card (408.67),
 * Step 02 Card (408.67) and the Supportive Care Column (57:504, 374.67) --
 * 408.67 + 24 + 408.67 + 24 + 374.67 is the band's own 1240. Under it, at the
 * full 1240, 57:527 draws a Banner: a #F1F3F7 bar with a bordered info mark
 * and one 14px line, 32 below the grid.
 *
 * The page had all three stacked, with a hole in the third grid column where
 * the frame puts the list. Every box on it was already the frame's; the shape
 * was not (check 62). The module decides what goes in the aside -- see
 * split_aside() -- so a band whose content has no list after its cards keeps
 * the flat layout it has always had and none of these rules match it.
 */

.pwd-cc__row {
	display: flex;
	align-items: flex-start;
	gap: 24px;                       /* 57:493 */
}

.pwd-cc__main {
	flex: 1 1 auto;
	min-width: 0;
}

/* 57:504 -- 374.67 of the 1240, with its own 16 of left padding. A percentage
   rather than the pixels, so the column keeps its share of a narrower shell. */
.pwd-cc__aside {
	flex: 0 0 30.2151%;
	min-width: 0;
	box-sizing: border-box;
	padding-left: 16px;
	display: flex;
	flex-direction: column;
	gap: 16px;                       /* 57:504 */
}

/* 57:505 -- "Other supportive care may include:" is 18 SemiBold, not the 20
   Bold a group heading takes in the main column. Divi styles every h3 in a
   .pwd-sc-band at 20 with !important and wins on one class, so this says it
   at two and later in the file. */
.pwd-cc__aside .pwd-cc__sub {
	margin: 0 !important;
	font-size: 18px !important;
	font-weight: 600;
	line-height: 1.5;
	color: #181628;
}

.pwd-cc__aside .pwd-cc__note {
	margin: 0 !important;
	font-size: 16px;
}

/* 57:506 -- one line per row, 12 apart, and each line is Medium rather than
   Regular (57:511). The disc is 20 with a 10px check inside it (85:392 /
   85:393), and its row carries 4 of its own padding (85:408). */
.pwd-cc__aside .pwd-cc__ticks {
	grid-template-columns: 1fr;
	gap: 12px;
	margin: 0;
}

.pwd-cc__aside .pwd-cc__ticks li {
	gap: 12px;                       /* 57:507 */
	font-weight: 500;
}

.pwd-cc__aside .pwd-cc__ticks svg {
	margin-top: 4px;
	padding: 5px;
	border-radius: 10px;
}

/* The cards share what is left of the row. auto-fit rather than a fixed
   count: two cards collapse the empty track and come out at the frame's own
   408.67 each, three fill three tracks, and a fourth wraps -- which is what
   the client asked for when they said the cards may become three or four. */
.pwd-cc--aside .pwd-cc__grid {
	grid-template-columns: repeat( auto-fit, minmax( 240px, 1fr ) );
	gap: 24px;                       /* 57:493 */
}

.pwd-cc__main > .pwd-cc__sub:first-of-type,
.pwd-sc-band .pwd-cc__main > .pwd-cc__sub:first-child {
	margin-top: 0 !important;
}

/* The column ends where its content ends: the grid's own 24 of bottom margin
   is a gap from what follows it, and in the row nothing follows it. */
.pwd-cc__row > * > *:last-child {
	margin-bottom: 0 !important;
}

/* 57:527 -- the Banner. */
.pwd-cc__banner {
	display: flex;
	align-items: center;
	gap: 12px;
	margin: 32px 0 0 !important;
	padding: 14px 20px !important;
	border: 1px solid #f1f3f7;
	border-radius: 12px;
	background: #f1f3f7;
	font-family: 'Plus Jakarta Sans', sans-serif;
	font-size: 14px;
	font-weight: 500;
	line-height: 1.5;
	color: #181628;
}

/* I57:527;430:537 -- a 16px bordered square with an "i" in it. It is a border
   and a letter in the frame rather than an exported glyph, so it is drawn the
   same way here. */
.pwd-cc__i {
	flex: 0 0 auto;
	display: flex;
	align-items: center;
	justify-content: center;
	box-sizing: border-box;
	width: 16px;
	height: 16px;
	border: 1px solid #7a44ec;
	border-radius: 8px;
	font-family: 'Inter', 'Plus Jakarta Sans', sans-serif;
	font-size: 10px;
	font-weight: 700;
	line-height: 1;
	color: #7a44ec;
}

/* The frame draws no tablet. Below the width where three cards and a 374
   column stop fitting, the list goes under the cards and spreads out again.
   Both card rules are restated at this specificity or the earlier media
   query, which names one class, would lose to .pwd-cc--aside (check 88). */
@media ( max-width: 1100px ) {
	.pwd-cc__row { display: block; }
	.pwd-cc__aside {
		flex: none;
		padding-left: 0;
		margin-top: 32px;
	}
	.pwd-cc__aside .pwd-cc__ticks {
		grid-template-columns: repeat( auto-fit, minmax( 300px, 1fr ) );
		gap: 12px 24px;
	}
	.pwd-cc--aside .pwd-cc__grid { grid-template-columns: repeat( 2, minmax( 0, 1fr ) ); }
}

@media ( max-width: 720px ) {
	.pwd-cc--aside .pwd-cc__grid { grid-template-columns: 1fr; }
}


/* pwd-block: cards-list-reset */
/* ------------------------------------- PW Content Cards: two rules that lost
 *
 * 1. Divi styles every `ul` on this site `padding: 0 0 23px 1em` from a
 *    selector carrying an id, so `.pwd-cc__grid { padding: 0 }` -- in the
 *    file since the band was built -- had never once applied. Measured on
 *    /conditions/anca-av/: the card grid computed `0px 0px 23px 14px`, so
 *    every card row on all 42 bands sat 14px right of the heading above it
 *    (57:493 is x=0 of the 1240) with 23px of dead space under it, and two
 *    cards came out 401.7 where the frame's are 408.67. The ticked list had
 *    it too, on top of the aside's own 16 of padding. Third time this exact
 *    rule has cost a measurement -- check 76 -- and the same shape as the
 *    footer's own reset at line 5061.
 *
 * 2. `.pwd-sc-band .pwd-cc .pwd-cc__sub` says 20px/700 at three classes, so
 *    the aside's own 18px/600 (57:505) lost on two. Stated at four.
 */

body #page-container .pwd-cc ul.pwd-cc__grid,
body #page-container .pwd-cc ul.pwd-cc__ticks {
	padding: 0 !important;
}

.pwd-sc-band .pwd-cc .pwd-cc__aside .pwd-cc__sub,
.pwd-cc .pwd-cc__aside .pwd-cc__sub {
	margin: 0 !important;
	padding: 0 !important;
	font-size: 18px !important;      /* 57:505 Text/18px/Semi Bold */
	font-weight: 600 !important;
	line-height: 1.5 !important;
	color: #181628;
}


/* --------------------------------------------------------------------------
   135:779 -- the closing quote, drawn from the collection.

   The band was on the page as five hand-filled Divi modules until 2026-09-04,
   when it was removed because every word in it was the designer's own. It is
   a PW Featured Entry through the `pw-quote-investigator` Divi Library card
   now, so the portrait, the words and the attribution are one investigator's
   own fields -- and it follows the directory's filter, so narrowing to MDS
   gives an MDS investigator's quotation.

   The card's own look is still `.pwd-p-quotecard` above; what is here is only
   what moving it inside a card costs. Two of this project's own traps:

     - check 79. Divi writes a page's design CSS by scanning that page, and a
       card rendered through [cms] from the Divi Library was never on the page
       it scanned -- so the row's `custom_padding` of 32 never reaches the
       browser and `.pwd-p-quoterow { padding: 0 !important }` is left to win.
       The setting stays in the module, where the client looks for it; this is
       the half that applies.
     - check 63. The crop has to reach the WRAPPER. front.css puts every card
       image in a `3 / 2` frame with the <img> absolutely positioned over it,
       which is right for a listing tile and not for a 170px round portrait.
   -------------------------------------------------------------------------- */

/* The wrapper's own card look belongs to the featured investigator above, not
   to this one -- the quote card carries its own wash and edge. */
.pwd-featured-wrap:has( .pwd-p-quotecard ) .cms-card {
	background: none;
	border: 0;
	border-radius: 0;
	box-shadow: none;
	overflow: visible;
}

.pwd-featured-wrap .pwd-p-quoterow {
	padding: 32px !important;
	margin: 0 !important;
	width: 100% !important;
	max-width: 100% !important;
}

/* 135:781 -- 170 round, and every box in the chain has to say so. */
.pwd-featured-wrap .pwd-p-qimg,
.pwd-featured-wrap .pwd-p-qimg a,
.pwd-featured-wrap .pwd-p-qimg .et_pb_image_wrap {
	position: static !important;
	display: block !important;
	width: 170px !important;
	height: 170px !important;
	max-width: 170px !important;
	aspect-ratio: auto !important;
	margin: 0 !important;
	border-radius: 999px !important;
	overflow: hidden;
}
.pwd-featured-wrap .pwd-p-qimg .et_pb_image_wrap img {
	position: static !important;
	width: 170px !important;
	height: 170px !important;
	max-width: none !important;
	object-fit: cover;
	/* These are portraits and a face sits in the upper half of the frame. */
	object-position: center 30%;
	border-radius: 999px !important;
}

/* 135:789-790 -- the name, the role, the institution, each on its own line.
   Spans rather than <br>s so that an entry naming no institution loses that
   line instead of leaving a blank one: two of the nine name none, and a gap
   under a doctor's name reads as something that failed to load. */
.pwd-q-by .pwd-q-line { display: block; }
.pwd-q-by .pwd-q-line:empty { display: none !important; }
/* One role runs to 150 characters -- the client's own writing, not a fault.
   Two lines is what the frame's 234-tall card has room for. */
.pwd-q-by .pwd-q-role {
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

/* Nothing eligible survived the visitor's filter. The row is the client's own
   and carries no heading, so there is nothing to leave stranded -- but an
   empty 32px card with a border would still paint. `:has()` is flat here on
   purpose: nested inside another `:has()` the whole rule is dropped at parse
   time, in silence (check 96). */
.pwd-p-quoteband:has( .pwd-featured-none ) { display: none !important; }


/* --- pwd-who-fix-5 ---------------------------------------------------------
   Divi's `.et_pb_text > :last-child { padding-bottom: 0 }` and the rules it
   silently beat.
   -------------------------------------------------------------------------- */

/* The client photographed the Get Involved callouts on Community Service and
   asked about their padding-bottom. There is none: the callout is written
   `padding: 18px 20px` on `.pwd-cs-callout .et_pb_text_inner` and the browser
   computes `18px 20px 0px`.
   
   Divi ships `.et_pb_text > :last-child { padding-bottom: 0 }`, and
   `:last-child` is a pseudo-CLASS -- it counts as a class -- so that selector
   is (0,2,0) and ours is (0,2,0) too. A TIE, decided by source order, and
   style-static.min.css is enqueued AFTER pw-design.css. So Divi wins every
   time, on any two-class rule that gives an `.et_pb_text_inner` a bottom
   padding. Naming the module's own `.et_pb_text` alongside our class makes it
   (0,3,0), which wins on specificity and needs no !important.
   
   Two components were losing their bottom padding this way: this callout, and
   the Condition Hub's At A Glance box.                                       */
.pwd-cs-callout.et_pb_text .et_pb_text_inner { padding-bottom: 18px; }
.pwd-ch-glance.et_pb_text  .et_pb_text_inner { padding-bottom: 16px; }


/* pwd-block: cards-num-spectral */
/* ----------------------------------- The numbered card, against 57:494/57:496
 *
 * 57:496 is the style guide's "accent 2": Spectral Bold 48 at 100% leading,
 * and the number was drawing in Plus Jakarta Sans -- the most visible thing
 * on the band, and the one the client's own screenshot of the frame shows as
 * a serif. Its "Header Row" (57:495) is 73 tall and the title sits 16 under
 * it, so the leading is Spectral's own normal (48 x ~1.52) and the number
 * carries 8 of margin on top of the card's 8 of gap.
 *
 * 57:494 also outlines the numbered card in Lavender/Secondary/200 where the
 * Types card (57:415) is Strokes/Gray/1, and sets its sentence in Medium
 * where the Types card's is Regular. The Types card is not touched: it is a
 * different card in the file and 37 of the 42 bands draw it.
 */

.pwd-cc__num {
	font-family: Spectral, Georgia, serif;
	line-height: normal;
	margin-bottom: 8px;
}

.pwd-cc__grid--num .pwd-cc__card {
	border-color: #e1d5fb;           /* 57:494 Lavender/Secondary/200 */
}

.pwd-cc__grid--num .pwd-cc__body {
	font-weight: 500;                /* 57:498 Text/16px/Medium */
}


/* --------------------------------------------------------------------------
   pwd-quote-gap -- 135:780, the 24 between the portrait and the words.

   The frame's content row is 1096 wide and holds a 170 portrait and a 902
   text column, so the gap between them is 24. `.pwd-p-quoterow` was flexed
   with no gap at all and line 1602 zeroes every column margin, so the two
   sat flush: the portrait's right edge at 343 and the quotation mark at 343.
   Measured on the live card, which is otherwise the frame exactly -- card
   1160 x 236 at 32 of padding, portrait 170.

   Stated on the row rather than as a padding on the text column, so that
   below 900 -- where the row wraps and the portrait goes full width -- the
   same 24 becomes the vertical gap instead of an indent on nothing.
   -------------------------------------------------------------------------- */
.pwd-p-quoterow { gap: 24px !important; }


/* --------------------------------------------------------------------------
   pwd-quote-clearfix -- the two invisible flex items the gap above pays for.

   `.pwd-p-quoterow` is an `.et_pb_row`, and Divi clears a row with ::before
   and ::after. In a flex row each of those is a flex item: zero wide, and
   each still takes a `gap`. So stating the frame's 24 cost the text column
   48 -- it measured 876 where the frame gives it 902, with the portrait and
   the gap both correct. Turned off, exactly as every other flexed row in
   this stylesheet does.
   -------------------------------------------------------------------------- */
.pwd-p-quoterow::before,
.pwd-p-quoterow::after { display: none !important; }


/* ==========================================================================
   pwd-wave-drift -- THE DECORATIVE WAVES MOVE

   Eight sections across six layouts carry one of the design's waves as their
   Divi background image: the investigator, story and blog article heroes, the
   blog listing hero, both bands on Who We Are, and the Community Service hero
   and contact strip. They were static.

   Each drifts along its OWN background-position, because the eight do not
   share one: measured in the browser they sit at 100% 0%, 100% 85px, 0% 50%,
   50% 50% and 50% 100%. An animation written from the wrong start does not
   nudge a wave, it MOVES it -- so the variant class names the position it
   begins from and every keyframe run returns to it exactly.

   Three things this deliberately does not do:

   - it does not animate a transform on a pseudo-element, which would composite
     on the GPU and be cheaper. That needs the image in CSS, and these are Divi
     background settings on purpose so the client can change them in the
     builder. Position it is.
   - it does not move a wave along an axis it has no room on. Four of the eight
     are `contain` or a fixed size fitted to the section's height, so their
     vertical percentage resolves to zero whatever it says; those drift
     sideways only. The bottom-pinned pair stays pinned, or a strip of ground
     opens under it.
   - it does not run at all for a visitor who has asked for less motion.

   Every loop starts and ends on the same value and wanders in between, so it
   reads as a slow current rather than something sliding back and forth. The
   durations are deliberately not equal: two waves share a page on Who We Are
   and on Community Service, and matching periods would have them moving in
   step, which reads as a mechanism.
   ========================================================================== */

@media (prefers-reduced-motion: no-preference) {

	.pwd-wave--tr   { animation: pwd-wave-tr   34s ease-in-out infinite; }
	.pwd-wave--tr85 { animation: pwd-wave-tr85 39s ease-in-out infinite; }
	.pwd-wave--l    { animation: pwd-wave-l    30s ease-in-out infinite; }
	.pwd-wave--c    { animation: pwd-wave-c    43s ease-in-out infinite; }
	.pwd-wave--b    { animation: pwd-wave-b    37s ease-in-out infinite; }

	/* 100% 0% -- the investigator, story and blog article heroes. `contain`
	   against the section's height, so the wave already touches top and bottom
	   and only the horizontal has anywhere to go. */
	@keyframes pwd-wave-tr {
		0%   { background-position: 100% 0%; }
		34%  { background-position: 95.4% 0%; }
		67%  { background-position: 98.2% 0%; }
		100% { background-position: 100% 0%; }
	}

	/* 100% 85px -- the blog listing hero, whose size is stated in pixels, so
	   here the vertical really does have room. */
	@keyframes pwd-wave-tr85 {
		0%   { background-position: 100% 85px; }
		34%  { background-position: 95.6% 96px; }
		67%  { background-position: 98.3% 88px; }
		100% { background-position: 100% 85px; }
	}

	/* 0% 50% -- the Who We Are hero. `cover`, so there is overflow on both
	   axes and the wave can wander without an edge ever showing. */
	@keyframes pwd-wave-l {
		0%   { background-position: 0% 50%; }
		34%  { background-position: 4.6% 46.5%; }
		67%  { background-position: 1.8% 51.8%; }
		100% { background-position: 0% 50%; }
	}

	/* 50% 50% -- the Who We Are values band, also `cover`. */
	@keyframes pwd-wave-c {
		0%   { background-position: 50% 50%; }
		34%  { background-position: 45.4% 53.4%; }
		67%  { background-position: 52.6% 47.8%; }
		100% { background-position: 50% 50%; }
	}

	/* 50% 100% -- the two Community Service waves. Both are `contain` and sit
	   on the section's bottom edge; lifting one opens a strip of ground under
	   it, so the vertical stays at 100%. */
	@keyframes pwd-wave-b {
		0%   { background-position: 50% 100%; }
		34%  { background-position: 45.2% 100%; }
		67%  { background-position: 52.4% 100%; }
		100% { background-position: 50% 100%; }
	}
}


/* ==========================================================================
   pwd-wave-drift-2 -- THE TWO BLOG WAVES, which the first pass could not move

   Six of the eight waves drifted as soon as they had a class. These two did
   not, and the reason is worth writing down: this stylesheet positions them
   ITSELF, with !important --

     .pwd-bl-hero { background-position: right top 85px !important }
     .pwd-bs-hero { background-position: right top       !important }

   -- because both are drawn 1:1 against their own exported file and Divi's own
   rule carries an id. An !important author declaration is the ONE thing that
   beats a CSS animation, whatever the animation's specificity, so
   `animation: ... background-position` was running (playState "running",
   currentTime ticking) and computing to the same value for ever. The other six
   have no such rule, which is exactly why they worked.

   So the position stays an !important declaration and the ANIMATION MOVES A
   VARIABLE INSIDE IT. --pwd-drift is registered with @property so it
   interpolates as a length rather than flipping between keyframes, and every
   var() carries a 0px fallback so a browser without @property still places
   both waves exactly where the design puts them -- it simply does not move
   them.

   These selectors are two classes where the blocking rules are one, and they
   come later in the file, so they win without needing anything new.
   ========================================================================== */

@property --pwd-drift {
	syntax: "<length>";
	inherits: false;
	initial-value: 0px;
}

@keyframes pwd-wave-drift {
	0%   { --pwd-drift: 0px; }
	34%  { --pwd-drift: 34px; }
	67%  { --pwd-drift: 13px; }
	100% { --pwd-drift: 0px; }
}

@media (prefers-reduced-motion: no-preference) {

	/* 278:1924 -- the listing hero, flush right and 85 down. */
	.pwd-bl-hero.pwd-wave {
		background-position: right var(--pwd-drift, 0px) top 85px !important;
		animation: pwd-wave-drift 39s ease-in-out infinite;
	}

	/* 278:2056 -- the article hero, flush to the top right corner. */
	.pwd-bs-hero.pwd-wave {
		background-position: right var(--pwd-drift, 0px) top !important;
		animation: pwd-wave-drift 33s ease-in-out infinite;
	}
}

/* Below 900 the listing's wave is smaller and sits lower, and the article's
   keeps the desktop corner. Written as a sibling condition rather than a
   nested @media so the oldest parser still reads it. */
@media (prefers-reduced-motion: no-preference) and (max-width: 900px) {
	.pwd-bl-hero.pwd-wave {
		background-position: right var(--pwd-drift, 0px) top 120px !important;
	}
}


/* ==========================================================================
   pwd-wave-drift-3 -- THE WAVES ACTUALLY MOVE NOW, and far enough to see

   The first two passes animated background-position as a PERCENTAGE and the
   check asserted that the computed string changed. That is not the same thing
   as movement. A percentage position resolves to

       offset = (container size - rendered image size) x percentage

   so when an image renders exactly as wide as its container -- which `contain`
   and `cover` both do whenever the image is proportionally wider than the box
   -- every percentage lands on the same pixel and the wave cannot move at all,
   however much the declared value changes. Measured:

       investigator hero   647 wide in 1440   free 793px   was travelling 36px
       story hero          465 wide in 1440   free 975px   was travelling 45px
       blog article        733 wide in 1440   free 707px   was travelling 34px
       blog listing        714 wide in 1440   free 726px   was travelling 34px
       who we are hero    1440 wide in 1440   free   0px   COULD NOT MOVE
       values band        1444 wide in 1440   free  -4px   COULD NOT MOVE
       cs hero            1440 wide in 1440   free   0px   COULD NOT MOVE
       cs contact         1440 wide in 1440   free   0px   COULD NOT MOVE

   So two things change here.

   1. Every wave is positioned in PIXELS, through the registered custom
      property the two blog heroes already used. A length says how far a thing
      moves; a percentage says how far it moves through a gap whose size you
      have to know. 88px over 20-26s is a glide the eye follows without the
      page feeling busy -- the previous 34-45px over 34-43s was about 1px a
      second, which is why it read as static.

   2. The four with no room are given some: a background-size a touch over
      100% so the wave overflows its section and has somewhere to go. They
      render about a tenth larger than before. That is a real change to what
      the frame states, and it is the price of the design's own decoration
      being able to move at all -- a wave laid exactly edge to edge has no
      slack in it by definition.

   Positions stay !important because Divi writes its own with an id, and the
   animation moves the variable INSIDE the declaration rather than fighting it.
   Every var() carries a 0px fallback, so a browser without @property places
   every wave exactly where the design puts it and simply does not move it.
   ========================================================================== */

@keyframes pwd-wave-glide {
	0%   { --pwd-drift: 0px; }
	38%  { --pwd-drift: 88px; }
	71%  { --pwd-drift: 32px; }
	100% { --pwd-drift: 0px; }
}

@media (prefers-reduced-motion: no-preference) {

	/* --- the four that already had room: same placement, bigger travel --- */

	/* 115:1627 / 211:1296 / 278:2056 -- pinned to the top right, so the drift
	   is an offset INWARDS from the right edge. */
	.pwd-wave.pwd-wave--tr {
		background-position: right var(--pwd-drift, 0px) top !important;
		animation: pwd-wave-glide 21s ease-in-out infinite;
	}

	/* 278:1924 -- the same, dropped 85. */
	.pwd-wave.pwd-wave--tr85 {
		background-position: right var(--pwd-drift, 0px) top 85px !important;
		animation: pwd-wave-glide 24s ease-in-out infinite;
	}

	/* --- the four that had none: a little overflow, then the same glide --- */

	/* 135:1638 -- the Who We Are hero. `cover` rendered it 1440 in 1440, so it
	   had nothing to move through. */
	.pwd-wave.pwd-wave--l {
		background-size: auto 112% !important;
		background-position: left var(--pwd-drift, 0px) center !important;
		animation: pwd-wave-glide 23s ease-in-out infinite;
	}

	/* 135:3011 -- the values band, centred, same story.

	   Width-driven, not height-driven. Sized by height its width was a
	   constant ~1620 whatever the screen, so it covered 106% of the band
	   at 1440 and 61% at 2560 -- the client saw the wave stop short with
	   plain ground either side. This is what --b below already does, and
	   for the same reason. At 1440 the two differ by ten pixels, so the
	   one width every check opens is untouched, and the glide still has
	   overflow to drift through at every width. The CARD is not touched:
	   135:3656 states its 1240 and the ask was about the wave. */
	.pwd-wave.pwd-wave--c {
		background-size: 112% auto !important;
		background-position: calc(50% + var(--pwd-drift, 0px)) center !important;
		animation: pwd-wave-glide 26s ease-in-out infinite;
	}

	/* 135:3968 and Group 135:4788 -- both Community Service waves sit on their
	   section's bottom edge and must stay there, so only the horizontal moves.
	   Widened rather than heightened for the same reason. */
	.pwd-wave.pwd-wave--b {
		background-size: 112% auto !important;
		background-position: calc(50% + var(--pwd-drift, 0px)) 100% !important;
		animation: pwd-wave-glide 20s ease-in-out infinite;
	}
}

/* Below 900 the blog listing's wave is smaller and sits lower. */
@media (prefers-reduced-motion: no-preference) and (max-width: 900px) {
	.pwd-wave.pwd-wave--tr85 {
		background-position: right var(--pwd-drift, 0px) top 120px !important;
	}
}


/* ==========================================================================
   pwd-about4 -- what the client read off the frames on 2026-09-07

   Two things, both measured rather than judged.

   1. THE WAVES WERE TOO SLOW TO NOTICE. 88px over 20-26s is about 4px a
      second at its fastest, which the eye does not pick up on a page it is
      reading. 110px over 11-14s is roughly three times that: still a drift
      and not a slide, but a drift somebody sees. The keyframes are redefined
      under the same name, so every wave picks the new amount up at once and
      nothing has to be re-pointed.

   2. THE PARTNER ROW STARTS IN THE WRONG PLACE. 135:4685 PartnerCardsRow is
      x=24 width=1392 -- 24px in from each edge of the 1440 page, NOT on the
      1240 content shell the heading above it sits on. It was built on the
      shell (x=100, w=1240) so that it lined up with that heading, and this
      file has carried that as a deliberate departure since the band was made.
      The client has now read the frame and asked for the frame, which settles
      it. Six 360-wide cards 24 apart still overflow and still scroll; what
      changes is where the window onto them begins.
   ========================================================================== */

@keyframes pwd-wave-glide {
	0%   { --pwd-drift: 0px; }
	38%  { --pwd-drift: 110px; }
	71%  { --pwd-drift: 40px; }
	100% { --pwd-drift: 0px; }
}

@media (prefers-reduced-motion: no-preference) {
	.pwd-wave.pwd-wave--tr   { animation-duration: 12s; }
	.pwd-wave.pwd-wave--tr85 { animation-duration: 14s; }
	.pwd-wave.pwd-wave--l    { animation-duration: 13s; }
	.pwd-wave.pwd-wave--c    { animation-duration: 15s; }
	.pwd-wave.pwd-wave--b    { animation-duration: 11s; }
}


/* The row scrolls, and a row that scrolls should not show a Windows scrollbar
   under six logos -- the pills on the listings already made that decision. */
.pwd-cs-partners {
	scrollbar-width: none;
}
.pwd-cs-partners::-webkit-scrollbar {
	height: 0;
	width: 0;
}


/* ==========================================================================
   pwd-wave-breathe -- the four pinned waves go back to the frame's placement

   Giving these four a background-size of 112% was how they were made to move
   at all: `cover` and `contain` rendered each of them exactly as wide as its
   section, which is zero free space, and a percentage position cannot move
   something with nowhere to go.

   It worked, and it cost the thing it was not supposed to. Rendering the wave
   a tenth larger moves which part of the ribbon is in view, and the values
   band had been matched to 135:3011 pixel by pixel in an earlier pass -- mean
   error 8.04 against the frame. Compared again after the size bump, the live
   band's ribbon sits in a different place from the frame's and reads fainter
   on the left, which is what the client saw and called an opacity problem.

   So these four stop drifting and BREATHE instead: the size animates between
   100% and 107%, and 100% is `cover`/`contain` to the pixel for all four --
   each of these images has its section's own aspect, which is why they had no
   free space in the first place. At rest the wave is exactly where the frame
   puts it; the movement is a slow swell rather than a slide.

   The other four are untouched. The story, investigator and blog heroes are
   corner tiles with 700-975px of room, their placement is unaffected by the
   drift, and they keep it.
   ========================================================================== */

@keyframes pwd-wave-breathe {
	0%   { background-size: 100% auto; }
	50%  { background-size: 107% auto; }
	100% { background-size: 100% auto; }
}

/* The height-driven pair: their natural aspect is their section's, so
   `auto 100%` and `100% auto` render identically -- stated as height because
   that is the axis `cover` was fitting. */
@keyframes pwd-wave-breathe-h {
	0%   { background-size: auto 100%; }
	50%  { background-size: auto 107%; }
	100% { background-size: auto 100%; }
}

@media (prefers-reduced-motion: no-preference) {

	/* 135:1638 -- the Who We Are hero. Back to `cover`'s own placement. */
	.pwd-wave.pwd-wave--l {
		background-size: auto 100% !important;
		background-position: left center !important;
		animation: pwd-wave-breathe-h 11s ease-in-out infinite;
	}

	/* 135:3011 -- the values band, the one that was matched to the frame. */
	.pwd-wave.pwd-wave--c {
		background-size: auto 100% !important;
		background-position: center center !important;
		animation: pwd-wave-breathe-h 13s ease-in-out infinite;
	}

	/* 135:3968 and Group 135:4788 -- both Community Service waves are fitted
	   to their section's WIDTH and sit on its bottom edge. */
	.pwd-wave.pwd-wave--b {
		background-size: 100% auto !important;
		background-position: center bottom !important;
		animation: pwd-wave-breathe 12s ease-in-out infinite;
	}
}

/* With the animation off, every one of the four is exactly what the frame
   states -- no leftover 112%, no leftover drift. */
@media (prefers-reduced-motion: reduce) {
	.pwd-wave.pwd-wave--l {
		background-size: auto 100% !important;
	}
	/* --c is measured from its width here too, or a visitor who asks
	   for less motion is the one person still shown a wave that stops
	   at 61% of a wide screen. */
	.pwd-wave.pwd-wave--c,
	.pwd-wave.pwd-wave--b {
		background-size: 100% auto !important;
	}
}


/* ==========================================================================
   pwd-about5 -- 2026-09-07, read off the frames after the client put both
   About Us pages beside them.

   Every number below is quoted from the node it came from. Nothing here is a
   judgement about what looks better.
   ========================================================================== */

/* --- the hero mission card is GLASS, not a plate (135:2304) --------------

   The frame's quote-box is a linear gradient whose PAINT opacity is 0.40,
   over three stops that are themselves 0.70 / 0.40 / 0.65 alpha -- so the
   card is between 16% and 28% opaque -- with a 20px glass blur behind it and
   a #E1D5FB hairline. Its gradient transform is the identity, which is a
   left-to-right 90deg ramp.

   The hero swoosh (135:1638) is a group at 20% opacity rotated 33deg whose
   render bounds are the whole 1440x771 band, so the ribbon is MEANT to carry
   on through the card. It was built as a flat #FAF8FD plate instead, and the
   difference is measurable rather than a matter of taste: sampled across the
   card against the frame's own render, the pixels inside it varied by 0
   levels where Figma varies by 20. A ribbon that stops dead at a card's edge
   is what the client meant by "card mein opacity honi chahiye, peechay wave
   nazar aati rahe".

   Why this is CSS and not the column's Divi settings: Divi's colour picker
   holds one colour and this is three stops, and backdrop-filter is not a Divi
   setting at all. The column's own opaque background and its hairline colour
   ARE settings and are changed there, so the client still owns them -- see
   about5/patch-content.php. This file only states the two things a module
   cannot say about itself.
   ------------------------------------------------------------------------ */
.pwd-a-herorow > .et_pb_column.pwd-a-card {
	background-color: transparent !important;
	background-image: linear-gradient( 90deg,
		rgba( 242, 237, 255, 0.28 ) 0%,
		rgba( 250, 247, 255, 0.16 ) 50%,
		rgba( 245, 240, 255, 0.26 ) 100% ) !important;
	-webkit-backdrop-filter: blur( 20px );
	backdrop-filter: blur( 20px );
}

/* --- the partner row goes back on the 1240 shell ------------------------

   135:4685 PartnerCardsRow really is x=24 w=1392, and the row was moved onto
   those numbers earlier today. On the frame that reads as a deliberate
   full-bleed strip because the frame's own render is 2320 wide and shows all
   six cards; on a 1440 browser it shows three and a half, starting 76px to
   the left of every other band on the page, which reads as a mistake. The
   client asked where it starts and how wide it is within the hour, so it
   goes back.

   The width itself is the ROW'S OWN Divi setting (max_width 1240px), so the
   about4 block that overrode it with !important is deleted rather than
   overridden again -- layering a second !important on top would take the
   width away from the builder for good. See about5/patch-css.php.

   What actually made the row start on the wrong card was the auto-scroll: it
   had already advanced 384px by the time the page settled, so the first
   partner was off the left edge. That is removed in pw-design.js.
   ------------------------------------------------------------------------ */

/* --- the chosen tab's tick is white (135:4735) --------------------------

   135:4734 is a 22px disc filled Lavender/Primary/600 holding a 10x8 check
   in Neutral/White. The disc had been given the purple and the glyph left at
   the card's own #595F6B, so the tick was grey on purple -- which at 12px
   reads as no tick at all. This is the client's "scroll par activate button
   ka tick colour check karo".
   ------------------------------------------------------------------------ */
.pwd-cs-tabs > .et_pb_column.pwd-cs-tab--on .pwd-cs-tabmark,
.pwd-cs-tabs > .et_pb_column.pwd-cs-tab--on .pwd-cs-tabmark svg,
.pwd-cs-tabs > .et_pb_column.pwd-cs-tab--on .pwd-cs-tabmark .pwd-inline-icon {
	color: #FFFFFF;
}

/* --- and the leadership row keeps no controls ---------------------------

   The chevrons and the dots are built by pw-design.js, so a row that is not
   to have them is simply not given them: the row carries pwd-a-nonav and the
   script skips it. It stays the native scroller it has always been -- finger,
   trackpad and touch all still move it -- and taking that one word off the
   row's CSS Class in the builder brings the arrows and dots straight back.

   Nothing is needed here for that. What IS needed is the gap the dots used
   to hold open: with no .pwd-a-carousel-wrap under the row the band would
   otherwise close up by the dots' own 10px and their 24px of margin.
   ------------------------------------------------------------------------ */
.pwd-a-teamrow.pwd-a-carousel.pwd-a-nonav {
	margin-bottom: 34px !important;
}


/* ==========================================================================
   pwd-wave-swell -- the breathing four, with the !important taken account of

   The previous block animated `background-size` and pinned it with
   !important in the same rule, so the declaration beat its own animation and
   all four sat at 100% for ever. That is the third time on this page: an
   !important author declaration is the one thing a CSS animation cannot
   override, whatever its specificity.

   The !important has to stay -- Divi writes `cover` and `contain` for these
   sections from a selector carrying an id -- so the animation moves a
   registered custom property INSIDE the declaration, exactly as the two blog
   heroes already do for their position.

   --pwd-swell rests at 100%, which is `cover`/`contain` to the pixel for all
   four of these images: each has its own section's aspect, which is why they
   had no room to slide in the first place. A browser without @property gets
   the 100% fallback and a wave that is exactly where the frame puts it.
   ========================================================================== */

@property --pwd-swell {
	syntax: "<percentage>";
	inherits: false;
	initial-value: 100%;
}

@keyframes pwd-wave-swell {
	0%   { --pwd-swell: 100%; }
	50%  { --pwd-swell: 107%; }
	100% { --pwd-swell: 100%; }
}

@media (prefers-reduced-motion: no-preference) {

	/* 135:1638 -- the hero, fitted to its section's HEIGHT by `cover`. */
	.pwd-wave.pwd-wave--l {
		background-size: auto var(--pwd-swell, 100%) !important;
		animation: pwd-wave-swell 11s ease-in-out infinite;
	}

	/* 135:3011 -- the values band is fitted to its WIDTH, like --b below
	   and unlike the hero above it. Sized from its height the wave's
	   width was a constant ~1620 whatever the screen: it covered 106%
	   of the band at 1440, 80% at 1920 and 61% at 2560, so on a wide
	   screen it stopped short with plain ground either side, which is
	   what the client read as the band not being full width. The swell
	   still breathes; what changed is which side it is measured from.
	   The CARD is untouched -- 135:3656 states its 1240. */
	.pwd-wave.pwd-wave--c {
		background-size: var(--pwd-swell, 100%) auto !important;
		animation: pwd-wave-swell 13s ease-in-out infinite;
	}

	/* 135:3968 and Group 135:4788 -- fitted to their section's WIDTH. */
	.pwd-wave.pwd-wave--b {
		background-size: var(--pwd-swell, 100%) auto !important;
		animation: pwd-wave-swell 12s ease-in-out infinite;
	}
}



/* ==========================================================================
   pwd-wave-origin -- WHERE THE WHO WE ARE WAVE STARTS        Figma 135:1638

   The client put the page beside the frame and asked where the wave is meant
   to start, and said the card needed opacity so the wave carries on behind
   it. The card was made glass earlier today (pwd-about5 above, 135:2304) and
   is correct -- and there was still nothing to see through it, because the
   half of the ribbon the card sits on had been cropped off the page.

   135:1638 is a GROUP at opacity 0.2 rotated 33.09deg. Its bounding box is
   2024.7 x 1558.9 at (-243, 178) -- so the geometry begins 57px ABOVE the
   hero's own top edge -- and because the hero clips it, its
   absoluteRenderBounds are the hero exactly: 1440 x 771 at (0, 235). The
   export is that render, 1440x771 to the pixel, which is the section's own
   box. So the frame's placement is the image at 1:1, and the ribbon ENTERS
   AT THE TOP RIGHT and sweeps down to the left.

   The section was pinned `background-position: left center !important`
   (pwd-wave-drift-4, line ~9860) under the reading that this was "cover's
   own placement". It is not: an image whose aspect equals its container's
   has no crop under `cover`, so at rest left and centre are the same
   picture and the pin looked harmless. It stops being harmless the moment
   the wave breathes. `pwd-wave-swell` takes the size to 107%, the image
   becomes 1535 wide in a 1440 box, and anchored left the whole of that 95px
   comes off the RIGHT -- which is the top-right corner the ribbon enters
   through, and the side the mission card sits on (135:2303 is at x=820).

   Measured on the live page before this: background-size `auto 106.6%`,
   background-position `0% 50%`. So for all but an instant of each 11s cycle
   the wave started somewhere the frame does not start it, and the card --
   correctly transparent, correctly blurred -- had a blank white hero behind
   it.

   Centre is not a preference here, it is the only anchor that swells about
   the frame's own placement: 100% is the frame exactly, and every percent
   above it gives equally at both edges instead of eating one of them. It is
   what `pwd-wave--c` next door already does, for the same reason.

   The section's own Divi setting is moved to `center_center` with it
   (wave-origin/patch-content.php), so the builder and the stylesheet say the
   same thing and the client can still change it. This declaration has to
   carry !important only because the one it supersedes does.
   ========================================================================== */
.pwd-wave.pwd-wave--l {
	background-position: center center !important;
}


/* ==========================================================================
   pwd-partners-width -- 135:4685's own width

   PartnerCardsRow is x=24 width=1392 in the frame: 24px in from each edge of
   the 1440 page, NOT on the 1240 content shell the heading above it sits on.
   The band was built on the shell so the first card lined up with that
   heading, and this file carried that as a deliberate departure. The client
   has now read the frame and asked for the frame.

   Re-applied 2026-09-07 after it went missing from this stylesheet -- the
   scrollbar rule that used to sit directly under it survived, which is how it
   was noticed. Nothing else in this block, and nothing else touched.

   Six 360-wide cards 24 apart still overflow and still scroll; what changes is
   where the window onto them begins. The firstpaint block caps every row on a
   designed page at the shell from a seven-class selector, so this has to say
   !important to be the width the frame states.
   ========================================================================== */
/* 135:4685 sits at x=24 in a 1440 frame, which is 24 from each page EDGE
   and not a 1392 box. Written as min(1392px, ...) the row froze at 1392
   and the auto margins centred it, so a 2560 screen showed 584 of gutter
   either side -- and 1440 could not see it, because there the two say the
   same 1392. Below 1439 the responsive ladder governs this row, so this
   only decides what happens above the one width the frame draws. */
.pwd-cs-partners {
	width: calc(100vw - 48px) !important;
	max-width: calc(100vw - 48px) !important;
	margin-left: auto !important;
	margin-right: auto !important;
}



/* ==========================================================================
   pwd-values-card-opacity -- asked for, and a departure from the frame

   135:3656's wash is a gradient at paint opacity 0.70 and the pwd-about3
   block above states it as such. The client asked for the card to be a little
   more transparent so the band's own ribbon (135:3011's video fill) carries
   through it, so both rows are 0.55 now.

   Safe rather than assumed: over the darkest pixel of the wave that falls
   under the card -- (215,206,221) -- the card reads (232,226,240), which is
   5.07:1 for the body copy #5F5D6B and 13.99:1 for the headings. Both clear
   AA, and the wave is faint enough that even 0.30 would hold 4.67:1, so the
   number is a look and not a legibility floor.

   The rows carry the same wash as their own Divi gradient (card-opacity.php)
   and that outranks this -- which is where the client changes it. This is the
   half that applies if the setting is ever cleared, and it supersedes the
   0.7 stated in pwd-about3 above rather than editing it, because more than
   one session is in this file.
   ========================================================================== */
.pwd-a-valuestop,
.pwd-a-valuesgrid {
	background-image: linear-gradient(
		90deg,
		rgba( 245, 243, 255, 0.55 ) 0%,
		rgba( 255, 255, 255, 0.55 ) 55%,
		rgba( 245, 243, 255, 0.55 ) 100%
	) !important;
}



/* ==========================================================================
   pwd-values-card-opacity-2 -- the second step down, asked for again

   135:3656's wash is a gradient at paint opacity 0.70. It went to 0.55
   earlier today (pwd-values-card-opacity above) because the client asked for
   the band's ribbon to read through the card; they asked for less again, so
   both rows are 0.35 now. This is a deliberate departure from the frame,
   requested, and recorded as one.

   Measured rather than assumed. Over the DARKEST pixel of the band's wave
   that falls under the card -- (215,206,221) -- the card reads (226,219,233),
   which is 4.76:1 for the body copy #5F5D6B and 13.12:1 for the headings.
   Both clear AA. The floor over THIS wave is 0.20 (4.51:1); below that the
   body copy fails AA. So there is room left, and 0.35 is a look rather than
   a limit -- but the floor is tied to this artwork and moves if the band's
   image is ever replaced with a darker one.

   The rows carry the same wash as their own Divi gradient
   (card-opacity2.php) and that outranks this, which is where the client
   changes it. This is the half that applies if the setting is ever cleared,
   and it supersedes the 0.55 above rather than editing it, because more than
   one session is in this file.
   ========================================================================== */
.pwd-a-valuestop,
.pwd-a-valuesgrid {
	background-image: linear-gradient(
		90deg,
		rgba( 245, 243, 255, 0.35 ) 0%,
		rgba( 255, 255, 255, 0.35 ) 55%,
		rgba( 245, 243, 255, 0.35 ) 100%
	) !important;
}


/* ==========================================================================
   pwd-team-snap -- the team row lands ON a card, not 19px short of one

   The row is 1640 wide in 1240, so it can scroll 400. One card is 413 (389 and
   a 24 gap), and the second card's own boundary is at 419 -- past the end. So
   the auto-scroll asked for 419, was clamped to 400, and the card it moved to
   arrived at x=119 with the one before it sliced down the left edge, instead
   of sitting flush at x=100 like every other band on the page.

   The shortfall is the row's own padding: 6px each side so a card's shadow is
   not clipped, plus the gap. Giving the row 40 of scrollable room on the right
   makes 419 reachable, so each shift now rests exactly on a card's left edge.
   Nothing else moves -- the padding is inside the scroller, so the cards, the
   heading above them and the shell they sit on are all where they were.
   ========================================================================== */
.pwd-a-teamrow.pwd-a-carousel {
	padding-right: 40px;
}


/* ==========================================================================
   pwd-team-snap-2 -- the spacer has to be a flex ITEM, not padding

   The previous block gave the row 40px of padding-right so its second card's
   boundary at 419 would be reachable. It changed nothing: Chrome does not
   count a flex container's padding-right in scrollWidth, so max travel stayed
   at 400 and the row still rested 19px short, with the card before it sliced
   down the left edge.

   A margin on the LAST card is counted, because that is a flex item's own box.
   Divi writes column margins itself from a selector carrying an id, so this
   has to say !important to be there at all.

   40 rather than 19 so the boundary is comfortably inside the travel and the
   arithmetic does not have to be exact at every width.
   ========================================================================== */
.pwd-a-teamrow.pwd-a-carousel {
	padding-right: 0;
}
.pwd-a-teamrow.pwd-a-carousel > .et_pb_column:last-child {
	margin-right: 40px !important;
}


/* ==========================================================================
   pwd-team-leftonly -- one chevron, on the left

   135:2963's carousel-row is 1748 wide inside a 1240 frame and carries a
   Chevron Slider at each end, x=0 and x=1698. The frame clips it, so the right
   one is outside what the design shows -- "only back navigation", in the
   client's words, and it is the frame's own arrangement rather than a
   preference.

   The dots (135:3004) stay off: the frame draws six of them for four people,
   which is a placeholder, and the row moves on its own now anyway.

   Hidden rather than not built, so the carousel keeps one code path and
   putting pwd-a-nonav back on the row still turns everything off at once.
   ========================================================================== */
.pwd-a-teamrow.pwd-a-carousel ~ .pwd-a-cbtn--next,
.pwd-a-carousel-wrap .pwd-a-cbtn--next,
.pwd-a-carousel-wrap .pwd-a-cdots {
	display: none !important;
}


/* ==========================================================================
   pwd-team-nosnap -- snap and a per-frame glide cannot both have the row

   The team row carries scroll-snap-type: x mandatory. That was fine while the
   auto-scroll moved a whole card and stopped: the snap agreed with where it
   landed. It is not fine now that the row is moved every frame -- Chrome
   snapped it straight back to the first card on each one, and the row sat
   perfectly still while the partner row beside it glided at 62px/s.

   Measured: 28 of 28 samples identical on the team row, 0 of 25 on the
   partners.

   This was tried once before, on a wrong diagnosis, and reverted -- correctly,
   because nothing then needed it. The glide does.
   ========================================================================== */
.pwd-a-teamrow.pwd-a-carousel {
	scroll-snap-type: none;
}


/* ==========================================================================
   pwd-team-noscrollsmooth -- the glide provides its own smoothness

   The team row also carries scroll-behavior: smooth, which was right while the
   auto-scroll jumped a whole card at a time. Against a per-frame glide it is
   the thing that stalls it: every frame sets a target a fraction of a pixel
   away, and the browser starts a fresh smooth animation towards each one, so
   the row creeps at 5px/s instead of 138.

   Measured after turning snap off: 19 of 26 samples still, ~5px/s, against
   the partner row's 72px/s. Snap was not the cause; this is.

   The chevron still animates, because that goes through scrollTo({behavior:
   'smooth'}) which asks for it explicitly rather than relying on the property.
   ========================================================================== */
.pwd-a-teamrow.pwd-a-carousel {
	scroll-behavior: auto;
}


/* ==========================================================================
   pwd-team-chev -- the back button sits at the start, and shows it is off

   135:2963 puts its Chevron Slider at x=0 of the carousel and the first team
   card at x=74 -- the button is BESIDE the cards, not over them. Ours sat at
   left:-25px, overlapping card one, and at rest it was opacity:0, so on the
   first card there was simply nothing there. The client asked for it to be
   present at the start and plainly disabled, which is what the frame draws.

   Three things:
     * the button moves to the carousel's own left edge (left: 0)
     * the row is padded 74 so card one starts after it, as 135:2966 does
     * disabled is 0.35 opacity rather than 0 -- visible, obviously not usable,
       and still pointer-events: none so it cannot be clicked
   ========================================================================== */
.pwd-a-carousel-wrap .pwd-a-cbtn--prev {
	left: 0 !important;
}
.pwd-a-teamrow.pwd-a-carousel {
	padding-left: 74px;
}
.pwd-a-carousel-wrap .pwd-a-cbtn--prev:disabled,
.pwd-a-carousel-wrap .pwd-a-cbtn--prev[disabled] {
	opacity: 0.35 !important;
	pointer-events: none;
	cursor: default;
}


/* ==========================================================================
   pwd-team-chev-2 -- the padding has to beat an !important

   The row states `padding: 12px 6px 14px !important`, so the 74 of left room
   the chevron needs could not be written at the same specificity. 135:2966
   puts card one at x=74 of the carousel, with the Chevron Slider in the 0-50
   before it -- the button is beside the cards, not over them.
   ========================================================================== */
.pwd-a-teamrow.pwd-a-carousel {
	padding-left: 74px !important;
}


/* ==========================================================================
   pwd-team-threefit -- three whole cards in the window

   135:2963's own arithmetic does not quite close. The carousel frame is 1240,
   the Chevron Slider takes 0-50 and card one starts at 74, and the cards are
   389.33 with 24 between them:

       74 + 389 + 24 + 389 + 24 + 389  =  1289

   which is 49 past the frame, so the third card is clipped in the frame too --
   by about 21 there and 49 here, because ours makes card one 389 where the
   frame makes it 360. Either way the band shows two cards and most of a third,
   and the client asked for three.

   The room for the chevron is the frame's (74) and the gap is the frame's
   (24), so the card is what gives:

       (1240 - 74 - 48) / 3  =  372.67

   372 leaves 2px of slack, which is what keeps the third card's shadow inside
   the scroller rather than clipped by it.
   ========================================================================== */
.pwd-a-teamrow.pwd-a-carousel > .et_pb_column {
	flex: 0 0 372px !important;
	width: 372px !important;
	max-width: 372px !important;
}

/* ==== PWRESP:shell ==== */
/* -------------------------------------------------------------------------
   THE SIDE GUTTER -- every designed page has been without one below 1240
   since the screens were built.

   The client put the site on a phone and said the content was touching both
   edges. It was: at 768 every band measured x=0 w=768, at 390 x=0 w=390.
   Ten screens, every width under 1240.

   And it is OUR rule that removed it. Divi's own default is
   `.et_pb_row { width: 80% }`, which would have given a 10% gutter; the
   first-paint block (checks 73, 94) states `width: min(1240px, 100%)`, and
   100% at 768 is 768. That rule exists to REPRODUCE what Divi's page CSS
   says one frame later -- and Divi's page CSS says `width: 100%` too, so
   both halves of the cascade agreed on no gutter and neither looked wrong.

   Meanwhile the NAVBAR has had a gutter all along: .pwd-shell pads by
   --pw-gutter, clamp(16px, 5vw, 100px). So the bar and the content under it
   have never shared a left edge below 1440 -- 1152 against 1240 at 1280, 691
   against 768 at 768, 351 against 390 at 390. The "navbar ka issue" in the
   report is this same fault seen from the other side, not a second one.

   ---------------------------------------------------------------------
   WHY width, AND NOT max-width, AND NOT padding ON THE SECTION.

   Two wrong answers were tried and measured first, and each is worth keeping
   because each looked right.

   PADDING ON THE SECTION took the client's own settings away. Divi writes a
   section's padding from `.et_pb_section_1.et_pb_section` -- an inline
   <style> at (0,2,0) with no id anywhere -- so a rule of ours at (0,7,1)
   does not merely win, it overrules anything they set in the Visual Builder.
   It took the investigator panel's own 40px to 72 and qa-inv.py went 167/0
   to 11 failed. A gutter is not worth a control.

   max-width ON THE ROW took a different setting away: a row that is
   deliberately NARROWER than the shell -- 135:2961's leadership subtitle is
   820 -- states that as its own max-width, and forcing min(1240, ...) over
   it WIDENED it wherever the viewport had room. Nothing on the page said so;
   the row simply grew.

   `width` is the one that leaves both alone. Every designed row already
   carries a max-width of its own, Divi's or the client's, and this only says
   how much room the row may take BEFORE that cap applies:

       row with Divi's 1240      at 1280   width 1152, cap 1240  ->  1152
       row with the client's 820 at 1280   width 1152, cap  820  ->   820
       either                    at  768   width  691            ->   691

   So a narrow row stays narrow, a wide row stays capped, and both get the
   gutter. !important is needed only because Divi writes a row's width from
   `body #page-container .et-db #et-boc .et-l .et_pb_row_0.et_pb_row` -- two
   ids -- and nothing written at classes can reach that. It is the same shape
   story-width.css already uses on the named story rows, verified there;
   this generalises it to every designed band and puts the number on the
   ladder instead of a fixed 48.

   ---------------------------------------------------------------------
   1440 CANNOT MOVE, AND THAT IS BY CONSTRUCTION, NOT BY CARE.

   The whole block is inside `max-width: 1439px`, so at the frame's own width
   not one declaration applies. And it joins smoothly rather than stepping:
   at 1439 the gutter is 71.95, so a 1240 row asks for 1295 and is capped
   back to 1240.

      1439   gutter  72   row 1240 at x=100      <- unchanged from 1440
      1366   gutter  68   row 1230 at x= 68
      1280   gutter  64   row 1152 at x= 64
      1100   gutter  55   row  990 at x= 55
       980   gutter  49   row  882 at x= 49
       768   gutter  38   row  691 at x= 38
       480   gutter  24   row  432 at x= 24
       390   gutter  20   row  351 at x= 20

   Every right-hand column is what the NAVBAR already measures at that width,
   because it is the navbar's own arithmetic -- so the bar and the bands line
   up by construction rather than by two numbers happening to agree.

   A background still bleeds the full width: the section is untouched, so a
   fill, a wave or a hero photograph is exactly where it was.

   SPEC.md section 2.
   ------------------------------------------------------------------------- */

@media (max-width: 1439px) {

	/* (a) the ordinary case -- a full-bleed section whose ROW is the band.
	   .pwd-narrow is NOT excluded: those rows need the gutter as much as any
	   other, and `width` cannot widen them past the max-width that makes
	   them narrow. .pwd-bleed is the escape hatch for a band that means it. */
	body.pwd-designed .et-l:not(.et-l--header):not(.et-l--footer)
	  > .et_builder_inner_content
	  > .et_pb_section:not(.pwd-bleed):not(.pwd-p-panel)
	  > .et_pb_row {
		width: calc(100% - (2 * var(--pw-gutter))) !important;
	}

	/* (b) the one section on the site that is not full-bleed: the investigator
	   panel (135:593) is ITSELF the card -- 1240 wide at x=100, white, 24px
	   corners, its own 40 of padding. So the gutter has to inset the CARD, or
	   its corners and its shadow have nothing to sit on; and its rows must NOT
	   take one as well, or they are inset twice and the panel's content runs
	   78 in from a navbar sitting at 38. Its 40 of padding is untouched. */
	body.pwd-designed .et-l:not(.et-l--header):not(.et-l--footer)
	  > .et_builder_inner_content
	  > .et_pb_section.pwd-p-panel {
		width: calc(100% - (2 * var(--pw-gutter))) !important;
		margin-left: auto !important;
		margin-right: auto !important;
	}
}
/* ==== /PWRESP:shell ==== */

/* ==== PWRESP:mobilenav ==== */
/* -------------------------------------------------------------------------
   THE MOBILE MENU.

   Below 1100 the four navigation triggers are display:none and there was no
   burger anywhere -- 3 of the navbar's 34 links reachable on a phone. This is
   the rest of that repair; 02-mobile-nav.php is the markup.

   The boundary is DIVI'S, 980, not the 1100 that was there. Between 981 and
   1100 the desktop row fits perfectly well and was being hidden for no reason;
   below 980 Divi has stacked every column on the page, so that is where the
   bar should change too. SPEC.md section 1.

   Nothing here applies at 1440: the whole block is inside a media query and
   the burger is display:none above it.
   ------------------------------------------------------------------------- */

/* The <details> is inert on desktop -- present in the DOM, drawing nothing. */
.pwd-nav__m { display: none; }
.pwd-nav__m > summary { list-style: none; }
.pwd-nav__m > summary::-webkit-details-marker { display: none; }

/* Between 981 and 1100 there was NO navigation at all, and that band existed
   before any of this: `@media (max-width: 1100px) { .pwd-nav__links {
   display: none } }` at line 602 hid the four triggers, and nothing replaced
   them -- so a small laptop got the logo, two pills and Get Started. 1100 is
   one of the twenty-four numbers this stylesheet had picked; the boundary
   that means something is Divi's 980, where the columns on the page stack.
   Said as its own rule rather than by editing that block, because that block
   also lays out the footer and this is not about the footer. Later in the
   file at equal weight, so no !important. SPEC.md section 1. */
@media (min-width: 981px) {
	.pwd-nav__links { display: flex; }
}

@media (max-width: 980px) {

	/* --- the bar ---------------------------------------------------- */
	.pwd-nav__links { display: none !important; }
	.pwd-nav__rule  { display: none !important; }

	.pwd-nav__m {
		display: block;
		position: static;
	}
	.pwd-nav__burger {
		display: flex;
		align-items: center;
		justify-content: center;
		width: 44px;
		height: 44px;
		border-radius: 12px;
		border: 1px solid var(--pw-lav-200, #E1D5FB);
		background: #fff;
		cursor: pointer;
		flex: none;
		transition: background .16s ease, border-color .16s ease;
	}
	.pwd-nav__burger:hover { background: #F7F4FE; }
	.pwd-nav__burger:focus-visible {
		outline: 2px solid var(--pw-lav-600, #7A44EC);
		outline-offset: 2px;
	}
	.pwd-nav__burgerbox {
		display: block;
		position: relative;
		width: 18px;
		height: 12px;
	}
	.pwd-nav__burgerbox > span {
		position: absolute;
		left: 0;
		width: 100%;
		height: 2px;
		border-radius: 2px;
		background: var(--pw-dark, #181628);
		transition: transform .18s ease, opacity .14s ease, top .18s ease;
	}
	.pwd-nav__burgerbox > span:nth-child(1) { top: 0; }
	.pwd-nav__burgerbox > span:nth-child(2) { top: 5px; }
	.pwd-nav__burgerbox > span:nth-child(3) { top: 10px; }

	/* open: the three bars become a cross, so the control says which state it
	   is in rather than needing a second icon */
	.pwd-nav__m[open] .pwd-nav__burgerbox > span:nth-child(1) { top: 5px; transform: rotate(45deg); }
	.pwd-nav__m[open] .pwd-nav__burgerbox > span:nth-child(2) { opacity: 0; }
	.pwd-nav__m[open] .pwd-nav__burgerbox > span:nth-child(3) { top: 5px; transform: rotate(-45deg); }
	.pwd-nav__m[open] .pwd-nav__burger { background: #F7F4FE; }

	/* --- the panel --------------------------------------------------- */
	/* An overlay, exactly as the desktop dropdowns had to become: in the flow
	   it grows the navbar card and pushes the hero and every band under it
	   down the page (check 111). .pwd-nav already carries a filter, which
	   makes it the containing block; position is stated anyway, because a
	   layout that depends on a filter side-effect is a layout nobody can
	   read. */
	.pwd-nav { position: relative; }

	/* A closed <details> is not painted and not hit-tested, and in Chrome its
	   content still GENERATES A BOX -- the closed panel measured 44 x 546.
	   Nothing is drawn and nothing is clickable, so it is not a fault a
	   visitor could meet; it is a fault the next measurement meets, because
	   `getBoundingClientRect().width > 0` is the test every check in this
	   project uses for "is this on the page" (check 120). Said outright, the
	   state is unambiguous to a person and to a check. */
	.pwd-nav__m:not([open]) .pwd-nav__mpanel { display: none; }

	.pwd-nav__mpanel {
		position: absolute;
		left: 0;
		right: 0;
		top: 100%;
		z-index: 60;
		background: #FAF9FD;
		border-top: 1px solid var(--pw-grey-5, #E4E7EC);
		border-radius: 0 0 22px 22px;
		padding: 8px 16px 20px;
		max-height: calc(100vh - 120px);
		overflow-y: auto;
		overscroll-behavior: contain;
	}
	.pwd-m__list { list-style: none; margin: 0; padding: 0; }
	.pwd-m__item + .pwd-m__item { border-top: 1px solid var(--pw-grey-5, #E4E7EC); }

	.pwd-m__top {
		display: flex;
		align-items: center;
		justify-content: space-between;
		gap: 12px;
		width: 100%;
		padding: 14px 4px;
		font-size: 16px;
		font-weight: 600;
		line-height: 1.4;
		color: var(--pw-dark, #181628);
		text-decoration: none;
		cursor: pointer;
		list-style: none;
	}
	.pwd-m__top::-webkit-details-marker { display: none; }
	.pwd-m__top:focus-visible {
		outline: 2px solid var(--pw-lav-600, #7A44EC);
		outline-offset: -2px;
		border-radius: 8px;
	}
	.pwd-m__chev {
		display: flex;
		flex: none;
		transition: transform .18s ease;
		color: var(--pw-grey-2, #9498A1);
	}
	.pwd-m__d[open] > .pwd-m__top { color: var(--pw-lav-600, #7A44EC); }
	.pwd-m__d[open] > .pwd-m__top .pwd-m__chev { transform: rotate(180deg); }

	.pwd-m__sub { padding: 0 0 10px 4px; }
	.pwd-m__card {
		display: flex;
		align-items: center;
		gap: 12px;
		padding: 10px 8px;
		border-radius: 12px;
		text-decoration: none;
		color: var(--pw-dark, #181628);
	}
	.pwd-m__card:hover,
	.pwd-m__card:focus-visible { background: #F1EDFC; color: var(--pw-dark, #181628); }
	.pwd-m__card--sub { padding-left: 26px; }
	.pwd-m__badge {
		display: flex;
		align-items: center;
		justify-content: center;
		flex: none;
		width: 32px;
		height: 32px;
		border-radius: 9px;
		background: #fff;
		border: 1px solid var(--pw-grey-5, #E4E7EC);
	}
	.pwd-m__badge svg,
	.pwd-m__badge img { width: 18px; height: 18px; }
	.pwd-m__ctitle { font-size: 14px; font-weight: 500; line-height: 1.4; }

	/* --- the foot ---------------------------------------------------- */
	/* Sign In and Get Started are repeated here because below 480 the bar has
	   room for the logo and the burger and nothing else. Above that they are
	   in both, which is what every site does with a header CTA. */
	.pwd-m__foot {
		display: flex;
		flex-direction: column;
		gap: 10px;
		margin-top: 14px;
		padding-top: 16px;
		border-top: 1px solid var(--pw-grey-5, #E4E7EC);
	}
	.pwd-m__signin {
		display: flex;
		align-items: center;
		justify-content: center;
		gap: 6px;
		padding: 11px 16px;
		border-radius: 100px;
		border: 1px solid var(--pw-lav-200, #E1D5FB);
		background: #fff;
		font-size: 14px;
		font-weight: 600;
		color: var(--pw-grey-1, #595F6B);
		text-decoration: none;
	}
	.pwd-m__cta { justify-content: center; }

	/* The desktop dropdowns must not open on a touch screen while this is the
	   navigation -- the :has(:hover) rule is printed per page by
	   PWD_Chrome::navbar() and would otherwise fire on a tap. */
	.pwd-nav__panel { display: none !important; }
}

/* Below 480 the bar is the logo and the burger. Get Started is in the panel,
   two lines further down, rather than crushed against the logo. */
@media (max-width: 479px) {
	.pwd-nav__main .pwd-nav__cta { display: none !important; }
	.pwd-nav__mpanel { border-radius: 0 0 18px 18px; }
}
/* ==== /PWRESP:mobilenav ==== */

/* ==== PWRESP:type ==== */
/* -------------------------------------------------------------------------
   THE HEADING RAMP, second half: the headings a PLUGIN draws.

   04-type-ramp.php put the ramp into the Divi modules' own Tablet and Phone
   tabs, which is where a heading whose size Divi writes belongs -- 33 of them
   across 8 posts. It cannot reach these seven, because they are not Divi
   modules: a condition's Symptoms band, its Diagnosis Journey heading, a
   content-card group, the Related band, the cms plugin's own block heading and
   the newsletter band all get their size from a class in pw-design.css or
   front.css, and nothing in Divi's Tablet tab touches a class.

   So these are the ones that are honestly CSS. Same ladder, same steps
   (SPEC.md section 3): x0.79 to tablet, x0.85 to phone, on Divi's own 980 and
   767 rather than on any of the twenty-four numbers this stylesheet had
   accumulated.

   Specificity: the rules being beaten are `.pwd-sc-band .pwd-symh` (0,2,0) and
   `.pwd-sc-band h2` (0,1,1), both in this same file. `body.pwd-designed` in
   front makes these (0,3,0) and up, so they win on weight rather than on being
   further down a file two sessions are appending to. No !important: Divi does
   not write a heading's SIZE with an id here (it writes the family, which is a
   separate matter and is left alone), so nothing needs beating that way.

   Nothing here applies above 980, so 1440 is untouched.
   ------------------------------------------------------------------------- */

@media (max-width: 980px) {
	body.pwd-designed .pwd-symh,
	body.pwd-designed .pwd-sc-band .pwd-symh,
	body.pwd-designed .pwd-sc-jhead,
	body.pwd-designed .pwd-rel__h            { font-size: 33px; }

	body.pwd-designed .cms-block__heading,
	body.pwd-designed .pwd-cc__h,
	body.pwd-designed .pwd-sc-band h2,
	body.pwd-designed .pwd-sc-prose h2       { font-size: 28px; }

	body.pwd-designed .pwd-newsletter__title { font-size: 26px; }
	body.pwd-designed .pwd-bf__title         { font-size: 25px; }
}

@media (max-width: 767px) {
	body.pwd-designed .pwd-symh,
	body.pwd-designed .pwd-sc-band .pwd-symh,
	body.pwd-designed .pwd-sc-jhead,
	body.pwd-designed .pwd-rel__h            { font-size: 28px; }

	body.pwd-designed .cms-block__heading,
	body.pwd-designed .pwd-cc__h,
	body.pwd-designed .pwd-sc-band h2,
	body.pwd-designed .pwd-sc-prose h2       { font-size: 25px; }

	body.pwd-designed .pwd-newsletter__title { font-size: 22px; }
	body.pwd-designed .pwd-bf__title         { font-size: 22px; }
}

/* The one exception, and it needs !important rather than weight.
   `.pwd-sc-journeyband .pwd-sc-jhead { font-size: 40px !important }` was
   written when that band was built -- and an !important beats any specificity,
   so the two rules above were present, matched, served and losing on that one
   heading while working on the other six (check 52). Matched here rather than
   by editing that rule, because it is right at the width it was written for
   and this only says what happens below it. */
@media (max-width: 980px) {
	body.pwd-designed .pwd-sc-journeyband .pwd-sc-jhead { font-size: 33px !important; }
}
@media (max-width: 767px) {
	body.pwd-designed .pwd-sc-journeyband .pwd-sc-jhead { font-size: 28px !important; }
}

/* -------------------------------------------------------------------------
   And one line-height that was stated in pixels.

   135:3965 is 58 tall, and the Community Service h1 mixes Plus Jakarta Sans
   with Spectral -- a second family in one line box raises the strut by its own
   ascent, so the box measured 63 with every value correct and the only thing
   that settled it was stating the line box outright: `line-height: 58px`.

   That is right at 1440 and wrong at every width under it: the heading now
   ramps 48 -> 38 -> 32 and the 58 does not follow, so a 32px title was sitting
   in a 58px line -- 1.81, where the style guide's H1 is 1.2. Every other
   heading on the site states a MULTIPLIER, which is why this is the only one.

   Below 980 the ratio comes back. The strut still lifts the box a pixel or
   two, and at these widths there is no frame to be a pixel out from.
   ------------------------------------------------------------------------- */
@media (max-width: 980px) {
	body.pwd-designed .pwd-cs-title h1 { line-height: 1.2; }
}
/* ==== /PWRESP:type ==== */

/* ==== PWRESP:bands ==== */
/* -------------------------------------------------------------------------
   BANDS WHOSE COLUMNS WERE SIZED FOR EXACTLY 1240.

   A grid written `grid-template-columns: 694px 506px` with a 40px gap is
   exactly the frame's 1240, and it was correct while every row WAS 1240 down
   to 1280 -- the row only started shrinking at 1279, which is where each of
   these bands has its own responsive block.

   The gutter (01-shell.css) changed that: a row is now 1152 at 1280 and 990
   at 1100, so a grid still asking for 1240 overflows its own row from 1439
   down to 1280. On the single investigator profile that reached the viewport
   -- 24px of sideways scroll at 1280, the hero card and the About card each
   88 past their row. This is a consequence of that change and is repaired
   here rather than by giving the gutter up.

   The band 1280-1439 is the only one missing: below 1280 each of these bands
   already has its own rule, and at 1440 the fixed px are right. So the ratio
   is stated for that band alone, as `fr` in the frame's own proportion, which
   shrinks and keeps 694:506 and 856:320 exactly.

      1440   694 + 40 + 506   the frame, untouched
      1366   645 + 40 + 470
      1280   643 + 40 + 469
      1279   the existing rule takes over: 1fr + 380
   ------------------------------------------------------------------------- */

@media (min-width: 1280px) and (max-width: 1439px) {
	/* 211:1297 -- 694 of text beside a 506 card, 40 apart */
	.pwd-iv-herorow  { grid-template-columns: minmax(0, 694fr) minmax(0, 506fr); }
	/* 211:1344 -- an 856 article beside a 320 card, 64 apart */
	.pwd-iv-storyrow { grid-template-columns: minmax(0, 856fr) minmax(0, 320fr); }

	/* 115:1612 -- 580 of text beside a 620 photograph. The same shape and the
	   same band: that row's own rule stacks the two at 1279, and its comment
	   says why -- "two fixed columns that add up to 1240 cannot sit side by
	   side in less than 1240". True then, and from 1439 down now. A flex
	   basis rather than a grid, because this row is a flex row; both shrink,
	   and shrink is distributed in proportion to the basis, so 580:620 holds. */
	.pwd-ss-heroleft.et_pb_column { flex: 1 1 580px !important; min-width: 0 !important; }
	.pwd-ss-heropic.et_pb_column  { flex: 1 1 620px !important; min-width: 0 !important; }
}
/* ==== /PWRESP:bands ==== */

/* ==== PWRESP:fixes ==== */
/* -------------------------------------------------------------------------
   Three things found by LOOKING at the screens rather than by measuring them.
   Each was invisible to the audit -- none is an overflow, a spill, a broken
   picture or a JavaScript error -- and each is obvious in one glance
   (check 169: look at the image).
   ------------------------------------------------------------------------- */

/* 1. The stories hub's title was CUT OFF: "Real People. Real Impac".

   115:3147 is 602 wide against its own 571 column, because the lead is meant
   to run over the faded left edge of the hero photograph -- and the way that
   was said is `white-space: nowrap`, which is right at 1440 and is why the
   line has never wrapped. Below 1240 the photograph stacks under the text and
   there is nothing left to overhang, so the nowrap only clips: at 390 the row
   is 351 and the line wants about 400.

   Released on the ladder rather than at the width where it happens to start
   clipping (~480), because 981-1239 has room for it either way and one
   boundary is easier to reason about than two. */
@media (max-width: 980px) {
	body.pwd-designed .pwd-sh-lead { white-space: normal; }
}

/* 2. The story hero left 80px of blank between the byline and the photograph.

   Two rules meant it: `.pwd-ss-heroleft { padding-bottom: 48px }`, which is
   115:1616's own gap under the title stack, and the stacking block's
   `.pwd-ss-heropic { margin-top: 32px }`. Both are right on their own; stacked
   they add, and the frame has no stacked state to have an opinion about.
   The photograph's own 32 is the gap, so the column's 48 goes. */
@media (max-width: 1279px) {
	body.pwd-designed .pwd-ss-heroleft.et_pb_column { padding-bottom: 0 !important; }
}

/* 3. The blog's featured photograph had 60px of white under it.

   The band's own phone block sets `.pwd-bfeat .et_pb_image .et_pb_image_wrap`
   and `... > a` to 180 and does NOT set `.pwd-bfeat .et_pb_image`, which the
   block above it left at 240 -- so the module stayed 240 tall around a 180
   picture. Check 63's family: a height has to reach the WRAPPER, and here it
   reached the wrapper and not the module.

   All three are stated together, on the ladder's 767 rather than the 700 that
   block uses, so the three cannot drift apart again. Below 700 the older rule
   says 180 for two of them as well, which is the same value. */
@media (max-width: 767px) {
	body.pwd-designed .pwd-bfeat .et_pb_image,
	body.pwd-designed .pwd-bfeat .et_pb_image .et_pb_image_wrap,
	body.pwd-designed .pwd-bfeat .et_pb_image > a { height: 180px; }
}
/* ==== /PWRESP:fixes ==== */


/* ==========================================================================
   pwd-footer-head-colour -- the footer's column headings, on every route

   PRODUCTS / WHO WE SERVE / RESOURCES / ABOUT US / CONNECT are h2s, and on the
   patient story route they came out BLACK on the footer's dark ground -- all
   but invisible, on all seventy story pages.

   The footer is one Theme Builder layout, so it is the same markup everywhere;
   what differs is the stylesheet set. On that route Divi writes

       h1, .et-db #et-boc .et-l h1, h2, .et-db #et-boc .et-l h2, ...
       { color: #000 }

   into et-core-unified-cpt-tb-11778-tb-11789-tb-11779, from a heading colour
   set on a module inside the story body -- and an id plus two classes beats
   `.pwd-footer__head` outright. On the home page the same declaration exists
   but ours is written later, which is the only reason it was white there.

   Measured across four routes: home, condition and blog white, story black.
   So this is the footer's own colour asserting itself over a global heading
   default, which is what !important is for. Check 133's family -- there it was
   the chrome's LINK colours on /stories/, and the same sheet.
   ========================================================================== */
.pwd-footer .pwd-footer__head,
.pwd-footer__head {
	color: var(--pw-white) !important;
}

/* ==== PWRESP:featured ==== */
/* -------------------------------------------------------------------------
   The featured investigator's portrait, once the card stacks.

   135:394 draws it 278 x 335 -- a PORTRAIT, beside 342 of text. Below 980 the
   card stacks and the photograph takes the card's full width at a fixed 300
   tall: 736 x 300 at 980 and 545 x 300 at 768, which is a letterbox crop of a
   head-and-shoulders photograph. The face survives it only by luck of where
   `object-position` happens to land.

   The frame has no stacked state to copy, so this is a decision, and the one
   the frame supports is that the photograph is a portrait: it keeps the
   frame's own 278 x 335 and centres, rather than growing into a shape the
   picture was never cropped for. Every other featured card on the site is a
   LANDSCAPE image (the stories hub's is 373 x 222, the blog's 660 x 360) and
   stacking those full-width is right, which is why this is the only one.

   Nothing here applies above 980, so 1440 is untouched.
   SPEC.md section 1 for the boundary.
   ------------------------------------------------------------------------- */

@media (max-width: 980px) {
	body.pwd-designed .pwd-f-photo,
	body.pwd-designed .pwd-f-photo .et_pb_image_wrap,
	body.pwd-designed .pwd-f-photo > a {
		width: 278px !important;
		max-width: 100% !important;
		height: 335px !important;
		margin-left: auto !important;
		margin-right: auto !important;
	}
	body.pwd-designed .pwd-f-photo img {
		width: 100% !important;
		height: 100% !important;
		object-fit: cover;
	}
}
/* ==== /PWRESP:featured ==== */

/* ==== PWRESP:waves ==== */
/* --------------------------------------------------------------------------
   pwd-wave-calm -- THE WAVES MOVE WITHOUT GOING ANYWHERE

   The client asked twice. First that the waves were too slow; then, after they
   were sped up, that "kabhi bahar jata kabhi aata" -- they leave the screen and
   come back -- and that what they had wanted was movement while each stays in
   its own place.

   Both are true and they are the same fault seen from two sides, which is why
   only re-timing them did not fix it. Measured over a whole cycle in a strip
   along each edge of each band (`edges.py`), the MIDDLE of four of the five
   bands does not move at all and every bit of the motion is at ONE edge:

       Who We Are hero      middle 0.000   bottom 1.121
       Our Values band      middle 0.102   left   0.618
       Community Service    middle 0.846   right  0.469     -- the one that was fine
       investigator hero    middle 0.000   right  2.326
       blog listing hero    middle 0.000   bottom 1.661

   That is the ribbon's own edge sliding into and out of the band. It was there
   long before this pass -- at 11s to 14s it was too slow to notice, and making
   it faster is what made it visible. So the answer is not a slower period, it
   is a smaller excursion.

   TWO THINGS CHANGE.

   1. NO WAVE TRANSLATES ANY MORE. `--tr` and `--tr85` were on
      `pwd-wave-glide`, which slides them up to 110px sideways -- a slide is
      exactly the thing being complained about, and a small slide is still a
      slide. They breathe in place now like the other three. This is the one
      place where writing the `animation` shorthand is the intent rather than
      an accident (check 185): it has to turn `pwd-wave-glide` off.

   2. EVERY WAVE IS GIVEN THE SAME EDGE BUDGET. A background image cannot
      overflow anything -- it is painted inside its box -- so "goes off the
      screen" is the ribbon's edge appearing and disappearing at the band's
      boundary, and the honest way to hold that still is to cap how much any
      edge may change. The budget is about 0.35 of 255 per sample, which is
      below what every one of these did BEFORE this pass began, and the swell
      each wave gets is whichever amplitude `sweep-calm.py` measured at that
      budget -- not one number applied to five different pictures:

          --l      +1.6%    its band is 1440x771 and the ribbon fills it
          --c      +1.1%    tightened after the first deploy measured 0.568 at
                            1920, where this one renders widest
          --b      +3.5%    its edges are quiet, so it can afford the most --
                            and 5% put its right edge over budget at 1920
          --tr     +1.3%    a 596-wide ribbon pinned to a corner: the budget
          --tr85   +1%      buys the least here, and these two were the worst
                            offenders. --tr went up a notch because 1% left it
                            barely moving at all

   The periods stay where the last pass put them -- a little under half what
   they were -- so what is left is a slower, smaller motion that happens more
   often, which is what "thoda fast" asked for and what a production page does
   with ambient decoration.

   AT REST EVERY WAVE IS EXACTLY WHERE THE DESIGN PUTS IT. Each expression is
   written so t=0 reproduces what the page computed before, read off the live
   page rather than off the rules (`resolve.py`) -- `--c` and `--b` are
   width-driven where the rules above read height-driven, `--tr`'s `contain`
   is `auto 100%` only because its 1050x870 image in a 1440x494 box is fitted
   by the height, and `--tr85` is its own export at 1:1 so a percentage would
   be a different picture.

   The two corner-pinned waves are swelled only above 900px. Below it `contain`
   stops being fitted by the height on one and Divi rewrites the other, so the
   expression would no longer be the same picture -- there they simply sit
   still, which is what a phone wants anyway.

   Nothing runs for a visitor who has asked for less motion.
   -------------------------------------------------------------------------- */

@property --pwd-calm {
	syntax: "<number>";
	inherits: false;
	initial-value: 0;
}

@keyframes pwd-wave-calm {
	0%   { --pwd-calm: 0; }
	50%  { --pwd-calm: 1; }
	100% { --pwd-calm: 0; }
}

@media (prefers-reduced-motion: no-preference) {

	/* 135:1638 -- the Who We Are hero. */
	.pwd-wave.pwd-wave--l {
		background-size: auto calc(100% + var(--pwd-calm, 0) * 1.6%) !important;
		animation: pwd-wave-calm 6s ease-in-out infinite;
	}

	/* 135:3011 -- the values band, width-driven. */
	.pwd-wave.pwd-wave--c {
		background-size: calc(100% + var(--pwd-calm, 0) * 1.1%) auto !important;
		animation: pwd-wave-calm 7s ease-in-out infinite;
	}

	/* 135:3968 and Group 135:4788 -- the two Community Service waves. The
	   ribbon spans its band and its edges were already quiet, so this is the
	   one that can carry a real swell. */
	.pwd-wave.pwd-wave--b {
		background-size: calc(100% + var(--pwd-calm, 0) * 3.5%) auto !important;
		animation: pwd-wave-calm 6.5s ease-in-out infinite;
	}

	/* 115:1627 / 211:1296 / 278:2056 -- the story, investigator and blog
	   article heroes. `pwd-wave-glide` slid these 110px; they breathe now. */
	.pwd-wave.pwd-wave--tr {
		animation: pwd-wave-calm 6.5s ease-in-out infinite;
	}

	/* 278:1924 -- the blog listing, the same. */
	.pwd-wave.pwd-wave--tr85 {
		animation: pwd-wave-calm 7.5s ease-in-out infinite;
	}
}

/* The swell for the two corner-pinned waves, above the width where their
   resting size stops being the one these expressions reproduce. */
@media (prefers-reduced-motion: no-preference) and (min-width: 901px) {
	.pwd-wave.pwd-wave--tr {
		background-size: auto calc(100% + var(--pwd-calm, 0) * 1.3%) !important;
	}
	.pwd-wave.pwd-wave--tr85 {
		background-size: calc(714px + var(--pwd-calm, 0) * 7.14px)
		                 calc(395px + var(--pwd-calm, 0) * 3.95px) !important;
	}
}
/* ==== /PWRESP:waves ==== */

/* pwd-featured-study -- BEGIN -- the Featured Clinical Study card, 130:805.

   The card is a Divi Library layout (pw-featured-study) and every value here
   is ALSO a setting on one of its modules. It is stated twice on purpose:
   Divi writes a page's design CSS by scanning that PAGE, and a card rendered
   through [cms] from the Divi Library was never on the page it scanned -- so
   the module settings are what the client opens and reads in the builder, and
   these are the half that actually applies.

   Nearly every rule below has to out-rank Divi rather than merely disagree
   with it. `.et_pb_row` and `.et_pb_column` are single classes, and
   style-static.min.css is enqueued AFTER this file, so a one-class rule of
   ours ties and loses on source order. */

/* [cms] wraps every rendered card in .cms-card, which front.css gives a
   listing tile's own chrome -- 28px of padding, a fill, an edge. This card IS
   the tile: 130:805 states all of that itself, so the wrapper doing it too
   made the card 1182 wide inside a 1240 band and padded it twice. Scoped to
   :has(.pwd-fst) rather than to a page, so it travels with the card wherever
   somebody places it (a rule about a component belongs on the component). */
.cms-card:has( .pwd-fst ) {
	padding: 0 !important;
	background: none !important;
	border: 0 !important;
	border-radius: 0 !important;
	box-shadow: none !important;
}
.cms-card:has( .pwd-fst ) > div,
.cms-card:has( .pwd-fst ) .et_pb_section {
	padding: 0 !important;
	margin: 0 !important;
	width: 100%;
}

.pwd-fst.et_pb_row {
	display: flex !important;
	/* The card grid states flex-direction: column on everything inside a
	   .cms-card, so the two halves stacked and the row had to say which way it
	   runs -- the third time this design has met that rule. */
	flex-direction: row !important;
	align-items: stretch;
	gap: 0;                          /* 130:806 ends at 792, 130:822 starts there */
	width: 100% !important;
	max-width: 100% !important;
	min-height: 280px;               /* 130:805 */
	padding: 28px !important;
	background: #FFFFFF;
	border: 1px solid #E4E7EC;
	border-radius: 24px;
	box-shadow: 0 8px 12px rgba( 107, 51, 235, 0.06 );
	box-sizing: border-box;
}

/* Divi clears a row with ::before and ::after. In a flex row each becomes a
   flex ITEM -- zero wide, and each still takes a gap. */
.pwd-fst.et_pb_row::before,
.pwd-fst.et_pb_row::after { display: none !important; }

/* Divi floats its columns and gives them a percentage width and a 5.5%
   right margin. The frame's two are a flex basis each. */
.pwd-fst.et_pb_row > .et_pb_column {
	float: none !important;
	margin: 0 !important;
	padding: 0 !important;
	width: auto !important;
	min-height: 0;
}

.pwd-fst > .et_pb_column.pwd-fst__info {   /* 130:806 -- 764 of the 1184 box */
	display: flex !important;
	flex: 1 1 764px;
	min-width: 0;
	flex-direction: column;
	align-items: flex-start;
}

/* Divi gives every module 30px of bottom margin and every heading and
   paragraph its own padding. The frame states each gap instead, and they add
   up to the info column's own 224: 18 + 12.5 + 36 + 16 + 48 + 16 + 33 + 12.5
   + 32.

   Each gap below therefore has to OUT-RANK this reset rather than merely come
   after it -- both carry !important, so specificity decides and a bare
   .pwd-fst__eyebrow (0,1,0) loses to .pwd-fst .et_pb_module (0,2,0). The
   symptom was every gap collapsing to zero with each rule present, matched
   and served. */
.pwd-fst .et_pb_module { margin: 0 !important; width: 100%; }
.pwd-fst .et_pb_text_inner > p:last-child { padding-bottom: 0 !important; }
.pwd-fst .et_pb_text_inner > p { margin: 0; }

.pwd-fst .et_pb_module.pwd-fst__eyebrow {   /* 130:807 -- Text/12px Semi Bold */
	margin-bottom: 12.5px !important;
}
.pwd-fst__eyebrow .et_pb_text_inner {
	font: 600 12px/1.5 'Plus Jakarta Sans', sans-serif;
	color: #7A44EC;
}

.pwd-fst .et_pb_module.pwd-fst__title {     /* 130:809 -- Heading/5, capitalize */
	margin-bottom: 16px !important;
}
.pwd-fst__title .et_pb_text_inner {
	font: 700 28px/1.3 'Plus Jakarta Sans', sans-serif;
	color: #181628;
	text-transform: capitalize;
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

.pwd-fst .et_pb_module.pwd-fst__desc {      /* 130:810 -- Text/16px Medium */
	margin-bottom: 16px !important;
}
.pwd-fst__desc .et_pb_text_inner {
	font: 500 16px/1.5 'Plus Jakarta Sans', sans-serif;
	color: #595F6B;
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
	/* 130:810 is 48 tall, which at 16/1.5 is exactly two lines. A clamp CAPS a
	   box and does not reserve one, so the height is stated beside it -- or a
	   one-line description lifts every row under it by 24 and two cards in a
	   rail stop lining up. */
	height: 48px;
}

.pwd-fst .et_pb_module.pwd-fst__tags {      /* 130:812 */
	margin-bottom: 12.5px !important;
}
.pwd-fst__tags .et_pb_text_inner,
.pwd-fst__tags .et_pb_text_inner > p {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.pwd-fst__tag {                      /* 130:815 -- the lavender tag */
	display: inline-flex;
	align-items: center;
	/* A Figma stroke is drawn INSIDE the frame and a CSS border is not, so
	   130:813's 6/16 of padding plus its 1px stroke is 5/15 plus a border
	   here. That is the two pixels, and it is what makes the pill 102 x 33. */
	padding: 5px 15px;
	border-radius: 100px;
	background: #EFE8FD;
	border: 1px solid #E1D5FB;
	font: 600 14px/1.5 'Plus Jakarta Sans', sans-serif;
	color: #7A44EC;
	white-space: nowrap;
}

.pwd-fst__tag--status {              /* 130:813 -- Recruiting */
	background: #E1F7EC;
	border-color: rgba( 16, 124, 65, 0.3 );
	color: #107C41;
	text-transform: capitalize;
}

/* A study with no status stored renders an empty span, and an empty pill is a
   coloured smudge on the card. No status, no pill -- and with no pill at all,
   no row for it either. */
.pwd-fst__tag:empty { display: none !important; }
.pwd-fst__tags:not(:has(.pwd-fst__tag:not(:empty))) { display: none !important; }

/* 130:821 sits on the info column's own bottom edge, and the card is taller
   than its content whenever a title wraps -- so the button is pushed down
   rather than following whatever is above it. */
.pwd-fst .et_pb_module.pwd-fst__ctamod { margin-top: auto !important; }
.pwd-fst__cta {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: 8px 0;
	min-width: 120px;
	font: 700 16px/1 'Plus Jakarta Sans', sans-serif;
	/* A module's text colour does not reach its links, and Divi writes its own
	   a{} after this file -- the third time this design has met it. */
	color: #7A44EC !important;
	text-transform: capitalize;
	text-decoration: none;
}
.pwd-fst__cta svg {
	width: 16px !important;
	height: 16px !important;
	flex: 0 0 16px;
}

.pwd-fst > .et_pb_column.pwd-fst__pic {    /* 130:822 -- 420 x 224, radius 16 */
	position: relative;
	flex: 0 0 420px;
	align-self: stretch;
	border-radius: 16px;
	overflow: hidden;
	min-height: 224px;
}

/* The crop has to reach the WRAPPER: Divi gives an image's <a> and its
   .et_pb_image_wrap an explicit height taken from the file's own proportions,
   so cropping the <img> alone leaves the wrapper at the photograph's natural
   height and the card, the row and the section all follow it.

   And the height here is CIRCULAR -- the picture fills a row whose height it
   would otherwise be setting. AVASET's file is 732 x 487, which at 420 wide is
   280 tall, so it pushed the card to 338 with every rule in the cascade
   correct and applying. Taking it out of the flow is what stops a photograph
   deciding how tall the card is. */
.pwd-fst__pic .et_pb_image,
.pwd-fst__pic .et_pb_image_wrap,
.pwd-fst__pic a,
.pwd-fst__pic img {
	position: absolute !important;
	inset: 0;
	display: block !important;
	width: 100% !important;
	height: 100% !important;
	max-width: none !important;
	margin: 0 !important;
	border-radius: 16px !important;
}
.pwd-fst__pic img {
	object-fit: cover;
	object-position: center 35%;
}

/* the rail -- only ever built where a condition names more than one study */
.pwd-featured-rail { position: relative; }
.pwd-featured-rail .cms-list {
	display: flex !important;
	grid-template-columns: none !important;
	gap: 24px;
	margin-bottom: 0;
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	scroll-behavior: smooth;
	scrollbar-width: none;
	-ms-overflow-style: none;
}
.pwd-featured-rail .cms-list::-webkit-scrollbar { display: none; }
.pwd-featured-rail .cms-card {
	flex: 0 0 100%;
	max-width: 100%;
	scroll-snap-align: start;
}
.pwd-featured-rail .pwd-rail__dots {
	display: flex;
	justify-content: center;
	gap: 8px;
	margin-top: 16px;
}
.pwd-featured-rail .pwd-rail__dot {
	width: 10px;
	height: 10px;
	padding: 0;
	border: 0;
	border-radius: 100px;
	background: #E1D5FB;
	cursor: pointer;
}
.pwd-featured-rail .pwd-rail__dot[aria-current="true"] { background: #7A44EC; }
.pwd-featured-rail .pwd-rail__btn {
	position: absolute;
	top: 140px;
	width: 40px;
	height: 40px;
	display: flex;
	align-items: center;
	justify-content: center;
	border: 1px solid #E1D5FB;
	border-radius: 100px;
	background: #FFFFFF;
	color: #7A44EC;
	font-size: 22px;
	line-height: 1;
	cursor: pointer;
	box-shadow: 0 4px 10px rgba( 107, 51, 235, 0.10 );
	z-index: 2;
}
.pwd-featured-rail .pwd-rail__btn--prev { left: -20px; }
.pwd-featured-rail .pwd-rail__btn--next { right: -20px; }

/* The band is the client's own row and the card fills it. `.cms-list` gives
   every listing a 24px bottom margin so it clears what follows; here the
   section already carries the frame's own space. */
.pwd-sc-featres .cms-list { margin-bottom: 0; }
.pwd-sc-featres .cms-results { margin-bottom: 32px; }

@media ( max-width: 980px ) {
	.pwd-fst.et_pb_row { flex-direction: column-reverse !important; gap: 24px; min-height: 0; }
	.pwd-fst > .et_pb_column.pwd-fst__pic { flex: 0 0 auto; width: 100% !important; min-height: 200px; }
	.pwd-featured-rail .pwd-rail__btn { top: auto; bottom: -52px; }
	.pwd-featured-rail .pwd-rail__btn--prev { left: 24px; }
	.pwd-featured-rail .pwd-rail__btn--next { right: 24px; }
	.pwd-featured-rail .pwd-rail__dots { margin-top: 20px; }
}

@media ( max-width: 600px ) {
	.pwd-fst.et_pb_row { padding: 20px !important; }
	.pwd-fst__title .et_pb_text_inner { font-size: 22px; }
	.pwd-fst__desc .et_pb_text_inner { height: auto; -webkit-line-clamp: 3; }
}
/* pwd-featured-study -- END */

/* ==== PWRESP:blogcard-hover ==== */
/* ==========================================================================
   The blog card's hover state, made prominent -- client feedback 2026-09-08,
   Design QA / Insights-Articles-Blogs: "make hover state more prominent with
   cards feeling lifted (moving around a few pixels on the y-axis and updating
   shadow spread)".

   What it was: no lift at all, and a shadow of 0 2px 10px -4px at 0.15 alpha
   -- a 10px blur pulled back 4, which is smaller than the card's own resting
   gray/5. So the only thing that changed on hover was a hairline going from
   Grey 5 to Lavender 100, which is what "not prominent" meant.

   Three things, and each is why the shorthand cannot be inherited from above:

   - the RESTING border is an inset shadow, not a border (229:571's stroke is
     drawn inside the box and a real border ate 2px of the content). So every
     hover shadow here has to restate that inset hairline or the card loses
     its edge for as long as the pointer is on it.
   - the lift is 4px, and the transition names transform explicitly rather
     than `all` -- `all` would also animate the inset hairline's colour, which
     reads as the edge fading rather than the card rising.
   - `z-index: 1` on the lifted card, because a wider shadow on a 24px grid
     gap otherwise paints UNDER the card to its right (a later sibling's
     background paints after an earlier sibling's shadow).
   ========================================================================== */

.pwd-bgrid .pwd-blogcard {
	transition: box-shadow 0.18s ease, transform 0.18s ease;
}

.pwd-bgrid .pwd-blogcard:hover,
.pwd-bgrid .pwd-blogcard:focus-within {
	transform: translateY(-4px);
	z-index: 1;
	box-shadow:
		inset 0 0 0 1px var(--pw-lav-200),
		0 14px 30px -10px rgba(107, 51, 235, 0.30),
		0 4px 12px -6px rgba(24, 22, 40, 0.12);
}

/* The featured card is the same component one size up, so it lifts too --
   half as far, because it is 1240 wide and a 4px rise on a band that width
   reads as the whole page moving. */
.pwd-bfeat .pwd-blogcard {
	transition: box-shadow 0.18s ease, transform 0.18s ease;
}
.pwd-bfeat .pwd-blogcard:hover,
.pwd-bfeat .pwd-blogcard:focus-within {
	transform: translateY(-2px);
	box-shadow:
		inset 0 0 0 1px var(--pw-lav-200),
		0 16px 34px -12px rgba(107, 51, 235, 0.26);
}

/* A visitor who has asked for less motion keeps the shadow and loses the
   travel -- the shadow is the half that says "this is a link". */
@media (prefers-reduced-motion: reduce) {
	.pwd-bgrid .pwd-blogcard,
	.pwd-bfeat .pwd-blogcard { transition: box-shadow 0.18s ease; }
	.pwd-bgrid .pwd-blogcard:hover,
	.pwd-bgrid .pwd-blogcard:focus-within,
	.pwd-bfeat .pwd-blogcard:hover,
	.pwd-bfeat .pwd-blogcard:focus-within { transform: none; }
}
/* ==== /PWRESP:blogcard-hover ==== */

/* ==== PWRESP:btn-hover ==== */
/* ==========================================================================
   Primary buttons had no visible hover state -- client feedback 2026-09-08,
   Design QA / Insights-Articles-Blogs: "all primary buttons should have
   hover states".

   What was there: `opacity: 0.94` on a purple gradient, which is a 6%
   dimming and is invisible on a screen.  The design does not dim a button at
   all -- 1:3795 carries a hover VARIANT for every style, and the only thing
   it changes on Primary is the shadow:

     Default (1:3934)  drop-shadow  0 1.5px 0.75px rgba(0,0,0,0.16)
     hover   (1:3938)  Drop Shadow/Pruples/30 --
                       #6B33EB40  offset (0,4)  blur 12  spread -2
                       #6B33EB26  offset (0,8)  blur 24  spread -4

   The gradient, the size, the label and the 1px top edge are IDENTICAL in
   both variants, which is worth saying because it is the whole answer: a
   primary button lights up, it does not change colour and it does not move.

   Two mechanics:

   - the default shadow is a `filter: drop-shadow()`, and a filter cannot
     express a spread.  Both of the design's hover shadows have one, so hover
     switches to a real `box-shadow` and turns the filter off -- otherwise the
     two compose and the button wears three shadows.
   - Divi writes its own hover on `.et_pb_button:hover` from a selector
     carrying an id, so every rule that has to reach a Divi-rendered button
     (Read Article, Submit) is stated again with `!important`.  The plugin's
     own `.pwd-btn` needs none.
   ========================================================================== */

:root {
	/* 1:3938's own two shadows, as box-shadow so the spread survives */
	--pw-btn-shadow-hover:
		0 4px 12px -2px rgba(107, 51, 235, 0.25),
		0 8px 24px -4px rgba(107, 51, 235, 0.15);
}

.pwd-btn--primary {
	transition: box-shadow 0.18s ease, filter 0.18s ease, opacity 0.18s ease;
}
.pwd-btn--primary:hover,
.pwd-btn--primary:focus-visible {
	opacity: 1;                       /* the design does not dim it */
	filter: none;
	box-shadow: var(--pw-btn-shadow-hover);
}

/* The Outline hover (1:3953) is Gradient/2 -- a pale lavender wash across the
   button -- with the #E1D5FB edge and the Lavender/600 label both unchanged. */
.pwd-btn--outline,
.pwd-btn--surface { transition: background 0.18s ease, box-shadow 0.18s ease; }
.pwd-btn--surface:hover,
.pwd-btn--surface:focus-visible {
	background: linear-gradient(90deg,
		rgba(242, 237, 255, 0.7) 0%,
		rgba(250, 247, 255, 0.4) 50%,
		rgba(245, 240, 255, 0.65) 100%);
	border-color: var(--pw-lav-200);
	box-shadow: 0 2px 8px -2px rgba(107, 51, 235, 0.14);
}

/* --- the same states on the buttons Divi renders -------------------------- */

/* "Read Article" on the featured card (278:1943) is a Medium Primary. Its
   default and its hover were deliberately written as ONE rule so Divi could
   not change it on hover -- which also meant it could not have a hover at
   all.  The default half is untouched; this adds the state to the hover. */
.pwd-blogcard .et_pb_button.pwd-bf__cta {
	transition: box-shadow 0.18s ease !important;
}
.pwd-blogcard .et_pb_button.pwd-bf__cta:hover,
.pwd-blogcard .et_pb_button.pwd-bf__cta:focus-visible {
	box-shadow: var(--pw-btn-shadow-hover) !important;
	opacity: 1 !important;
}

/* The newsletter band's Submit is a Primary too, and it is on every screen. */
.pwd-newsletter .pwd-newsletter__submit {
	transition: box-shadow 0.18s ease, filter 0.18s ease !important;
}
.pwd-newsletter .pwd-newsletter__submit:hover,
.pwd-newsletter .pwd-newsletter__submit:focus-visible {
	filter: none !important;
	box-shadow: var(--pw-btn-shadow-hover) !important;
	opacity: 1 !important;
}

/* "Subscribe to our newsletter" in the blog hero is an Outline (278:1923). */
.pwd-bl-hero .et_pb_button.pwd-bl-sub {
	transition: background 0.18s ease, box-shadow 0.18s ease !important;
}
.pwd-bl-hero .et_pb_button.pwd-bl-sub:hover,
.pwd-bl-hero .et_pb_button.pwd-bl-sub:focus-visible {
	background: linear-gradient(90deg,
		rgba(242, 237, 255, 0.7) 0%,
		rgba(250, 247, 255, 0.4) 50%,
		rgba(245, 240, 255, 0.65) 100%) !important;
	border-color: var(--pw-lav-200) !important;
	color: var(--pw-primary) !important;
	box-shadow: 0 2px 8px -2px rgba(107, 51, 235, 0.14) !important;
}

@media (prefers-reduced-motion: reduce) {
	.pwd-btn--primary,
	.pwd-blogcard .et_pb_button.pwd-bf__cta,
	.pwd-newsletter .pwd-newsletter__submit,
	.pwd-bl-hero .et_pb_button.pwd-bl-sub { transition: none !important; }
}
/* ==== /PWRESP:btn-hover ==== */

/* ==== PWRESP:nl-wave ==== */
/* ==========================================================================
   The newsletter band's wave -- client feedback 2026-09-08, Design QA /
   Insights-Articles-Blogs: "subscribe section to have subtle wave image in
   the background".

   278:2105 Newsletter-Section holds `Group` 278:2106, a 2309-wide stack of
   vectors sitting at y=31 of the 249-tall band.  This file has recorded it
   since the investigator screen was audited -- "the frame's newsletter also
   carries a faint wave behind the lavender that the band does not draw; it
   is barely visible against #F5F2FC and was left."  The client has now asked
   for it, so it is drawn.

   It really is barely visible, and that is the design rather than a weak
   export: composited over #F5F2FC the artwork matches the frame's own render
   to a mean of 0.36 of 255 where a flat band is 1.48, and its largest
   departure from flat anywhere is 8 levels.  Do not "fix" it by darkening it.

   Two things about the file:

   - Figma exports 278:2106 ALREADY CLIPPED to the section's own 1440 window
     (1440 x 218), the same way the Community Service contact strip's wave
     comes out.  It is padded here to the section's whole 1440 x 249 box with
     the wave at its own y=31, so one declaration can say "fill the band" and
     land byte-exact at 1440 instead of needing a position as well.
   - it keeps its alpha, so the band's #F5F2FC stays the fill underneath it
     rather than being baked into the picture -- change the fill and the wave
     follows.

   `background-size: 100% 100%` rather than cover: the band is full-bleed, so
   on a 2560 screen `cover` would scale the ribbon to 443 tall and crop the
   band's own height away.  Stretching a soft ribbon horizontally is what
   "it spans the band" means, and at 1440 the two are the same thing.

   The picture is a custom property, so a different one is one line in Divi's
   Custom CSS box rather than a deploy:
       .et_pb_section:has(.pwd-newsletter) { --pwd-nl-wave: url(...); }
   ========================================================================== */

.et_pb_section:has(.pwd-newsletter) {
	--pwd-nl-wave: url("brand/newsletter-wave.png");
	background-image: var(--pwd-nl-wave);
	background-repeat: no-repeat;
	background-position: center center;
	background-size: 100% 100%;
}

/* Below the tablet step the band grows tall as its own content stacks, and a
   ribbon drawn 1:1 into a 400px box is a smear rather than a wave.  It keeps
   its own proportion there and sits on the band's top edge, which is where
   the frame puts it. */
@media (max-width: 767px) {
	.et_pb_section:has(.pwd-newsletter) {
		background-size: 200% auto;
		background-position: center top;
	}
}
/* ==== /PWRESP:nl-wave ==== */

/* ==== PWRESP:hero-anchor ==== */
/* ==========================================================================
   The blog heroes' wave was pinned to the screen's right edge, so on a big
   screen it left the content behind -- client feedback 2026-09-08, Design QA
   / Insights-Articles-Blogs: "static wave hero image layout to match design",
   reported as being right on a laptop and wrong on a large monitor.

   It was, and the reason is that two different things were being measured
   from two different edges.  The content row is 1240 and CENTRED; the wave
   is a fixed-pixel image positioned `right <drift> top`, which is measured
   from the VIEWPORT.  At 1440 the two coincide, which is the only width
   either Figma file draws and the only width every suite in this project
   opens.  Above it they separate, by exactly half the extra screen:

       width   content row      wave's own left edge     gap
       1440    x=100  .. 1340   597                      the frame
       1920    x=340  .. 1580   1077                     +265
       2560    x=660  .. 1900   1717                     +785

   So at 2560 the ribbon that the frame draws crossing BEHIND the article's
   portrait was 785px to the right of it, alone against empty ground -- which
   is the screenshot the client sent.

   The repair anchors the wave to the CENTRE instead, which is what the
   content column is measured from, so the two cannot drift apart again at
   any width.  The arithmetic, once, for the article hero:

       at rest the image's left edge is  C - I           = 1440 - 733 = 707
       the frame therefore wants it at   C/2 - 13
       `calc(50% + Z)` resolves to       (C - I)/2 + Z
       so                                Z = I/2 - 13    = 353.5

   and the drift subtracts from it, so the wave still travels (check 185 --
   this must not become a shorthand, and `--pwd-drift` must stay consumed or
   the animation is silently switched off).

   It is deliberately NOT scaled up on a wide screen.  The design states the
   ribbon at one size against a 1240 column; growing it would be inventing a
   decoration the design does not have.  Anchoring keeps the relationship the
   frame draws -- the wave crossing behind the portrait -- at every width.

   Below 901 the mobile ladder governs both heroes and is left alone; at 1440
   this block computes to the same pixels as what it replaces.
   ========================================================================== */

@media (min-width: 901px) {

	/* the article, 278:2056 -- image 733 x 491, at rest right 0 top */
	.pwd-bs-hero,
	.pwd-bs-hero.pwd-wave {
		background-position: calc(50% + 353.5px) top !important;
	}

	/* the listing, 278:1924 -- image 714 x 395, at rest right 0 top 85px.
	   Its 726 is 278:1924's own renderBounds x, so the anchored value is the
	   frame's number rather than a number read back off the build. */
	.pwd-bl-hero,
	.pwd-bl-hero.pwd-wave {
		/* the four-value form needs an edge keyword on BOTH axes: a bare
		   `calc()` beside a `top 85px` is not valid syntax and the whole
		   declaration is dropped in silence -- which read as the rule not
		   applying at all, on the listing only, while the article's own
		   two-value form worked. */
		background-position: left calc(50% + 363px) top 85px !important;
	}

	@media (prefers-reduced-motion: no-preference) {
		.pwd-bs-hero.pwd-wave {
			background-position: calc(50% + 353.5px - var(--pwd-drift, 0px)) top !important;
		}
		.pwd-bl-hero.pwd-wave {
			background-position: left calc(50% + 363px - var(--pwd-drift, 0px)) top 85px !important;
		}
	}
}
/* ==== /PWRESP:hero-anchor ==== */

/* pwd-inv-states -- BEGIN -- hover, focus and pressed on the Investigator
   Profiles directory (135:593).

   Nothing on this screen answered a pointer except the card's own name and the
   Load More pill: the card lifted on a shadow nobody had read off a node, the
   grid card's "View Profile" did nothing at all, the featured card's Primary
   button did nothing, and neither the Condition Focus control nor the keyword
   box had a focus state -- which is the one a keyboard user actually needs.

   The frame draws no hover for these cards. So every value below is taken from
   the design system rather than picked to taste, and each carries the node it
   came from:

     161:3234  DropdownItem -- the only CARD hover the file states
     1:3873    Button / Primary / Medium / hover
     1:4064    Button / Link / Small / hover
     1:4327    Text input -- its focus state

   Scoped by `:has(.pwd-c-photo)` rather than to a page, because a rule about a
   component belongs on the component: `.pwd-c-photo`, `.pwd-c-name` and
   `.pwd-c-link` exist on exactly one Divi Library layout
   (cms-card-investigator-profiles, #11369), so this travels with the card
   wherever somebody places it and reaches no other collection's cards. */

/* -------------------------------------------------------------- the card -- */

/* The card already carries 135:662's own 1px #E4E7EC edge and its 16px
   corners, so nothing here declares a border -- adding one to hang a colour
   on would eat 2px of a card this screen measures to the pixel. Only the
   colour moves. */
.cms-card:has( .pwd-c-photo ) {
	transition:
		border-color 0.18s ease,
		box-shadow   0.18s ease,
		transform    0.18s ease;
}

/* 161:3234 states the edge and the shadow; the 2px lift is this screen's own
   and was already here, so it is kept rather than swapped for the navbar
   card's 1px -- that number was measured on a 276px card, not a 440px one. */
.cms-card:has( .pwd-c-photo ):hover,
.cms-card:has( .pwd-c-photo ):focus-within {
	border-color: var( --pw-lav-200, #E1D5FB );
	box-shadow:
		0 12px 24px rgba( 0, 0, 0, 0.08 ),
		0 4px 8px rgba( 0, 0, 0, 0.06 );
	transform: translateY( -2px );
}

/* 161:2994 -- the DropdownItem's title turns Lavender/600 when the CARD is
   hovered, not only when the words themselves are. Half of this card is a
   photograph, and a title that only answers its own 200px is a title most
   people never see answer. */
.cms-card:has( .pwd-c-photo ):hover .pwd-c-name a,
.cms-card:has( .pwd-c-photo ):focus-within .pwd-c-name a {
	color: var( --pw-primary, #7A44EC );
}

/* --------------------------------------------------- View Profile, 1:4064 -- */

/* The Link hover is a 1px Lavender/600 rule under the whole component -- the
   words AND the arrow, which is why it is not `text-decoration`. It is drawn
   as a box-shadow rather than a border because the card's own generated CSS
   carries `border-width: 0 !important` from a selector holding an id, which
   nothing in this file can out-rank. */
.et_pb_button.pwd-c-link {
	box-shadow: 0 1px 0 0 rgba( 122, 68, 236, 0 );
	transition: box-shadow 0.18s ease, color 0.18s ease;
}
.cms-card:has( .pwd-c-photo ):hover .et_pb_button.pwd-c-link,
.et_pb_button.pwd-c-link:hover,
.et_pb_button.pwd-c-link:focus-visible {
	box-shadow: 0 1px 0 0 var( --pw-primary, #7A44EC );
	color: var( --pw-primary, #7A44EC ) !important;
}

/* ---------------------------------------------- the featured card, 1:3873 -- */

/* Primary / Medium / hover keeps the gradient and the label exactly as they
   are and gains Drop Shadow/Purples/10. `--pw-btn-shadow-hover` is already
   in this stylesheet, read off 1:3938; `.pwd-f-btn` is a Divi button and
   carries none of the `.pwd-btn--primary` classes, so it never reached it. */
.et_pb_button.pwd-f-btn {
	transition: box-shadow 0.18s ease, transform 0.18s ease;
}
.et_pb_button.pwd-f-btn:hover,
.et_pb_button.pwd-f-btn:focus-visible {
	box-shadow: var( --pw-btn-shadow-hover,
		0 4px 12px -2px rgba( 107, 51, 235, 0.25 ),
		0 8px 24px -4px rgba( 107, 51, 235, 0.15 ) ) !important;
	transform: translateY( -1px );
}
/* 1:3853 -- Pressed is Secondary/800. The file states it for every Primary
   size and no stylesheet on this site had it. */
.et_pb_button.pwd-f-btn:active {
	background-image: none !important;
	background-color: #5427AD !important;
	transform: translateY( 0 );
}

/* --------------------------------------------- the featured card's box -- */

/* The card measured 431 against 135:630's 410, and the whole 21 was ONE list.
   Condition Focus renders the cms plugin's own `<ul class="cms-refs">`, and
   Divi says `ul { padding: 0 0 23px 1em }` from a selector carrying an id --
   so the value came out 40 tall where 135:657 is 21, and the heading, the
   grid, Load More, the closing quote and the newsletter band below it all sat
   21px down the page. `qa-inv.py` caught it as six failures and named the
   right thing first: fcard.h.

   This is the FOURTH time that one Divi rule has cost this project a
   measurement -- the footer's own links, the Types and Treatment card grids,
   the stories hub's sort list, and now this. When a list is 10-20px taller
   than the frame, read `padding-bottom` off the <ul> before reading anything
   else. */
.pwd-f-focus .cms-refs,
.pwd-f-chips .cms-refs {
	margin: 0 !important;
	padding: 0 !important;
	list-style: none;
}
.pwd-f-focus .cms-refs > li,
.pwd-f-chips .cms-refs > li {
	margin: 0 !important;
	padding: 0 !important;
	/* ...and the other half of the same Divi rule: a List Item is given a
	   26px line box where 135:657's value is 21, which is 14 at the 1.5 the
	   style guide sets for every body size. The footer's column pitch was
	   this same pair of declarations (check 83). */
	line-height: 1.5 !important;
}

/* ------------------------------------------- the two controls, 1:4327 --- */

/* The keyword box already answers a FOCUS -- 1:4327's Lavender/600 edge, with
   a soft halo this stylesheet had before today -- and it is deliberately left
   exactly as it is. What neither control had is a HOVER: the pointer crossed a
   40px field and nothing said it could be typed in.

   `input` rather than `input[type="search"]`: this one carries no type
   attribute at all, so an attribute selector matches nothing and the rule
   reads as correct while doing nothing. */
.pwd-p-filterbar .pwd-select__btn,
.pwd-p-filterbar .cms-filters input[type="search"] {
	transition: border-color 0.18s ease, box-shadow 0.18s ease;
}
/* The keyword box's resting edge is written at three classes and an attribute
   (`.pwd-p-filterbar .cms-filters input[type="search"]`), so a hover said at
   two loses to it and does nothing at all -- present, matched, served and
   beaten. It has to be said at the same reach. */
.pwd-p-filterbar .pwd-select__btn:hover,
.pwd-p-filterbar .cms-filters input[type="search"]:hover {
	/* !important because the resting rule's own `border` shorthand carries it:
	   an important declaration beats a plain one whatever the specificity, so
	   raising the selector was necessary and not sufficient. */
	border-color: var( --pw-lav-200, #E1D5FB ) !important;
}
/* The control beside it is a <button>, so it had no focus state of any kind.
   1:4327's focus is a 1.5px Lavender/600 edge -- said as a 1px border plus a
   half-pixel ring, because growing a border by half a pixel moves the text
   inside a control that is 40 tall to the pixel. */
.pwd-p-filterbar .pwd-select__btn:focus-visible {
	border-color: var( --pw-primary, #7A44EC ) !important;
	box-shadow: 0 0 0 0.5px var( --pw-primary, #7A44EC );
	outline: none;
}

/* --------------------------------------------------------------------------
   Somebody who has asked for less motion gets every colour change and none of
   the movement -- the lift is the only part of this that moves. */
@media ( prefers-reduced-motion: reduce ) {
	.cms-card:has( .pwd-c-photo ),
	.cms-card:has( .pwd-c-photo ):hover,
	.cms-card:has( .pwd-c-photo ):focus-within,
	.et_pb_button.pwd-f-btn,
	.et_pb_button.pwd-f-btn:hover,
	.et_pb_button.pwd-f-btn:focus-visible {
		transform: none;
		transition-property: border-color, box-shadow, color;
	}
}
/* pwd-inv-states -- END */

/* ==== PWRESP:cond-hero-wave ==== */
/* The Conditions hub hero's wave has to cross the photograph (1:2033).
 *
 * 87:2717 stacks three layers -- a solid photograph (1:2032), the wave, and
 * then a GHOST copy of the same photograph (4:339) whose own image carries an
 * alpha of 59.8 of 255, measured off Figma's raw asset. So in the frame the
 * ribbon reads as a tint running ACROSS the picture, not only around it.
 *
 * The page draws ONE opaque photograph, so the section's background image --
 * which is the client's own Divi control and is right for everything outside
 * the picture -- leaves the wave visible only where the picture is not. This
 * repeats the same tile over the photograph's own column and nowhere else.
 *
 * Two things keep it honest:
 *   - background-image: inherit, so the Divi background control stays the
 *     single source. Change or clear it there and this follows (check 142).
 *   - the tile is aligned to the section's right edge and sized by the
 *     section's height, which is exactly what the section's own
 *     background-size: contain resolves to while it is height-limited --
 *     so the two copies are pixel-aligned and cannot disagree.
 *
 * The photograph's column starts 460px into the 1240 content row, and that
 * row centres, so its left edge is (100% - 1240)/2 + 460 -- which is
 * calc(50% + 160px) of width measured from the right. Exact at 1440 and
 * above; within a few px between 1280 and 1439, where the row shrinks with
 * the gutter ladder. Below 1280 the hero stacks and the section background
 * is the whole of it.
 */
.pwd-ch-hero::after {
	content: "";
	position: absolute;
	top: 0;
	bottom: 0;
	right: 0;
	width: calc( 50% + 160px );
	z-index: 2;               /* the photograph's column is z-index 1 */
	pointer-events: none;
	background-image: inherit;
	background-repeat: no-repeat;
	background-position: right top;
	background-size: auto 100%;

	/* 0.68 of full strength, which is measured rather than picked: in the
	 * frame the ribbon is DILUTED by the ghost photograph over it, whose own
	 * alpha reads 0.37 over the sand and 0.27 over the whole picture -- so
	 * what a visitor sees there is (1 - ghost) of the wave. Drawn at full
	 * strength the band washes the photograph out, which the frame does not.
	 * The wave OUTSIDE the picture is the section's own background and keeps
	 * its full strength, exactly as the frame draws it. */
	opacity: 0.68;
}

@media ( max-width: 1279px ) {
	.pwd-ch-hero::after { display: none; }
}
/* ==== /PWRESP:cond-hero-wave ==== */

/* pwd-cond-states -- BEGIN -- the Condition Hub's and the condition page's
   card states, and the curated band's own background.

   The client put four screenshots beside the frames: the health-area tiles'
   three states, the directory card's two, the curated band's background and
   cards, and the Research & Resources tab bar. Every value below is read off
   the file's OWN state frames -- `1:3692 states` sits on the canvas beside the
   screen for exactly this purpose and nothing here had ever read it (check 78:
   a component set beside a frame is part of the spec, not a scratch pad).

     1:3700 / 1:3693 / 126:610   Tab-Card-Immune default / hover / selected
     171:1179 / 171:1186         the directory card, default and hover
     8:1647 · 1:2979 · 1:3004    the three curated cards
     130:826 / 130:827           the Research & Resources tab bar
*/

/* ============================================ the health-area tiles ======
   Three states, and the built ones had them shuffled: the default wore the
   hover's edge, the hover wore a purple edge the frame never draws, and
   neither hover nor selected had the frame's shadow at all. */

/* 1:3700 -- default */
.pwd-areas .pwd-area {
	border-color: #E4E7EC;
	box-shadow: none;
	transition: border-color 0.18s ease, box-shadow 0.18s ease,
	            background-color 0.18s ease;
}
.pwd-area .pwd-area__label {
	font-size: 12px;
	font-weight: 600;
	color: #1C1828;
}
.pwd-area .pwd-area__count {
	font-size: 11px;
	font-weight: 500;
	color: #8B7BAE;
}

/* 1:3693 -- hover. Drop Shadow/Purples/5, and the edge softens to
   Lavender/100 rather than going to the full Lavender/600. */
.pwd-areas .pwd-area:hover,
.pwd-areas .pwd-area:focus-visible {
	border-color: #EFE8FD;
	box-shadow: 0 2px 10px -4px rgba( 107, 51, 235, 0.15 );
}

/* 126:610 -- selected. The label and the count are BIGGER here, which is the
   file's own decision and is visible in the client's screenshot: 14 Bold
   white over 12 SemiBold Grey 5, against 12/11 at rest. */
.pwd-areas .pwd-area.is-on {
	background: #7A44EC;
	border-color: #7A44EC;
	box-shadow: 0 2px 10px -4px rgba( 107, 51, 235, 0.15 );
}
.pwd-areas .pwd-area.is-on .pwd-area__icon {
	background-image: none;
	background-color: #6833D2;
	border-color: #6833D2;
}
.pwd-areas .pwd-area.is-on .pwd-area__label {
	font-size: 14px;
	font-weight: 700;
	color: #FFFFFF;
}
.pwd-areas .pwd-area.is-on .pwd-area__count {
	font-size: 12px;
	font-weight: 600;
	color: #E4E7EC;
}

/* ============================================== the directory card ======
   171:1186's hover is a WASH, an edge and a small purple shadow -- it does
   not lift. What was there lifted 3px on a shadow nobody had read off a
   node, and changed nothing else. */

.pwd-ch-grid .cms-card {
	/* 171:1179 -- gray/5 is 0 4 16, not 0 4 8 */
	box-shadow: 0 4px 16px rgba( 28, 24, 40, 0.05 );
	transition: background 0.18s ease, border-color 0.18s ease,
	            box-shadow 0.18s ease;
}
.pwd-ch-grid .cms-card:hover,
.pwd-ch-grid .cms-card:focus-within {
	background-image: linear-gradient( 90deg,
		rgba( 245, 243, 255, 0.7 ) 0%,
		rgba( 255, 255, 255, 0.7 ) 55%,
		rgba( 245, 243, 255, 0.7 ) 100% );
	border-color: #EFE8FD;
	box-shadow: 0 2px 10px rgba( 107, 51, 235, 0.15 );
	transform: none;
}
/* 171:1182 -> 171:1189 -- the round arrow button goes Grey 6 to Lavender/50,
   and its glyph to Lavender/600. */
.pwd-ch-grid .cms-card .pwd-cc-go {
	transition: background-color 0.18s ease, color 0.18s ease;
}
.pwd-ch-grid .cms-card:hover .pwd-cc-go,
.pwd-ch-grid .cms-card:focus-within .pwd-cc-go {
	background-color: #F7F4FE;
	color: #7A44EC;
}

/* ========================================= the curated band's cards ======
   8:1647, 1:2979 and 1:3004 are each a three-stop glass wash -- Lavender at
   both ends, white through the middle at 55% -- and all three were built as a
   FLAT white at the wash's own alpha. That is the same fault the About Us
   values card had, and it is what makes this band read as three plain boxes
   rather than the frame's glass. The two outer cards are at 0.2 and the
   middle one at 0.7; the difference is deliberate and visible. */

.pwd-ch-curated > .et_pb_column {
	background-color: transparent !important;
}
.pwd-ch-curated > .et_pb_column:nth-child(1),
.pwd-ch-curated > .et_pb_column:nth-child(3) {
	background-image: linear-gradient( 90deg,
		rgba( 245, 243, 255, 0.2 ) 0%,
		rgba( 255, 255, 255, 0.2 ) 55%,
		rgba( 245, 243, 255, 0.2 ) 100% ) !important;
}
.pwd-ch-curated > .et_pb_column:nth-child(2) {
	background-image: linear-gradient( 90deg,
		rgba( 245, 243, 255, 0.7 ) 0%,
		rgba( 255, 255, 255, 0.7 ) 55%,
		rgba( 245, 243, 255, 0.7 ) 100% ) !important;
}

/* 117:7694 -- "view all patient stories" is Neutral/Grey 1, the same as the
   two links in the card beside it (171:1133, 117:7699). It was Lavender/600,
   which made one of the three columns shout. */
.pwd-ch-curated > .et_pb_column:nth-child(2) .pwd-ch-allstories,
.pwd-ch-curated > .et_pb_column:nth-child(2) > .et_pb_module:last-child a {
	color: #595F6B !important;
}

/* ==================================== Research & Resources tab bar ======
   130:826. Every rule for this bar was already in this stylesheet and every
   one of them was LOSING: Divi ships `.et-db #et-boc .et-l ul.et_pb_tabs_controls`
   (four classes and an id) and `.et_pb_tab_active a { color: #333 !important }`,
   against ours at three classes. So the bar painted Divi's own #F4F4F4 with
   no padding, the active tab's label came out #333 and the idle ones #666 --
   which is the grey strip in the client's screenshot. Beaten here by reaching
   past it, not by disagreeing with it. */

/* The padding needed one more class than the colour did, and the colour
   needed an ID. Divi's are `.et-db #et-boc .et-l .et_pb_tabs_controls
   { padding: 0 !important }` -- (0,4,1) plus important, which TIED with the
   first attempt and won on source order -- and `.et-db #et-boc .et-l
   .et_pb_tab_active a { color: #333 !important }`, which carries an id and
   therefore beats any class-only selector however many classes it has.
   `#et-boc` is a wrapper Divi's own script adds after load, so before it runs
   neither rule matches and ours is the one that applies -- symmetric, and the
   only way to reach past this. */
.pwd-sc-band .pwd-sc-restabs.et_pb_tabs.et_pb_module ul.et_pb_tabs_controls,
.et-db #et-boc .et-l .pwd-sc-restabs .et_pb_tabs_controls {
	background-color: rgba( 255, 255, 255, 0.9 ) !important;
	background-image: none !important;
	padding: 16px 12px !important;
	gap: 16px;
	border-radius: 100px;
}
.pwd-sc-band .pwd-sc-restabs.et_pb_tabs ul.et_pb_tabs_controls li,
.et-db #et-boc .et-l .pwd-sc-restabs .et_pb_tabs_controls li {
	background-color: transparent !important;
	background-image: none !important;
	/* Divi rules a vertical line down the right of every tab. 130:826 draws
	   none -- the tabs are separated by the bar's own 16px gap. */
	border: 0 !important;
}
.pwd-sc-band .pwd-sc-restabs.et_pb_tabs ul.et_pb_tabs_controls li a,
.et-db #et-boc .et-l .pwd-sc-restabs .et_pb_tabs_controls li a {
	/* 130:828 -- Neutral/Dark, Medium */
	color: #181628 !important;
	font-weight: 500;
}
.pwd-sc-band .pwd-sc-restabs.et_pb_tabs ul.et_pb_tabs_controls li.et_pb_tab_active a,
.et-db #et-boc .et-l .pwd-sc-restabs .et_pb_tabs_controls li.et_pb_tab_active a {
	/* 130:827 -- Lavender/600, Bold, on Gradient/2 inside an #E1D5FB edge */
	color: #7A44EC !important;
	font-weight: 700;
}
.pwd-sc-band .pwd-sc-restabs.et_pb_tabs ul.et_pb_tabs_controls li a:hover,
.pwd-sc-band .pwd-sc-restabs.et_pb_tabs ul.et_pb_tabs_controls li a:focus-visible {
	color: #7A44EC !important;
}

/* ================== the curated band's own arrangement ==================
   Four more the client found by putting the band beside 1:2954. */

/* 1:2979 is `justify-between` and 567 tall: the Stories card's CTA sits on
   the card's own bottom edge (117:7694 at y=503 of 567), not directly under
   the last story with the rest of the card empty below it.

   Said as an auto margin on the CTA rather than as `space-between` on the
   column, because the frame's card has TWO children -- 171:1132 wraps the
   eyebrow and the stories together -- and ours has three. Spreading three
   pushes a gap between the eyebrow and the first story that the frame does
   not draw. */
.pwd-ch-curated > .et_pb_column:nth-child(2) .pwd-ch-more {
	margin-top: auto !important;
}

/* Every one of these is the Button component, and its label is `capitalize`
   -- which is why the frame reads "Find A Study" and "View All Patient
   Stories" while the layer text underneath is lower case. The words stay the
   client's; only the casing is the design's (check 105's other half). */
.pwd-ch-more a,
.pwd-ch-curated .pwd-fc-link,
.pwd-ch-curated > .et_pb_column:nth-child(1) .et_pb_text_inner > a {
	text-transform: capitalize;
}

/* The story card (1:2985) and the support row (1:3010) are both links and
   neither has a hover variant in the file, so they take the system's only
   card hover -- 161:3234, the same language the investigator cards use. */
.pwd-ch-stories .cms-card,
.pwd-ch-supportrow {
	transition: border-color 0.18s ease, box-shadow 0.18s ease;
}
/* The story card needs !important on both: its resting `border-color` is
   already written with one two classes up, and `.pwd-ch-curated .cms-card:hover
   { box-shadow: none !important }` -- a rule that exists to stop the FEATURED
   card lifting -- reaches these as well, because they share the ancestor
   (check 76, again). */
.pwd-ch-stories .cms-card:hover,
.pwd-ch-stories .cms-card:focus-within,
.pwd-ch-supportrow:hover,
.pwd-ch-supportrow:focus-within {
	border-color: var( --pw-lav-200, #E1D5FB ) !important;
	box-shadow:
		0 12px 24px rgba( 0, 0, 0, 0.08 ),
		0 4px 8px rgba( 0, 0, 0, 0.06 ) !important;
}

/* ======================= the condition page's own links ==================
   Check 133, on the page's own content this time rather than on the chrome.
   Divi ships `a, .et-db #et-boc .et-l a { color: #6a2b7f }` -- the client's
   own ePanel accent -- in the per-page unified stylesheet, and that file is
   enqueued on custom-post-type routes, which every condition page is. The
   second half of that selector carries an ID, so `.pwd-sc-back a` at one
   class loses however plainly it is written.

   Nine links a visitor can read were coming out in it: the back link, all
   seven section tabs and the newsletter band's legal line. Each is restated
   here at the one specificity that reaches past Divi -- and `#et-boc` is a
   wrapper Divi's own script adds after load, so before it runs neither rule
   matches and the plain one applies. */

.et-db #et-boc .et-l .pwd-sc-back a {
	color: var( --pw-primary, #7A44EC );
}
.et-db #et-boc .et-l .pwd-sc-tabs a {
	color: #181628;
}
.et-db #et-boc .et-l .pwd-sc-tabs a.is-active,
.et-db #et-boc .et-l .pwd-sc-tabs a:hover,
.et-db #et-boc .et-l .pwd-sc-tabs a:focus-visible {
	color: var( --pw-primary, #7A44EC );
}
.et-db #et-boc .et-l .pwd-newsletter__legal a {
	color: var( --pw-primary, #7A44EC );
}

/* ===================== the tile's icon, and the tab's ==================
   1:3700 vs 1:3693: the CARD barely changes between them -- what changes is
   the GLYPH, Neutral/Grey 1 at rest and Lavender/600 on hover. That is the
   "andar wala" the client pointed at, and ours was doing neither: it was
   inheriting `#6a2b7f` from Divi's own accent (check 133, on the hub this
   time -- seven icons) and it never moved. Sampled off the frame's own render
   rather than guessed: the resting ink reads (107,113,124) and the hovered
   (140,94,238) once anti-aliasing is allowed for. */
.pwd-areas .pwd-area .pwd-area__icon {
	color: #595F6B;
	transition: color 0.18s ease;
}
.pwd-areas .pwd-area:hover .pwd-area__icon,
.pwd-areas .pwd-area:focus-visible .pwd-area__icon {
	color: var( --pw-primary, #7A44EC );
}
.pwd-areas .pwd-area.is-on .pwd-area__icon {
	color: #FFFFFF;
}

/* 57:141 draws no hover for a section tab -- only active and inactive -- so
   the label already turning Lavender/600 is ours. The glyph goes with it,
   because a disc whose label has answered and whose icon has not reads as
   half a state. */
.pwd-sc-tabs a .pwd-sc-tabicon {
	transition: color 0.18s ease, background-color 0.18s ease;
}
.pwd-sc-tabs a:not(.is-active):hover .pwd-sc-tabicon,
.pwd-sc-tabs a:not(.is-active):focus-visible .pwd-sc-tabicon {
	color: var( --pw-primary, #7A44EC );
}

/* ================== the Research & Resources card, 130:834 =============
   A 64px Lavender/600 disc with a 32px white glyph, 24 of padding, 20 of gap,
   and a 20px Bold title. Ours was a 48px disc, 20/16, and a 16px title. */
.pwd-rl__item {
	padding: 24px;
	gap: 20px;
	align-items: flex-start;
}
.pwd-rl__icon {
	width: 64px;
	height: 64px;
	flex: 0 0 64px;
	border-radius: 32px;
}
.pwd-rl__icon svg {
	width: 32px !important;
	height: 32px !important;
}
.pwd-rl__body {
	display: flex;
	flex: 1 1 auto;
	min-width: 0;
	flex-direction: column;
	gap: 8px;                        /* 130:838 */
}
.pwd-rl__name {
	font-size: 20px;                 /* 130:839 Heading/7 */
	font-weight: 700;
	line-height: 1.4;
	color: #181628;
	text-transform: capitalize;
}
.pwd-rl__name a { color: inherit; text-decoration: none; }
.pwd-rl__name a:hover,
.pwd-rl__name a:focus-visible { color: var( --pw-primary, #7A44EC ); }

.pwd-rl__desc {                      /* 130:840 Text/16px Medium */
	font-size: 16px;
	font-weight: 500;
	line-height: 1.5;
	color: #595F6B;
}
.pwd-rl__more {                      /* I130:841;293:321 */
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: 8px 0;
	min-width: 120px;
	font-size: 16px;
	font-weight: 700;
	line-height: 1;
	text-transform: capitalize;
	text-decoration: none;
	color: var( --pw-primary, #7A44EC ) !important;
}
.pwd-rl__more svg { width: 16px !important; height: 16px !important; }

/* A row that is a link answers a pointer, and one that is not does not --
   there is nothing to click, so nothing should look clickable (check 29's
   other half). 161:3234's language again. */
.pwd-rl__item { transition: border-color 0.18s ease, box-shadow 0.18s ease; }
.pwd-rl__item:has( a ):hover,
.pwd-rl__item:has( a ):focus-within {
	border-color: var( --pw-lav-200, #E1D5FB );
	box-shadow:
		0 12px 24px rgba( 0, 0, 0, 0.08 ),
		0 4px 8px rgba( 0, 0, 0, 0.06 );
}

/* --------------------------------------------------------------------------
   The movement is only ever a colour or a shadow here, so there is nothing
   for reduced motion to take away -- but the transitions go, so a page that
   asked for stillness gets it. */
@media ( prefers-reduced-motion: reduce ) {
	.pwd-areas .pwd-area,
	.pwd-ch-grid .cms-card,
	.pwd-ch-grid .cms-card .pwd-cc-go {
		transition: none;
	}
}
/* pwd-cond-states -- END */










/* ==========================================================================
   pwd-sh-hero-wide -- 2026-09-09, asked for: on a wide screen the stories
   hero photograph stayed 778 and left a growing band of page beside it -- 123
   at 1680 and 283 at 2000 -- while the Conditions hero next to it reaches the
   edge at every width. 115:3143 is 778 at x=659 of a 1440 frame, which IS the
   right-hand edge (it ends at 1437), so "778" was the frame's way of saying
   "to the edge" and the build read it as a number.

   The column is absolutely positioned inside the row, so it tracks the row --
   and the row is capped at 1240 and centred, which is why the gap grows. Left
   where it is and right pinned to the viewport instead, it behaves like
   .pwd-ch-heropic on the Conditions hero: same left edge, always to the edge.

   1440 and below are untouched, deliberately: that is the width the frame
   draws and every suite opens.
   ========================================================================== */
@media (min-width: 1441px) {
	.pwd-sh-heropic.et_pb_column {
		/* the row is 1240 and centred, so this is the distance from its right
		   edge out to the viewport's -- negative, so the column passes it. */
		right: calc((1240px - 100vw) / 2) !important;
		width: auto !important;
	}
}

/* ==========================================================================
   pwd-sh-hero-wide-2 -- the column grew and the picture did not.

   `.et_pb_image_wrap` is inline-block, so it shrink-wraps to the file's own
   proportions at the pinned height and `width: 100%` on the img is 100% of
   THAT, not of the column. This is check 63 -- the crop has to reach the
   wrapper -- met on the width instead of the height.
   ========================================================================== */
@media (min-width: 1441px) {
	.pwd-sh-heropic .et_pb_module,
	.pwd-sh-heropic .et_pb_image,
	.pwd-sh-heropic .et_pb_image_wrap,
	.pwd-sh-heropic .et_pb_image_wrap > a {
		display: block !important;
		width: 100% !important;
		max-width: none !important;
	}
	.pwd-sh-heroimg img { width: 100% !important; max-width: none !important; }
}

/* ==========================================================================
   pwd-sh-hero-wide-3 -- the wave has to travel with the photograph.

   The people are cut out of the wave file for the frame's own 778-wide
   photograph at x=659. Above 1440 the photograph runs to the edge and is
   1061 wide at 2000, so a wave pinned to the SECTION leaves that hole behind
   and the ribbon lands across the women instead. Pinned to the photograph's
   own column it travels with it.
   ========================================================================== */
@media (min-width: 1441px) {
	.pwd-sh-hero::after { content: none; }
	.pwd-sh-heropic.et_pb_column::after {
		content: "";
		position: absolute;
		inset: 0;
		background-image: inherit;
		background-repeat: no-repeat;
		background-position: 100% 0%;
		background-size: 100% 100%;
		z-index: 3;
		pointer-events: none;
	}
}

/* ==========================================================================
   pwd-sh-hero-wide-4 -- supersedes wide-3, which put the overlay on the photo
   column: the column has no background image of its own, so `inherit` there
   resolved to none and above 1440 there was no wave at all.

   The overlay stays on the SECTION, where `inherit` reaches the Divi setting
   the client controls -- and above 1440 it is given the PHOTOGRAPH's box
   instead of the section's, so the hole cut for the two women travels with
   the picture rather than staying pinned to the page's right edge.

   The photograph starts at 559 into the 1240 row, and the row is centred:
   (100vw - 1240) / 2 + 559. It is 530 tall from y=11, which is 115:3143.
   ========================================================================== */
@media (min-width: 1441px) {
	.pwd-sh-heropic.et_pb_column::after { content: none !important; }
	.pwd-sh-hero::after {
		content: "" !important;
		top: 11px !important;
		bottom: auto !important;
		right: 0 !important;
		left: calc((100vw - 1240px) / 2 + 559px) !important;
		height: 530px !important;
		background-size: 100% 100% !important;
		background-position: 0 0 !important;
	}
}

/* ==========================================================================
   pwd-sh-card-hover -- 2026-09-09, the client's design-QA note on the stories
   hub: "adjust card hover states to reference image".

   116:6192 STATES OF ALL TAB CARDS draws both, and the difference between
   116:6180 DEFAULT and 116:6137 HOVER is exactly three things:

     border      1px #E4E7EC                     ->  1px #7A44EC
     shadow      0 8px 24px -4px rgba(107,51,235,.06)
                                                 ->  0 1px 13.6px -2px rgba(107,51,235,.24)
     card body   #FFFFFF                         ->  #FAF9FD

   The badge, the link and the 24px radius do not change, and the frame draws
   no lift -- the card reads as raised because the shadow tightens and darkens,
   not because it moves. The 2px it already had is kept: the client's own note
   on the blog cards asks for exactly that ("moving around a few pixels on the
   y-axis and updating shadow spread"), so it is wanted rather than left over.

   Only the stories hub. The Condition and Investigator screens carry the same
   request as points of their own and are not touched here.
   ========================================================================== */
.pwd-sh-grid .cms-card {
	transition: box-shadow 0.16s ease, transform 0.16s ease,
	            border-color 0.16s ease, background-color 0.16s ease;
}
.pwd-sh-grid .cms-card:hover,
.pwd-sh-grid .cms-card:focus-within {
	border-color: #7A44EC;
	/* 116:6137's "Drop Shadow/Purples/10". The second stop is at zero alpha in
	   the frame and is kept so the pair reads as the token it came from. */
	box-shadow: 0 2px 5.3px -4px rgba(107, 51, 235, 0),
	            0 1px 13.6px -2px rgba(107, 51, 235, 0.24);
	background-color: #FAF9FD;
	transform: translateY(-2px);
}
/* The photograph covers the top of the card, so the tint above only shows on
   the body -- which is where 116:6139 puts it. The wrappers Divi inserts
   between the card and its modules are opaque white, so they have to let it
   through or the tint stops at the photograph's bottom edge. */
.pwd-sh-grid .cms-card:hover > div,
.pwd-sh-grid .cms-card:focus-within > div,
.pwd-sh-grid .cms-card:hover .et-l,
.pwd-sh-grid .cms-card:focus-within .et-l,
.pwd-sh-grid .cms-card:hover .et_pb_section,
.pwd-sh-grid .cms-card:focus-within .et_pb_section,
.pwd-sh-grid .cms-card:hover .et_pb_row,
.pwd-sh-grid .cms-card:focus-within .et_pb_row,
.pwd-sh-grid .cms-card:hover .et_pb_column,
.pwd-sh-grid .cms-card:focus-within .et_pb_column {
	background-color: transparent !important;
}

/* ==========================================================================
   pwd-sh-side-fit -- 2026-09-09, two of the client's design-QA notes on the
   stories hub.

   1. "ensure condition filter section maintaining same height as the thumbnail
      section to avoid white space"

   `.pwd-side` was `height: 908px` -- the frame's number, which is the height of
   the TWO rows of cards beside it (115:3814 and 115:3875 are both 908). Filter
   the hub to a condition with two stories and the grid is 442 and the sidebar
   is still 908, so 466px of empty panel hangs below the cards. 908 was the
   frame's way of saying "as tall as the grid", and the build read it as a
   number -- the same mistake as the hero photograph's 778.

   It is absolutely positioned inside its column now, so it contributes no
   height of its own and takes the row's, which the grid drives. Capped at the
   frame's 908 so a grid grown by Load More does not stretch it past what
   115:3814 draws.

   2. "add subtle scroll in the 'browse by condition' section to display
      interactivity"

   The list has scrolled since it was built -- `overflow-y: auto`, 1541 of
   content in 807 -- and said so nowhere. A fade on the edge it continues past,
   which is what the overflowing pill row on the listings already does; not a
   scrollbar, because `scrollbar-width: thin` is a full grey trough on Windows
   and that was taken off this site once already.
   ========================================================================== */
.pwd-sh-side.et_pb_column {
	position: relative;
	align-self: stretch;
}
.pwd-side {
	position: absolute;
	inset: 0;
	height: auto !important;
	max-height: 908px;
}

/* The fade sits on the panel, not on the list, so it is not itself scrolled
   away. Only drawn when the list really continues -- the class is added by the
   script, the way the pill row's is. */
.pwd-side { --pwd-side-fade: 0; }
.pwd-side::after {
	content: "";
	position: absolute;
	left: 1px; right: 1px; bottom: 1px;
	height: 56px;
	border-radius: 0 0 var(--pw-radius, 16px) var(--pw-radius, 16px);
	background: linear-gradient(to bottom, rgba(255,255,255,0), rgba(255,255,255,0.96));
	opacity: var(--pwd-side-fade);
	transition: opacity 0.18s ease;
	pointer-events: none;
}
.pwd-side.is-more { --pwd-side-fade: 1; }
.pwd-side.is-end  { --pwd-side-fade: 0; }

/* ==========================================================================
   pwd-sh-card-photo-corners -- 2026-09-09: "images not to have bottom corner
   radii".

   The img was set to 0 and the CARD clips its own 16px, so the top corners
   were right -- but Divi's `.et_pb_image_wrap` carries its own 8px, and that
   rounds all FOUR. The card cannot clip the bottom two, because the photograph
   is at the top of the card and nowhere near them, so those 8px showed. This
   is check 63's family again: the radius has to reach the wrapper.
   ========================================================================== */
.pwd-sh-grid .cms-card .et_pb_image_wrap,
.pwd-sh-grid .cms-card .et_pb_image,
.pwd-fs-card .et_pb_image_wrap {
	border-radius: 0 !important;
}

/* ==========================================================================
   pwd-ss-hero-wave-shell -- 2026-09-09, the client's design-QA note on the
   single story page: "fix hero image with static wave". On a wide screen the
   photograph and the wave come apart -- at 2000 there is 380px of plain page
   between them, which is what their screenshot shows.

   115:1627 mbe-icon is a child of the HeroSection, and once the section clips
   it its ink is 525 x 539 at x=915 of the 1440. The photograph (115:1625
   HeroVisual) is 620 at x=720, so in the frame the wave BEGINS 195px inside
   the picture and bleeds off the section's right edge. Two relationships, not
   one: glued to the photograph on the left, off the page on the right.

   The photograph rides the 1240 content shell, which stays 1240 and centred
   however wide the page is -- so at 2000 it is at x=1000 while the wave, sized
   by its own height and pinned to the VIEWPORT's right edge, sits at 1475. At
   1440 those two happen to meet at 915 and it looked right.

   The position is deliberately untouched: `--tr` pins it to the right and
   drifts it inwards, and that drift is the animation. What changes is the
   WIDTH, so the wave reaches back to the picture at any width:

       shell_left = (100vw - 1240) / 2       wave_left = shell_left + 815
       width      = 100vw - wave_left        =  50vw - 195

   525 at 1440 -- what it already is -- and 805 at 2000. The height is the
   section's, so the artwork stretches rather than being cropped; it is an
   abstract ribbon and the alternative is a hard edge halfway across the band.

   Only at and above 1240: below that the shell is the responsive ladder's own
   gutter rather than (100vw - 1240) / 2, and the hero stacks anyway.
   ========================================================================== */
@media (min-width: 1240px) {
	.pwd-ss-hero {
		background-size: calc(50vw - 195px) 100% !important;
	}
}

/* ==========================================================================
   pwd-ss-hero-wave-shell-2 -- supersedes the block above, which was written
   `.pwd-ss-hero` and lost.

   `.pwd-wave.pwd-wave--tr` sets `background-size: auto calc(100% + var(--pwd-calm,
   0) * 1.3%) !important` -- two classes to this one's one, and later in the
   file besides -- so the width never reached the page. Read out of the CSSOM
   rather than the stylesheet, which is the only thing that says which rule the
   browser kept.

   So it is stated at three classes, and the calm animation's own height is
   carried through rather than overwritten: only the WIDTH changes, and it is
   the width that glues the wave back to the photograph (50vw - 195px is 525 at
   1440, which is what 115:1627's ink already measures, and 805 at 2000).
   ========================================================================== */
@media (min-width: 1240px) {
	.pwd-ss-hero.pwd-wave.pwd-wave--tr {
		background-size: calc(50vw - 195px)
		                 calc(100% + var(--pwd-calm, 0) * 1.3%) !important;
	}
}

/* ==== PWRESP:story-meta ==== */
/* -------------------------------- the story meta band  (115:1628 / 115:1629)
 *
 * Read off frame 115:1628 in the SECOND Figma file (14oEdpytJKMVIJv3CXSJcJ):
 *
 *   NavigationTabsSection  1440 x 61, white, border-b #E4E7EC,
 *                          drop-shadow 0 2px 5px rgba(107,51,235,.15)
 *     meta-row 115:1629    1240, flex, items-center, justify-between, py-16
 *       Frame 115:1630     the pill, y=16 h=29 -- bg #F7F4FE, px-8 py-4,
 *                          radius 100, one text run at 14/500/1.5 in #7A44EC
 *       meta-right 115:1636  x=1141.5 (flush right), hidden="true"
 *
 * That is the WHOLE band: one pill, and nothing else.  There is no read-time
 * node in this file at all -- 115:1634/1635, which the band was built against
 * in September, belong to the OLD key and are gone.  Check 109: the design was
 * revised without a single node id changing, and nothing here reads a frame
 * twice.
 */

/* The band draws ONE rule, on its own bottom edge.  .et_pb_text_inner has
 * carried a border-top AND a border-bottom of its own since the first build,
 * so THREE hairlines were painted across a 61-tall band and the content sat
 * boxed between two of them -- with the row's 16px of padding OUTSIDE the
 * pair, which is what made the spacing read as wrong.  That is the padding the
 * client circled.  Nothing measured it: qa-story.py's `band.rule` asserts the
 * SECTION's border-bottom, which was right the whole time, and no assertion
 * anywhere asked whether there were others. */
.pwd-ss-meta .et_pb_text_inner {
	border-top: 0 !important;
	border-bottom: 0 !important;
}

/* 115:1631 is ONE text run -- "Condition: IgA Nephropathy (IgAN)".
 * .pwd-ss-cond was display:inline-flex, so the text node "Condition: " and the
 * value's <span> became two FLEX ITEMS, and flex layout discards the
 * whitespace between items -- the page read "Condition:Myositis" with a
 * perfectly correct space sitting in the DOM the whole time.  Normal inline
 * flow paints it, and the pill is still 29 tall (4 + 21 + 4). */
.pwd-ss-meta .pwd-ss-cond { display: inline-block !important; }
.pwd-ss-meta .pwd-ss-cond .pwd-ss-condval,
.pwd-ss-meta .pwd-ss-cond a { display: inline !important; }

/* 115:1636 sits at x=1141.5 of the 1240 row -- flush right -- and 115:1629 is
 * justify-between.  Share was pinned beside the read time on 2026-09-02 from
 * the OLD file, where meta-right followed meta-left; with the read time gone
 * it would otherwise sit hard against the pill with no gap at all. */
.pwd-ss-meta .pwd-ss-share { margin-left: auto !important; }

/* .et_pb_text_inner carried min-height: 30px -- the read-time TILE's height
 * (115:1634, 31.5 x 30, in the old file).  With the tile gone the row's own
 * content is the pill, which 115:1630 draws 29 tall.
 *
 * It is 29 and not 0 because two of the seventy stories name no condition at
 * all, so they draw no pill: at 0 their band came out 53 against everybody
 * else's 62 and the chrome jumped between stories.  29 is 115:1630's own
 * height, so the band is the frame's whether the entry fills it or not. */
.pwd-ss-meta .et_pb_text_inner { min-height: 29px !important; }
/* ==== /PWRESP:story-meta ==== */

/* ==== PWRESP:explore-resp ==== */
/* The Patient Stories hub's "Explore by condition" band, below 1440.
 *
 * The client asked for it by name in the feedback document of 2026-09-08 --
 * Design QA -> Patient Stories, the last bullet: "ensure mobile
 * responsiveness". Their screenshot is the band at a phone width.
 *
 * Two faults, and neither is a box being the wrong size, which is why
 * qa-stories.py was 164/0 the whole time.
 */


/* 1. THE SIDEBAR WAS A 48px SLIVER AND THE CARDS WERE DRAWN OVER IT.
 *
 * The client's earlier point -- "ensure condition filter section maintaining
 * same height as the thumbnail section to avoid white space" -- was answered
 * by making the panel `position: absolute; inset: 0`, so it fills its column
 * and therefore matches the grid beside it. That is right at desktop and it
 * is what the frame draws (115:3814 and 115:3875 are both 908).
 *
 * Absolute takes it OUT OF THE FLOW, so the column has nothing to be as tall
 * as. Divi's own `#et-boc .et-l .et_pb_column { min-height: 1px }` is then the
 * only height there is (check 157) -- so below the width where this workspace
 * stacks, the column measured 1px, the panel collapsed to 48 (its title and
 * padding), `.pwd-side__list` computed 0 tall with 1,380px of conditions
 * inside it, and the story cards painted straight over the top of it.
 * Measured at 1100, 980, 768, 600 and 390: sidebar 48 tall, list 0, and the
 * grid starting 15px INSIDE it, on every one.
 *
 * 1279 is not a new breakpoint. It is the one this workspace already stacks
 * at -- `.pwd-sh-workspace { flex-wrap: wrap }` and both columns to 100% --
 * so the panel goes back into the flow at exactly the width it stops having
 * anything to sit beside. (SPEC.md's ladder governs new layout decisions; this
 * is the existing one being made to agree with itself.)
 *
 * The cap is a decision and is written down as one: stacked, the panel is the
 * first thing between the visitor and the stories, so it is bounded -- 60% of
 * the screen on a phone, and never more than 420px on a tablet -- and the list
 * keeps the internal scroll the client asked for on the same page.
 * `position: relative` rather than `static` because `.pwd-side::after` is the
 * fade at the bottom of the list and anchors to it.
 */
@media (max-width: 1279px) {
	.pwd-side {
		position: relative !important;
		inset: auto !important;
		height: auto !important;
		max-height: min(60vh, 420px) !important;
	}
}


/* 2. THE CROP REACHED THE <img> AND NOT ITS WRAPPER.
 *
 * `.pwd-st-photo img` is `height: var(--pwd-photo-h, 180px)`, and Divi gives
 * the module, its `.et_pb_image_wrap` and the `<a>` inside it a height taken
 * from the FILE's own proportions instead -- so the wrapper is the card's
 * width / 1.5 whatever the img does. Measured on the first card:
 *
 *     card width   280   278   314   334   342
 *     wrapper      185   184   208   221   227
 *     img          180   180   180   180   180
 *     card content 440   440   456   469   475      (the card is 442, hidden)
 *
 * So above ~270 of card width there is a grey strip under every photograph
 * and the card's own `overflow: hidden` cuts the read link in half -- which
 * is the "Read Megan's Story" sliced through the middle in the client's
 * screenshot. Below ~270 the wrapper is SHORTER than the img and the
 * photograph overflows it instead.
 *
 * Check 63, the fifth time on this site -- and the blog card already carries
 * this exact fix (`.pwd-blogcard .et_pb_image .et_pb_image_wrap` is pinned to
 * 180), so this is the one card that was left out rather than a new idea.
 *
 * It is NOT inside a media query, because 180 is what the frame says at 1440
 * too -- 115:3887 CardPhoto is 280 x 180 and 115:3888 CardDetails begins at
 * y=180. So this moves the desktop card TOWARDS the frame rather than away
 * from it, which is the one kind of change to 1440 that SPEC.md's "renders
 * identically" is not protecting against:
 *
 *                 frame   before   after
 *     photo        180      185     180
 *     tag          204      210     205
 *     title        241      247     242
 *     summary      303      309     304
 *
 * Everything else at 1440 is untouched -- the sidebar, the grid, the card's
 * own box, its content height (440), the read link (y=395), the newsletter
 * band and the document's height are byte-identical before and after. The
 * read row is held at the card's bottom by its own auto margin and the
 * summary absorbs the 5px, which is why nothing below it moves.
 *
 * `.pwd-st-photo` renders on this screen and no other -- 70 of them on the
 * hub, and zero on the story page, the conditions hub, a condition, the
 * investigator directory and the blog -- so the blast radius is one band.
 */
.pwd-st-photo.et_pb_image,
.pwd-st-photo .et_pb_image_wrap,
.pwd-st-photo > a {
	height: var( --pwd-photo-h, 180px ) !important;
}
/* ==== /PWRESP:explore-resp ==== */

/* ==== PWRESP:inv-bio ==== */
/* =========================================================================
   The About card's bio, once it is the client's own writing.
   211:1369 is a 320 card; 211:1376 sets the bio at 14 Regular / 1.6 grey.

   Until now {pw_bio} was esc_html'd tag-stripped text, so this band never met
   a <p>, a <strong> or a list. It does now -- Dr. Gubatan's bio is eight
   labelled paragraphs -- and the rule above it in this file says
   `p { margin: 0 !important }`, which would run all eight together into
   exactly the blob the change was made to end.

   Every selector below is scoped to .pwd-iv-about, the About COLUMN, so
   nothing here can reach the article beside it or any other screen.
   ========================================================================= */

/* Beats the (0,2,1) `margin: 0 !important` above at (0,3,1). A paragraph in a
   320px card wants less air than one in the 856 article column. */
.pwd-iv-about .pwd-iv-aboutbio .et_pb_text_inner p {
	margin: 0 0 10px !important;
	padding: 0 !important;
}
.pwd-iv-about .pwd-iv-aboutbio .et_pb_text_inner p:last-child {
	margin-bottom: 0 !important;
}

/* Gubatan writes "Position:", "Medical School:", "Residency:" in bold and the
   value under them. Those are labels, so they take the dark ink and the
   SemiBold the design system gives a label -- not the body grey they would
   otherwise inherit, which is what made the eight of them unreadable. */
.pwd-iv-about .pwd-iv-aboutbio strong,
.pwd-iv-about .pwd-iv-aboutbio b {
	font-weight: 600;
	color: var(--pw-dark);
}
.pwd-iv-about .pwd-iv-aboutbio em,
.pwd-iv-about .pwd-iv-aboutbio i { font-style: italic; }

/* A module's text colour does not reach its links, and Divi writes its own
   a{} after this file. The fifth time this project has met it. */
.pwd-iv-about .pwd-iv-aboutbio a {
	color: var(--pw-primary) !important;
	text-decoration: none;
}
.pwd-iv-about .pwd-iv-aboutbio a:hover { text-decoration: underline; }

/* Divi ships `ul { padding: 0 0 23px 1em }` from a selector carrying an id --
   the fourth time it has cost this project a measurement -- so a reset that
   does not out-rank it is not a reset. A bio may be written as a list. */
body #page-container .pwd-iv-about .pwd-iv-aboutbio ul,
body #page-container .pwd-iv-about .pwd-iv-aboutbio ol {
	margin: 0 0 10px !important;
	padding: 0 0 0 18px !important;
	list-style-position: outside;
}
body #page-container .pwd-iv-about .pwd-iv-aboutbio ul { list-style-type: disc; }
body #page-container .pwd-iv-about .pwd-iv-aboutbio ol { list-style-type: decimal; }
body #page-container .pwd-iv-about .pwd-iv-aboutbio li {
	font: 400 14px/1.6 'Plus Jakarta Sans', sans-serif;
	color: var(--pw-grey-1);
	padding: 0 !important;
	margin: 0 0 4px !important;
}
.pwd-iv-about .pwd-iv-aboutbio ul:last-child,
.pwd-iv-about .pwd-iv-aboutbio ol:last-child { margin-bottom: 0 !important; }
.pwd-iv-about .pwd-iv-aboutbio li:last-child { margin-bottom: 0 !important; }

/* The client can type a heading into a wysiwyg. Divi's own heading scale
   would blow a 320px card apart, and it gives every heading 10px of padding
   nobody asked for -- both are why this card states its own. */
.pwd-iv-about .pwd-iv-aboutbio h1,
.pwd-iv-about .pwd-iv-aboutbio h2,
.pwd-iv-about .pwd-iv-aboutbio h3,
.pwd-iv-about .pwd-iv-aboutbio h4,
.pwd-iv-about .pwd-iv-aboutbio h5,
.pwd-iv-about .pwd-iv-aboutbio h6 {
	font: 700 15px/1.4 'Plus Jakarta Sans', sans-serif;
	color: var(--pw-dark);
	margin: 0 0 6px !important;
	padding: 0 !important;
}

/* Long institution names and URLs must not push the 320 card sideways. */
.pwd-iv-about .pwd-iv-aboutbio .et_pb_text_inner { overflow-wrap: break-word; }
/* ==== /PWRESP:inv-bio ==== */

/* ==== PWRESP:featured-resp ==== */
/* 115:3940 FeaturedStory — the stacked card.
   The unscoped block later in this file re-states
   .pwd-fs-photo { grid-row: 1 / -1 } and
   .pwd-fs-card .et_pb_button_module_wrapper { grid-row: 4; align-self: end },
   which UNDOES the max-width:1240 stack block above it (source order, check 184).
   Two columns (>=1241) is the only arrangement in which "the button's bottom edge
   is the photograph's bottom edge" is true — 115:3945 is 222 tall and 115:3948 is
   justify-between INSIDE it, beside the photo, not over it.
   Stacked, the button stayed pinned to row 4 and was drawn ON the photograph:
   44px of overlap measured at 1100, 768 and 390. */
@media (max-width: 1240px) {
	.pwd-fs-card .pwd-fs-photo {
		grid-row: auto !important;
		align-self: auto !important;
	}
	.pwd-fs-card .et_pb_button_module_wrapper {
		grid-row: auto !important;
		align-self: auto !important;
		margin-top: 0 !important;
	}
}
/* ==== /PWRESP:featured-resp ==== */

/* ==== PWRESP:slug-hero-wave ==== */
/* ==========================================================================
   The single condition hero's wave, anchored to the CONTENT rather than to
   the viewport -- 2026-09-09, the client's own report: "slug pages mein hero
   ka static wave fix karo, screen bara karta hoon to sab bikhar jata hai."

   57:139 "mbe-icon" is a child of HeroSection 57:124, and once the section
   clips it its ink is 525 x 478 at x=915 of the 1440. The photograph
   (57:132) is 620 at x=720. So the frame states TWO relationships, not one:
   the wave BEGINS 195px inside the picture, and it bleeds off the section's
   right edge.

   It was built as background-position "top_right" + background-size
   "contain", which is right at 1440 and only at 1440. A background positioned
   from the right is measured from the VIEWPORT, and the photograph rides the
   1240 content row, which stays 1240 and CENTRES -- so above 1440 the two
   separate by half the extra screen. Measured on /conditions/lupus/:

       width   photograph        wave ink        the frame wants
       1440    720 .. 1340       915 .. 1440     915   -- they agree
       1920    960 .. 1580      1395 .. 1920    1155   -- 240 adrift
       2000   1000 .. 1620      1475 .. 2000    1195   -- 280 adrift
       2560   1280 .. 1900     2035 .. 2560    1475   -- 560 adrift

   That is the fault already fixed twice on this site -- the blog heroes
   (calc(50% + 353.5px)) and the story hero (50vw - 195px) -- and this is the
   same arithmetic as the story hero's, because the two frames place their
   wave identically against a 620 photograph.

       row_left  = (100vw - 1240) / 2
       pic_left  = row_left + 620   =  50vw          (the 620 text + 40 gap)
       wave_left = pic_left + 195   =  50vw + 195
       width     = 100vw - wave_left = 50vw - 195

   525 at 1440 -- exactly what it measures today, so 1440 is byte-identical --
   and 805 at 2000. The POSITION is untouched: it stays pinned to the right,
   as the frame draws it. Only the width changes, and the width is what glues
   the wave back to the photograph.

   The height stays the section's own, which is what "contain" already
   resolved to: the hero is 478 on all twenty-five conditions (160 of padding
   plus the photograph's fixed 318), and 478 is the tile's own natural height,
   so at 1440 nothing moves at all.

   Only at and above 1440. Below it the row is the responsive ladder's gutter
   rather than (100vw - 1240)/2 -- at 1366 the photograph is at 678 where 50vw
   is 683 -- and below 1280 the hero stacks. There the built-in "contain" is
   within a few pixels and is left alone.

   It has to name #et-boc. Divi writes this section's background from
   `.et-db #et-boc .et-l div.et_pb_section.et_pb_section_0_tb_body` -- one id
   and four classes -- so a plain class selector loses however plainly it is
   written (check 195). The bare form is stated beside it because #et-boc is
   added by Divi's own script AFTER load: before it runs neither rule matches
   and ours applies, which is symmetric.
   ========================================================================== */
@media ( min-width: 1440px ) {

	.pwd-sc-hero,
	.et-db #et-boc .et-l div.et_pb_section.pwd-sc-hero {
		background-size: calc( 50vw - 195px ) 100% !important;
	}
}
/* ==== /PWRESP:slug-hero-wave ==== */

/* ==== PWRESP:restabs-geometry ==== */
/* ==========================================================================
   pwd-restabs-geometry -- 2026-09-09. The Research & Resources tab bar was
   TWO different components depending on which of Divi's own stylesheets the
   page happened to load.

   Measured on the live pages, same layout (11420), same module
   (`et_pb_tabs_0_tb_body`), same five tabs, all on one line:

       condition          bar    tab <a>            panel padding
       epilepsy            82    0 16px / flex      32px          <- ours
       gout                82    0 16px / flex      32px          <- ours
       myositis            82    0 16px / flex      32px          <- ours
       iga-nephropathy     82    0 16px / flex      32px          <- ours
       anca-av             68    4px 30px / table-cell  24px 30px <- DIVI'S
       lupus               68    4px 30px / table-cell  24px 30px <- DIVI'S

   Those two pages load `style-static-cpt.min.css`, whose rule is
   `.et-db #et-boc .et-l .et_pb_tabs_controls li a { padding: 4px 30px }` --
   an ID, so it beats any class-only selector however many classes it has.
   The other twenty-three load `style-static.min.css`, whose rule for the same
   thing is `.et_pb_tabs_controls li a` at (0,1,1), which ours outranks. So one
   stylesheet variant gave Divi's default and the other gave the design, and
   which a condition got was not a decision anybody made.

   Check 195 already met this and restated the bar's fill, padding, gap,
   radius, the li's border and the anchor's COLOUR and WEIGHT at `#et-boc`
   level. It did not restate the anchor's GEOMETRY or the panel's padding, so
   those three declarations went on losing:

       display      flex        -> table-cell
       padding      0 16px      -> 4px 30px
       .et_pb_tab   32px        -> 24px 30px

   Everything here is the same value the block at `.pwd-sc-restabs` already
   states -- nothing is redesigned. It is said again where Divi cannot outrank
   it, so all twenty-five conditions draw one bar.

   `#et-boc` is added by Divi's own script after load, so before it runs
   neither selector matches and the plain block applies -- symmetric, and the
   only way past an id.
   ========================================================================== */

.pwd-sc-band .pwd-sc-restabs.et_pb_tabs ul.et_pb_tabs_controls li a,
.et-db #et-boc .et-l .pwd-sc-restabs .et_pb_tabs_controls li a {
	/* 130:828 -- a 48px pill, its label centred, 16 of side padding */
	display: flex !important;
	align-items: center;
	justify-content: center;
	min-height: 48px;
	padding: 0 16px !important;
	border: 1px solid transparent !important;
	border-radius: 100px !important;
	line-height: 1.5 !important;
}

.pwd-sc-band .pwd-sc-restabs.et_pb_tabs ul.et_pb_tabs_controls li.et_pb_tab_active a,
.et-db #et-boc .et-l .pwd-sc-restabs .et_pb_tabs_controls li.et_pb_tab_active a {
	/* 130:827 -- the lit tab keeps its #E1D5FB edge and Gradient/2 wash. The
	   idle rule above carries !important on the `border` shorthand, so this
	   one has to as well or the edge never draws. */
	border-color: #E1D5FB !important;
	background-image: linear-gradient( 90deg,
		rgba( 242, 237, 255, 0.7 ),
		rgba( 250, 247, 255, 0.4 ) 50%,
		rgba( 245, 240, 255, 0.65 ) ) !important;
}

.pwd-sc-band .pwd-sc-restabs.et_pb_tabs .et_pb_tab,
.et-db #et-boc .et-l .pwd-sc-restabs .et_pb_tab {
	/* 130:832 -- the panel is padded 32 */
	padding: 32px !important;
}

@media ( max-width: 900px ) {
	/* the narrow value the plain block already states, restated so the id
	   cannot take it back on the two pages that load the CPT stylesheet */
	.pwd-sc-band .pwd-sc-restabs.et_pb_tabs .et_pb_tab,
	.et-db #et-boc .et-l .pwd-sc-restabs .et_pb_tab {
		padding: 24px !important;
	}
}
/* ==== /PWRESP:restabs-geometry ==== */

/* ==== PWRESP:explore-controls ==== */
/* 115:3800 ControlsHeader — the search and the sort are ONE row beside the heading.
   115:3803 is 320 wide and 115:3809 is 124 beside its 45px label, inside a group of
   513 that is right-aligned on the 1240: those three numbers describe a ROW, not a
   control. Below 980 the group drops under the heading and front.css lets the two
   fields take the whole column — and the search INPUT kept its literal 320, so the
   pill stopped 371px short of the Sort field directly beneath it at 768 and 22px
   short at 390. That ragged pair is what the client photographed.
   The input fills its own field below 980 and nothing else moves: at 1440, 1280 and
   980 the field is 320 anyway, so those three are byte-identical (check 205 -- a
   number that is right at one width is not a measurement). */
@media (max-width: 979px) {
	.cms-filters--stories .cms-filters__search input[type="search"] {
		width: 100% !important;
	}
}
/* ==== /PWRESP:explore-controls ==== */

/* ==== PWRESP:res-band ==== */
/* The Research & Resources band, back on 130:798.

   The base rules for this band were written from the nodes and are mostly
   right. What is wrong is what happens to them afterwards: a later block
   overrules two of them, and Divi's own `ul` rule beats a third outright.
   Every value below was measured on /conditions/anca-av/ before it was
   written, and each carries the node it comes from.

     130:826  the bar is 68 tall -- its tabs sit at y=10 of 68, so the
              vertical padding is 10 and not 16. Ours measured 82.
     130:832  the panel is radius 24 over a 90% white, not radius 16 over a
              solid one. On a #FAF9FC band the difference is what makes the
              card edges read as inconsistent.
     130:833  the two cards are 24 apart. Ours measured 16.
     130:834  the card has a 1px #E4E7EC edge and NO shadow. Ours carried
              `0 4px 16px` as well, so every card drew two edges of its own --
              which is the "inconsistent borders" in the client's own words.
     ul       `#left-area ul, .entry-content ul, .et-l--body ul, ...` gives
              every list `padding: 0 0 23px 1em`. `.pwd-rl { padding: 0 }` is
              one class and loses to it, so the cards sat 14px right of the
              panel's own padding with 23px of dead space under them. This is
              the FIFTH time this one rule has cost this project a
              measurement (check 164) -- beaten here by naming the element,
              `ul.pwd-rl`, which is (0,2,1) against Divi's (0,1,1). */

/* -- 130:826 the tab bar ------------------------------------------------- */

/* Only the HEIGHT is set here, deliberately. An earlier block already owns
   this bar's padding, and owns it through a selector list carrying `#et-boc`
   -- an id, so no class-only rule reaches it however many classes it has
   (check 195). Adding a second padding declaration would be one more rule
   that loses, which is how this stylesheet accumulated four `!important`
   declarations for one property (check 184).
   130:826 is 68 tall with its tabs at y=10, and a fixed 68 with the tabs
   centred is that same picture whatever the padding says. */
.pwd-sc-band .pwd-sc-restabs.et_pb_tabs ul.et_pb_tabs_controls {
	height: 68px;
	align-items: center;
}

/* -- the grey rectangle around the whole thing --------------------------- */

/* Divi gives every Tabs module `border: 1px solid #d9d9d9`, and writes it from
   `.et-db #et-boc .et-l .et_pb_tabs` -- an id. `.pwd-sc-restabs.et_pb_tabs
   { border: 0 }` has been in this file since the band was built and has never
   once applied, so a square grey box was drawn around a round bar and a
   24-radius panel. That is the "inconsistent borders" in the client's own
   words, and it is check 195 for the third time on this screen. */
.et-db #et-boc .et-l .pwd-sc-restabs.et_pb_tabs {
	border: 0;
	background: none;
}

/* -- 130:832 the panel --------------------------------------------------- */

.pwd-sc-band .pwd-sc-restabs.et_pb_tabs .et_pb_all_tabs {
	border-radius: 24px;
}

/* Divi writes this one from `.et-db #et-boc .et-l .et_pb_all_tabs`, which
   carries an id -- so no number of classes reaches it and the panel stayed a
   solid white (check 195). The rule that wins has to name #et-boc itself. */
.et-db #et-boc .et-l .pwd-sc-band .pwd-sc-restabs.et_pb_tabs .et_pb_all_tabs {
	background-color: rgba( 255, 255, 255, 0.9 );
}

/* -- 130:833 the row, and Divi's list indent ----------------------------- */

.pwd-sc-restabs ul.pwd-rl,
.et-l--body ul.pwd-rl,
.entry-content ul.pwd-rl {
	gap: 24px;
	padding: 0;
}

/* -- 130:834 the card ---------------------------------------------------- */

.pwd-sc-band .pwd-rl__item {
	/* 130:834 draws one hairline and nothing else. The shadow underneath it
	   was ours; two edges on one card is what reads as untidy. */
	box-shadow: none;
}
/* ==== /PWRESP:res-band ==== */

/* ==== PWRESP:rel-band ==== */
/* The Related Stories & Profiles heading, back on 57:576.

   Everything else on this band already measures the frame -- both tabs are
   185.7 and 223.8 against 186 and 224, their padding, gap, icon, colours and
   the strip's own rule are 57:578 exactly, and the cards, the chevron, the
   dots and the pill are all right. The heading is the whole defect, and all
   four of its faults are something else winning rather than something
   missing:

     57:576   Plus Jakarta Sans Bold 40 / 1.2 (=48), #181628, capitalize
     measured Inter 40 / 700 / 52px / rgb(0,0,0)

   `.pwd-rel__h` says the family, the colour and the leading already and has
   never once applied. Divi writes both the family and the colour from
   `h1, .et-db #et-boc .et-l h1, h2, .et-db #et-boc .et-l h2, h3, ...` -- an
   id, so no class-only rule reaches it however many classes it has (check
   195), and this is the fifth time on this site. The leading is a different
   loser: `.pwd-sc-band h2, .pwd-sc-band h3 { line-height: 1.3 }` is (0,1,1)
   and `.pwd-rel__h` is (0,1,0), so 1.3 wins by one element.

   Check 206: the id-chained rules set colour, family AND weight on this
   element, so all three are restated here rather than only the two that
   were visibly wrong. */
.et-db #et-boc .et-l .pwd-sc-related .pwd-rel__h,
.et-db #et-boc .et-l .pwd-rel .pwd-rel__h {
	font-family: "Plus Jakarta Sans", sans-serif;
	font-weight: 700;
	line-height: 1.2;
	color: #181628;
	text-transform: capitalize;
}

/* 57:574 is 87 tall: the title's 48, 12, and the subtitle's 27. The head is
   already a flex column with `gap: 12px` -- what makes it 111 is a
   `margin-bottom: 20px !important` the heading takes from
   `.pwd-sc-band h2, .pwd-sc-band h3, ...`, which is (0,1,1) with !important,
   so `.pwd-rel__h { margin-bottom: 0 !important }` at (0,1,0) loses. Naming
   the band as well makes it (0,2,0). A gap and a margin are two ways of
   saying the same thing and only the gap is the frame's. */
.pwd-rel .pwd-rel__h,
.pwd-sc-related .pwd-rel__h {
	margin-bottom: 0 !important;
	padding-bottom: 0 !important;
}
/* ==== /PWRESP:rel-band ==== */

/* ==== PWRESP:side-grow ==== */
/* "Browse stories by condition" travels with the grid instead of leaving a hole.

   The client clicked Load More and found white space beside the cards. That is
   real and it is exactly this: the panel is `position: absolute; inset: 0` with
   `max-height: 908px`, so it fills its column and stops at the frame's own
   number -- and the column is a flex item that stretches to whatever the grid
   beside it becomes. Measured on /patient-stories/ at 1440:

     at rest          grid 908,  panel 908   -- 115:3814 / 115:3875 exactly
     3x Load More     grid 3704, panel 908   -- 2796px of empty panel column

   Both of the obvious repairs are worse than the fault:

     * scroll the GRID inside a fixed 908 box -- which is what was suggested,
       and it puts a second scrollbar inside a page that already scrolls, and
       makes Load More add cards a visitor then has to hunt for. It also throws
       away the reason a listing paginates at all.
     * let the panel GROW to the grid's height -- 3704 of panel holding a list
       that needs 1541, so the hole moves down rather than going away.

   It STICKS. The panel keeps the frame's own 908 and rides down with the
   reader, so there is never a moment where empty panel is on screen -- which
   is the client's own sentence, "sidebar apni jagah sahi", said in CSS. At
   rest nothing moves at all: 908 in a 908 column has nowhere to travel, so
   the first paint is byte-identical to 115:3814.

   Three things this needs and has:

     - nothing in the ancestor chain clips. `.pwd-side` -> column -> row ->
       section -> `.et_builder_inner_content` -> `#et-boc` all compute
       `overflow: visible`; one `hidden` anywhere would make sticky inert with
       no error at all.
     - the navbar is `position: relative` on this site, not fixed, so the only
       offset needed is a breathing gap rather than a bar's height.
     - `inset: 0` has to be undone explicitly. For a sticky box those four are
       thresholds, not a position -- `bottom: 0` alongside `top` is a second
       constraint and `left/right: 0` would pull it sideways.

   Desktop only. Below 1279 the workspace stacks and `explore-resp` deliberately
   puts this panel back INTO the flow, because absolute positioning there left
   its column on Divi's `min-height: 1px` and the cards painted over it
   (check 199). That block is a `max-width` query and this one is `min-width`,
   so the two can never both apply. */

@media ( min-width: 1280px ) {

	.pwd-sh-workspace .pwd-side,
	aside.pwd-side {
		position: sticky;
		inset: auto;
		top: 24px;

		/* 115:3814's own 908 at rest. The second half is for a laptop whose
		   viewport is shorter than the panel: 1440x900 leaves 852, and a
		   sticky box taller than the screen can never be read to its end --
		   the list inside already scrolls (`overflow-y: auto`), so it takes
		   the loss rather than the panel hanging off the bottom. */
		height: min( 908px, 100%, calc( 100vh - 48px ) );
		max-height: min( 908px, 100%, calc( 100vh - 48px ) );
	}

	/* ...and never TALLER than the cards beside it. Found 2026-09-10 on a
	   filtered listing at 1808 ("laptop pe sahi, 4K pe kharab"): Lupus has
	   three stories, the grid is 442, and the sticky panel above still took
	   its full 908 -- a 466px hole under the cards. It was at every width;
	   on a laptop the 100vh cap shrank the panel and so the hole (278 at
	   1366x768, 410 at 1440x900), which is why it read as a big-screen bug.

	   A sticky box is IN the flow, so its own 908 was setting the column's
	   height. `contain: size` takes the panel out of the column's size, the
	   row's flex stretch then gives the column the GRID's height, and the
	   `100%` in the min() above resolves against that -- so the panel is
	   min( 908, grid, screen ). The column's 320 is its own width, not its
	   content's, so containing it costs nothing sideways. At rest and after
	   Load More the grid is >= 908 and nothing moves; sticky still rides the
	   column (probe2.py: hole 0 on all four widths, sticky y 24). */
	.et_pb_column:has( .pwd-side ) {
		contain: size;
	}
}
/* ==== /PWRESP:side-grow ==== */

/* ==== PWRESP:rel-frame ==== */
/* The Related band's own geometry, off 57:573 and 115:1689 in the THIRD file
   key (tMv1IgKxL237B6t5GM0n9p). Both bands are drawn identically -- the
   condition page with two tabs and the story page with four -- so this is one
   block for both rather than two scoped ones.

   Three things, and the first is the one the client reported.

   1. THE LEFT CHEVRON IS THE SAME GLYPH, MIRRORED.
      The file draws two instances of one "Chevron Slider" component: 339:2769
      at x=50 rotated 180, and 117:7643 at x=1190. There is no chevron-left
      asset and there should not be one -- the design has one component.

   2. THE TAB STRIP IS 1092, CENTRED, AND ITS TABS ARE EQUAL.
      57:578 and 115:1695 are both 1092 wide at x=74 of the 1240 -- which is
      exactly the chevron column (50) plus the gap (24), so the tabs line up
      with the cards rather than with the container. Each tab is `flex-[1_0_0]`
      and `justify-center`, so two tabs are 546 each and four are 273 each:
      the number is never written down, it falls out of how many there are.
      Ours ran the full 1240 with each tab its own text width (185.7 + 223.8).

   3. THE HEADER IS CENTRED.
      57:575 is `text-center` and its title and subtitle are both `w-full` of
      the 1240. This reverses a block written earlier the same day from the
      SECOND file key, which draws this band left-aligned -- that block's own
      note said the two files disagreed and that it should be asked rather
      than guessed. The client's screenshot showed it centred and the file
      they sent draws it centred, so it is centred. Nothing else in `rel-band`
      is touched: its family, weight, colour, leading and the margin it takes
      off the heading are all still what applies.

   The CARD'S WIDTH IS NOT SET HERE and must not be. 117:7623 is 534 and ours
   was 571, and that is the same fault as the missing chevron read from the
   other end: the card is `flex: 0 0 calc((100% - gap) / 2)` of the VIEWPORT,
   and the viewport is what is left of the row. With one chevron reserved that
   is 1240 - 50 - 24 = 1166 and the card is 571; with two it is 1092 and the
   card is 534, which is the frame. Writing 534 anywhere would be writing down
   a number the layout already produces (check 205).
   ========================================================================= */

/* 1 -- the mirror. The button is the same 50x50 disc either side; only the
   glyph turns over, so the border, the fill and the hover are untouched. */
.pwd-rel__nav--prev svg {
	transform: scaleX(-1);
}

/* 2 -- the strip. Above 980 only: below it the existing block deliberately
   lets the tabs scroll in a row of their own, and equal-width tabs inside a
   scroller squash rather than scroll. The frame draws no tablet. */
@media ( min-width: 981px ) {
	.pwd-rel__tabs {
		width: min( 1092px, 100% );
		margin-left: auto;
		margin-right: auto;
		flex-wrap: nowrap;
		justify-content: center;
	}
	.pwd-rel__tab {
		flex: 1 0 0;
		min-width: 0;
		justify-content: center;
	}
}

/* 3 -- the header. 57:576 and 57:577 are both the full 1240 and centred, and
   `.pwd-rel__head` is a flex column, so the children need to fill it before
   text-align means anything. */
.pwd-rel__head {
	text-align: center;
}
.pwd-rel__head .pwd-rel__h,
.pwd-rel__head .pwd-rel__sub {
	width: 100%;
	text-align: center;
}

/* 57:610 and 115:5234 centre the dots and 115:4930 the pill; both already do,
   and both are restated here only because the panel is a flex COLUMN and a
   centred child of one is `align-items`, which nothing above states. */
.pwd-rel__panel {
	align-items: center;
}
.pwd-rel__row {
	width: 100%;
}
/* ==== /PWRESP:rel-frame ==== */

/* ==== PWRESP:sort-mobile ==== */
/* The Sort control on a phone, and the 18px band where it used to stack by accident.

   115:3807 draws it as a 45px label BESIDE a 124px field -- correct inside a 177px
   control on the heading's own row, and what it becomes below that row is what the
   client photographed: front.css wraps the two controls when they stop fitting, so
   the sort field takes the whole column and a 44px grey word floats to the left of a
   290-650px pill. A label beside a full-width field is not an arrangement anything
   draws.

   1:4327 is the design system's own labelled field, and 1:4329 is that label:
   Plus Jakarta Sans SemiBold 13 in Neutral/Dark #181628, 6 above a field that runs
   the full width. That is what the sort becomes on a phone -- one form, two controls
   filling the column, both on the heading's left edge.

   And the wrap itself was a coincidence rather than a decision. Measured on the live
   page, the pair sits side by side down to 790 and stacks at 785 -- a number that
   comes from how long "Featured order" happens to be, so a longer option would move
   it. Between 768 and 785 that left the old inline label beside a 690px pill. The
   arrangement is stated now: side by side to Divi's own 768, the phone's form below
   it (check 205, check 207 -- three states, and each one has to be chosen). */

@media ( min-width: 768px ) and ( max-width: 979px ) {
	.cms-filters--stories .cms-filters__controls {
		flex-wrap: nowrap !important;
	}

	.cms-filters--stories .cms-filters__field--sort {
		flex: 0 0 auto !important;
	}

	.cms-filters--stories .cms-filters__search {
		flex: 1 1 auto !important;
		max-width: none !important;
	}
}

@media ( max-width: 767px ) {
	.cms-filters--stories .cms-filters__field--sort {
		display: flex !important;
		flex-direction: column !important;
		align-items: stretch !important;
		gap: 6px !important;
	}

	.cms-filters--stories .cms-filters__field--sort > label {
		font-family: "Plus Jakarta Sans", sans-serif;
		font-size: 13px !important;
		font-weight: 600 !important;
		line-height: 1.2 !important;
		color: #181628 !important;
	}
}
/* ==== /PWRESP:sort-mobile ==== */

/* ==== PWRESP:card-states ==== */
/* The two story cards' resting and hover states, read off the UPDATED Figma
   file (tMv1IgKxL237B6t5GM0n9p) rather than the one every earlier pass read.

   Both boards sit beside their screens on the Patient Stories page, which is
   where this file keeps its states (check 78, check 195):

     418:2872  the HUB grid card, 280 x 442 -- DEFAULT 418:2860, HOVER 418:2848
     116:6192  the RELATED band card, 571 -- DEFAULT 116:6180, HOVER 116:6137

   Neither card lifts. The hub card's hover in the older file was a #7A44EC
   edge, a #FAF9FD body and a 2px rise; 418:2848 is none of those three -- it
   keeps the card white and still, takes a Lavender/100 edge and lights the
   read link. The Related card had no frame hover at all: it only rose 2px,
   from a rule citing no node.

   The blog card's 4px lift is NOT touched. That one is the client's own
   written request ("cards feeling lifted... on the y-axis"), a different
   component, and the frame draws no hover for it. */

/* ---------------------------------------------------------------- 418:2872
   THE HUB GRID CARD.  Rest is already the frame: white, 1px #E4E7EC, radius
   16, no shadow. Only the hover and the read link move. */

.pwd-sh-grid .cms-card:hover,
.pwd-sh-grid .cms-card:focus-within {
	/* 418:2848: Lavender/Secondary/100, not Primary/600. */
	border-color: #EFE8FD !important;
	/* the card stays white -- the older file's #FAF9FD body is not in this one */
	background-color: #FFFFFF !important;
	/* and it does not move */
	transform: none !important;
}

/* 418:2868 -> 418:2856. At rest the row HUGS its words in Neutral/Grey 1; on
   hover it becomes the width of the card with the arrow on the right edge, in
   Lavender/600. The arrow is an inline SVG on currentColor, so it follows. */
.pwd-sh-grid .pwd-st-read .et_pb_text_inner > a {
	display: inline-flex;
	width: auto;
	justify-content: flex-start;
	color: #595F6B;
	transition: color 0.16s ease;
}
.pwd-sh-grid .cms-card:hover .pwd-st-read .et_pb_text_inner > a,
.pwd-sh-grid .cms-card:focus-within .pwd-st-read .et_pb_text_inner > a {
	display: flex;
	width: 100%;
	justify-content: space-between;
	color: #7A44EC;
}

/* ---------------------------------------------------------------- 116:6192
   THE RELATED BAND CARD, on both the story page and the condition page.
   116:6180 rest is what is already there; 116:6137 is three things and a
   colour, and none of them was built. */

.pwd-rel__viewport .cms-card {
	transition: box-shadow 0.16s ease, border-color 0.16s ease,
	            background-color 0.16s ease;
}
.pwd-rel__viewport .cms-card:hover,
.pwd-rel__viewport .cms-card:focus-within {
	border-color: #7A44EC;
	/* Drop Shadow/Purples/10. The first stop is at zero alpha in the frame and
	   is kept so the pair reads as the token it came from. */
	box-shadow: 0 2px 5.3px -4px rgba(107, 51, 235, 0),
	            0 1px 13.6px -2px rgba(107, 51, 235, 0.24);
	/* 116:6139 tints the BODY. The photograph covers the top 320 of the card
	   and every wrapper Divi puts between the card and its modules is already
	   `background: none` further up this file, so tinting the card itself
	   shows exactly the body and nothing else. */
	background-color: #FAF9FD;
	/* 116:6137 does not move. */
	transform: none;
}

/* I117:7516 -> I419:2878: Neutral/Grey 1 at rest, Lavender/600 on hover, and
   the gap opens from 8 to 16.

   The GAP is ours at four classes. The COLOUR is not: Divi writes this
   button's own colour from the Theme Builder body's unified stylesheet as

       body.et-db #page-container #et-boc .et-l .et_pb_section
       .et_pb_button_0_tb_body            { color: #7A44EC !important }

   which is (0,2,4,1) with !important -- two ids, so no class-only rule of
   ours reaches it (check 195, check 206). Restated here at (0,2,6,1). It has
   to be CSS rather than the module's own setting, because the module can say
   one colour and the frame states two: grey at rest and purple on hover. */
.pwd-rel__viewport .cms-card .et_pb_button.pwd-rc-link {
	transition: color 0.16s ease, gap 0.16s ease;
}
body.et-db #page-container #et-boc .et-l .pwd-rel__viewport .cms-card
	.et_pb_button.pwd-rc-link {
	color: #595F6B !important;
}
body.et-db #page-container #et-boc .et-l .pwd-rel__viewport .cms-card:hover
	.et_pb_button.pwd-rc-link,
body.et-db #page-container #et-boc .et-l .pwd-rel__viewport .cms-card:focus-within
	.et_pb_button.pwd-rc-link {
	color: #7A44EC !important;
}
.pwd-rel__viewport .cms-card:hover .et_pb_button.pwd-rc-link,
.pwd-rel__viewport .cms-card:focus-within .et_pb_button.pwd-rc-link {
	gap: 16px;
}

/* ---------------------------------------------------------------- 1:4713
   THE CAROUSEL CHEVRON, which sits inside both of these bands.

   "Chevron Slider", Size=Medium -- the 50px disc 117:7643 and 115:5233 both
   instance. Four states, and three of ours were not any of them:

     Default   #EFE8FD on a 1px #E1D5FB edge, NO shadow
     Hover     the SAME fill -- what changes is a shadow, not the disc
     Pressed   the same again
     Disabled  the same at opacity 0.7

   Ours filled Secondary/50 at rest and Secondary/200 on hover, so the disc
   changed colour where the frame changes none, and its disabled state was
   0.4 where the component says 0.7. */
.pwd-rel__nav {
	background: #EFE8FD;
	border-color: #E1D5FB;
	transition: box-shadow 0.14s ease, opacity 0.14s ease;
}
.pwd-rel__nav:hover:not([disabled]) {
	background: #EFE8FD;
	box-shadow: 0 2px 8px -2px rgba(107, 51, 235, 0.11),
	            0 16px 10px -4px rgba(107, 51, 235, 0.01);
}
.pwd-rel__nav:active:not([disabled]) {
	box-shadow: none;
}
.pwd-rel__nav[disabled] {
	opacity: 0.7;
}
/* ==== /PWRESP:card-states ==== */

/* ==== PWRESP:inv-meta-multi ==== */
/* Condition Focus became reference_multi on 2026-09-09 (feedback point 20), so
   the meta bar's value is now the cms plugin's <ul class="cms-refs"> and two
   conditions ran together as "Eosinophilic Esophagitis (EoE)ANCA-Associated
   Vasculitis". 211:1334 draws one value; several are joined with the same
   " · " the specialty line (211:1321) uses. Divi's own ul/li rules carry an id,
   so the reset names the element and #page-container (check 164). */
body #page-container .pwd-iv-metaval ul.cms-refs {
	display: inline !important;
	margin: 0 !important;
	padding: 0 !important;
	list-style: none !important;
}
body #page-container .pwd-iv-metaval ul.cms-refs > li.cms-ref {
	display: inline !important;
	margin: 0 !important;
	padding: 0 !important;
	line-height: inherit !important;
	list-style: none !important;
}
body #page-container .pwd-iv-metaval ul.cms-refs > li.cms-ref::before { content: none !important; }
body #page-container .pwd-iv-metaval ul.cms-refs > li.cms-ref + li.cms-ref::before {
	content: " \00B7  " !important;
	color: var(--pw-grey-2);
	font-weight: 400;
}
/* ==== /PWRESP:inv-meta-multi ==== */

/* ==== PWRESP:story-aside ==== */
/* The story page's right-hand aside against 115:1666 of the THIRD Figma key
   (tMv1IgKxL237B6t5GM0n9p), 2026-09-10. Everything else on both cards already
   measured the frame; these are the five that did not. Each selector is one
   step heavier than the older rule it corrects, so nothing needs !important
   except where Divi's own reset is in play. */

/* 115:1669 -- the quote mark is Lavender/600 #7A44EC in the frame's own export.
   An older block drew it Lavender/200, so it read as a faint smudge. */
.pwd-ss-quote .pwd-ss-qmark svg.pwd-i { color: var(--pw-primary); }

/* 115:1671 -- Spectral SemiBold Italic 24 at 1.4 with NO tracking. */
.et_pb_text.pwd-ss-quote .pwd-ss-qtext { letter-spacing: normal; }

/* 115:1679 -- name and role are 2 apart (the column's own gap). The name
   carried 4 more of its own and the role 12 under it, so an entry with no
   role still pushed its bio down by 16 of nothing. */
.pwd-ss-aboutwho .pwd-ss-aboutname,
.pwd-ss-aboutwho .pwd-ss-aboutrole { margin: 0 !important; }

/* 115:1681 is drawn only when there is a short role to put in it. */
.pwd-ss-aboutwho .pwd-ss-aboutrole:empty { display: none; }

/* 115:1683 -- the footer is a hairline over the patient's own profile link.
   33 of the 70 stories name no profile, and on those the hairline was drawn
   over nothing at the bottom of the card. */
.pwd-ss-about .pwd-ss-aboutlink:empty { display: none !important; }
/* ==== /PWRESP:story-aside ==== */

/* ==== PWRESP:iv-cards ==== */
/* Single investigator profile: the Related Conditions card (211:1378) and the
   Stories card (211:1403), against the THIRD Figma key.

   1. The 24 / 12 / 24 gaps were stated at two classes and computed 0: Divi
      writes `.et-db #et-boc .et-l .et_pb_text_N_tb_body { margin: 0 !important }`
      -- an id -- so the rule has to carry #et-boc too (check 195).
   2. The condition's name drew in the client's own Divi accent #6a2b7f from
      `a, .et-db #et-boc .et-l a`; 211:1386 is Neutral/Dark #181628 (check 198).
   3. A story card was a FIXED 116 with overflow hidden, so a two-line title
      pushed "Read ...'s Story" out of the card. 211:1414 is one line
      (whitespace-nowrap), so the title is one line and the card may grow.
   4. The frame draws no hover for either row, so both take the design system's
      card hover, 161:3234: a Lavender/200 edge, its 12/24 + 4/8 shadow, the
      title in Lavender/600 -- the same one the directory's cards use. */

.et-db #et-boc .et-l .pwd-iv-condcard .pwd-iv-eyebrow { margin: 0 0 24px !important; }
.et-db #et-boc .et-l .pwd-iv-condcard .pwd-iv-condname { margin: 0 0 12px !important; }
.et-db #et-boc .et-l .pwd-iv-condcard .pwd-iv-condsum { margin: 0 0 24px !important; }
.et-db #et-boc .et-l .pwd-iv-condcard:not(:has(.cms-card)) .pwd-iv-condsum { margin: 0 !important; }
.et-db #et-boc .et-l .pwd-iv-storiescard .pwd-iv-eyebrow { margin: 0 0 24px !important; }
.et-db #et-boc .et-l .pwd-iv-storiescard .pwd-iv-storygrid { margin: 0 0 24px !important; }

.et-db #et-boc .et-l .pwd-iv-condname a.pwd-iv-condlink { color: #181628 !important; }
.et-db #et-boc .et-l .pwd-iv-condname a.pwd-iv-condlink:hover,
.et-db #et-boc .et-l .pwd-iv-condname a.pwd-iv-condlink:focus-visible { color: #7A44EC !important; }

.pwd-gridwrap.pwd-iv-storygrid .cms-card,
.pwd-iv-storygrid .cms-card { height: auto !important; min-height: 116px; }
.pwd-iv-storygrid .pwd-ivsr-title .et_pb_text_inner,
.pwd-iv-storygrid .pwd-ivsr-title a {
	display: block;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

.pwd-iv-condgrid .cms-card,
.pwd-iv-storygrid .cms-card {
	transition: border-color .18s ease, box-shadow .18s ease, transform .18s ease;
}
.pwd-iv-condgrid .cms-card:hover,
.pwd-iv-condgrid .cms-card:focus-within,
.pwd-iv-storygrid .cms-card:hover,
.pwd-iv-storygrid .cms-card:focus-within {
	border-color: #E1D5FB !important;
	box-shadow: 0 12px 24px rgba(0, 0, 0, .08), 0 4px 8px rgba(0, 0, 0, .06) !important;
	transform: translateY(-1px);
}
.et-db #et-boc .et-l .pwd-iv-condgrid .cms-card:hover .pwd-ivcr-title a,
.et-db #et-boc .et-l .pwd-iv-condgrid .cms-card:hover .pwd-ivcr-title .et_pb_text_inner,
.et-db #et-boc .et-l .pwd-iv-storygrid .cms-card:hover .pwd-ivsr-title a,
.et-db #et-boc .et-l .pwd-iv-storygrid .cms-card:hover .pwd-ivsr-title .et_pb_text_inner {
	color: #7A44EC !important;
}
@media (prefers-reduced-motion: reduce) {
	.pwd-iv-condgrid .cms-card:hover, .pwd-iv-storygrid .cms-card:hover { transform: none; }
}
/* ==== /PWRESP:iv-cards ==== */

/* ==== PWRESP:rel-slots ==== */
/* A Related tab keeps the width its FRAME gives it, however many tabs the
   entry draws (client, 2026-09-10). 57:578 draws two (546 each of 1092) and
   115:1695 four (273 each). A tab with nothing behind it is not drawn -- check
   128 -- and `flex: 1 0 0` then handed its share to the tabs that were left,
   so a condition with only Patient Stories drew ONE tab across the whole
   strip, underline and all. The slots are the frame's; an empty one stays
   empty, left to right in the frame's own order.

   Only above 980, the same scope as rel-frame's equal tabs: below it the tabs
   scroll in a row of their own and a fixed share would squash them. */
@media ( min-width: 981px ) {
	.pwd-rel { --pwd-rel-slots: 4; }            /* 115:1695 -- the story band */
	.pwd-sc-related .pwd-rel { --pwd-rel-slots: 2; } /* 57:578 -- the condition band */
	.pwd-rel .pwd-rel__tabs { justify-content: flex-start; }
	.pwd-rel .pwd-rel__tabs .pwd-rel__tab {
		flex: 0 0 calc( 100% / var( --pwd-rel-slots ) );
		max-width: calc( 100% / var( --pwd-rel-slots ) );
	}
}
/* ==== /PWRESP:rel-slots ==== */

/* ==== PWRESP:values-wave ==== */
/* Who We Are -- the Our Values wave, made visibly alive (client, 2026-09-10:
   "movement kar do, jo speed actual sites par hoti hai").
   It was running pwd-wave-calm at +1.1% over 7s: 0.14 of 255 a second, which
   nobody can see. It stays IN PLACE -- centred, no sideways slide, which is
   what was rejected on 2026-09-08 -- and breathes: 4% larger and 10px higher
   at the top of a 6s loop. Same selector as the rules it follows and later in
   the file, so it wins the tie; reduced motion keeps the still picture. */
@media ( prefers-reduced-motion: no-preference ) {
	.pwd-wave.pwd-wave--c {
		background-size: calc( 100% + var( --pwd-calm, 0 ) * 4% ) auto !important;
		background-position: 50% calc( 50% - var( --pwd-calm, 0 ) * 10px ) !important;
		animation: pwd-wave-calm 6s ease-in-out infinite;
	}
}
/* ==== /PWRESP:values-wave ==== */

/* ==== PWRESP:blog-wave ==== */
/* Blog listing hero -- the wave made visibly move (client, 2026-09-10, after
   the Our Values band). It ran +1% over 7.5s, which nobody could see. Now +4%
   over 6s, still in place: hero-anchor's calc(50% + Z) position is untouched,
   so the ribbon grows about its own centre and never slides. Same selector,
   later in the file, so it wins the tie; reduced motion keeps it still. */
@media ( prefers-reduced-motion: no-preference ) {
	.pwd-wave.pwd-wave--tr85 {
		background-size: calc( 714px + var( --pwd-calm, 0 ) * 28.56px )
		                 calc( 395px + var( --pwd-calm, 0 ) * 15.8px ) !important;
		animation: pwd-wave-calm 6s ease-in-out infinite;
	}
}
/* ==== /PWRESP:blog-wave ==== */

/* ==== PWRESP:cond-wave ==== */
/* Condition heroes -- both waves made visibly move (client, 2026-09-10,
   after Our Values and the blog hero). Neither had any animation at all.
   Each breathes +4% over 6s on pwd-wave-calm, anchored top-right as the
   frame places it, so nothing slides. The hub's ::after overlay repeats the
   same image over the photograph, so it runs the SAME keyframes at the same
   duration and the two copies stay aligned. The slug width keeps its
   50vw - 195px relationship (check 205), only multiplied. Named at #et-boc
   level because Divi writes these backgrounds from an id-chained rule.
   Reduced motion keeps both still. */
@media ( prefers-reduced-motion: no-preference ) {
	.et-db #et-boc .et-l div.et_pb_section.pwd-ch-hero,
	.et-db #et-boc .et-l div.et_pb_section.pwd-ch-hero::after {
		background-size: auto calc( 100% * ( 1 + var( --pwd-calm, 0 ) * 0.04 ) ) !important;
		animation: pwd-wave-calm 6s ease-in-out infinite;
	}
	.et-db #et-boc .et-l div.et_pb_section.pwd-sc-hero.pwd-sc-band {
		background-size: calc( ( 50vw - 195px ) * ( 1 + var( --pwd-calm, 0 ) * 0.08 ) )
		                 calc( 100% * ( 1 + var( --pwd-calm, 0 ) * 0.08 ) ) !important;
		animation: pwd-wave-calm 6s ease-in-out infinite;
	}
}
/* ==== /PWRESP:cond-wave ==== */

/* ==== PWRESP:story-wave ==== */
/* Patient Stories heroes -- both waves made visibly move (client, 2026-09-10,
   after Our Values, the blog hero and the condition heroes).
   Hub (115:2495): had no animation at all. Its ::after overlay carries the
   wave with the two people CUT OUT of it (check 196), so any swell moves the
   hole against the photograph -- kept to +2.5% over 6s so the ribbon never
   reaches the people. At 1440 and below the overlay inherits the section's
   size, so animating the section moves both copies; above 1440 the overlay
   has its own sized box and runs the same keyframes itself.
   Single story (115:1627): was +1.3% of height only; now +8% on both axes
   over 6s, like the condition slug hero (same artwork, same layout), keeping
   the 50vw - 195px relationship (check 205). Anchored top-right: no slide.
   Reduced motion keeps both still. */
@media ( prefers-reduced-motion: no-preference ) {
	.et-db #et-boc .et-l div.et_pb_section.pwd-sh-hero {
		background-size: auto calc( 100% * ( 1 + var( --pwd-calm, 0 ) * 0.025 ) ) !important;
		animation: pwd-wave-calm 6s ease-in-out infinite;
	}
	.et_pb_section.pwd-ss-hero.pwd-wave.pwd-wave--tr {
		background-size: calc( ( 50vw - 195px ) * ( 1 + var( --pwd-calm, 0 ) * 0.08 ) )
		                 calc( 100% * ( 1 + var( --pwd-calm, 0 ) * 0.08 ) ) !important;
		animation: pwd-wave-calm 6s ease-in-out infinite;
	}
}
@media ( prefers-reduced-motion: no-preference ) and ( min-width: 1441px ) {
	.et-db #et-boc .et-l div.et_pb_section.pwd-sh-hero::after {
		background-size: calc( 100% * ( 1 + var( --pwd-calm, 0 ) * 0.025 ) )
		                 calc( 100% * ( 1 + var( --pwd-calm, 0 ) * 0.025 ) ) !important;
		animation: pwd-wave-calm 6s ease-in-out infinite;
	}
}
/* ==== /PWRESP:story-wave ==== */

/* ==== PWRESP:treatment-aside-head ==== */
/* 57:505 -- the Treatment side column's heading is Neutral/Dark #181628.
   Divi's unified sheet writes `h3, .et-db #et-boc .et-l h3 { color:#000 }`,
   which carries an id, so the class rule never won. Named with the same id. */
.et-db #et-boc .et-l .pwd-cc__aside .pwd-cc__sub { color: #181628; }
/* ==== /PWRESP:treatment-aside-head ==== */
