/* Partnerships page (post 9). Generated layout lives in build/partnerships.py;
   this file holds only what Elementor cannot express. Prefix: bw-part-.
   Tone colours mirror build/brand.json custom_colors (teal / blue / purple). */

.bw-part-approach, .bw-part-who, .bw-part-model-band, .bw-part-values-band, .bw-part-ctaband {
	--bw-part-teal: #2A8A8C;
	--bw-part-blue: #3F6FB8;
	--bw-part-purple: #7A5CB2;
	--bw-part-dash: #9DB0CC;
}

/* Text widgets: no trailing paragraph margin inside cards. */
.bw-part-step__body p, .bw-part-card__body p, .bw-part-value__body p,
.bw-part-node__body p { margin: 0; }
.bw-part-model__copy p { margin: 0 0 .55em; }
.bw-part-model__copy p:first-child { margin-bottom: 1.5em; }

/* --- Our Partnership Approach: dashed connector between the circles -------- */
.bw-part-step { position: relative; }
.bw-part-step .e-con.bw-part-step__circle { flex: 0 0 91px; height: 91px; }
.bw-part-step__body { max-width: 210px; }
/* Elementor's .e-con::before/::after are its background-overlay layers
   (inset 0, 100% high) -- reset the box or they stretch the scroll height. */
.bw-part-step:not(:last-child)::before,
.bw-part-step:not(:last-child)::after {
	content: ""; position: absolute; pointer-events: none;
	right: auto; bottom: auto; height: 0; background: none; opacity: 1; border-radius: 0;
}
.bw-part-step:not(:last-child)::before {   /* the dashed run */
	top: 45px; left: calc(50% + 62px); width: calc(100% - 128px);
	border-top: 2px dashed var(--bw-part-dash);
}
.bw-part-step:not(:last-child)::after {    /* arrow tip */
	top: 41px; left: calc(150% - 66px); width: 0;
	border-left: 7px solid var(--bw-part-dash);
	border-top: 5px solid transparent; border-bottom: 5px solid transparent;
}

/* --- Who We Work With cards ---------------------------------------------- */
.bw-part-card { box-shadow: 0 4px 16px rgba(11, 31, 79, .05); transition: box-shadow .2s, transform .2s; }
.bw-part-card:hover { box-shadow: 0 10px 26px rgba(11, 31, 79, .10); transform: translateY(-2px); }
.bw-part-cards > .e-con.bw-part-card { flex: 1 1 0; min-width: 0; }

/* --- A Partnership Model That Works: arrows between the nodes ------------- */
.bw-part-node { position: relative; }
.bw-part-node .e-con.bw-part-node__circle { flex: 0 0 78px; height: 78px; }
.bw-part-node__circle { box-shadow: 0 0 0 5px rgba(242, 246, 252, .9); }
.bw-part-node:not(:last-child)::before,
.bw-part-node:not(:last-child)::after {
	content: ""; position: absolute; pointer-events: none; color: var(--bw-part-teal);
	right: auto; bottom: auto; height: 0; background: none; opacity: 1; border-radius: 0;
}
.bw-part-node--blue::before, .bw-part-node--blue::after { color: var(--bw-part-purple) !important; }
.bw-part-node--purple::before, .bw-part-node--purple::after { color: var(--bw-gold) !important; }
.bw-part-node:not(:last-child)::before {
	top: 38px; left: calc(100% - 18px); width: 30px;
	border-top: 2px dashed currentColor;
}
.bw-part-node:not(:last-child)::after {
	top: 34px; left: calc(100% + 11px); width: 0;
	border-left: 7px solid currentColor;
	border-top: 5px solid transparent; border-bottom: 5px solid transparent;
}

/* --- What Our Partners Value: hairline dividers between columns ----------- */
.bw-part-values > .e-con.bw-part-value { flex: 1 1 0; min-width: 0; }
.bw-part-value + .bw-part-value { border-left: 1px solid var(--bw-hairline); }

/* --- CTA: the design's box is shallower than the shared banner ------------ */
body .bw-part-ctaband .e-con.bw-cta { --padding-top: 22px; --padding-bottom: 22px; }
body .bw-part-ctaband .bw-cta .e-con.bw-cta__icon { flex-basis: 94px !important; width: 94px; height: 94px; }
body .bw-part-ctaband .bw-cta .bw-cta__icon img { width: 50px !important; }
.bw-part-ctaband .bw-cta > .e-con:first-child { --gap: 40px; }

/* --- Tablet and below: rows wrap, so the connectors mean nothing ---------- */
@media (max-width: 1024px) {
	.bw-part-step::before, .bw-part-step::after { display: none; }
	.bw-part-steps > .e-con.bw-part-step { flex: 0 0 33.333%; }
	.bw-part-steps { justify-content: center !important; }
	.bw-part-cards > .e-con.bw-part-card { flex: 0 0 calc((100% - 30px) / 3); }
	.bw-part-values > .e-con.bw-part-value { flex: 0 0 33.333%; }
	.bw-part-value + .bw-part-value { border-left: 0; }
	.bw-part-model__flow { flex: 1 1 100% !important; }
	body .bw-part-ctaband .e-con.bw-cta { --padding-top: 32px; --padding-bottom: 32px; }
}
@media (max-width: 767px) {
	.bw-part-node::before, .bw-part-node::after { display: none; }
	.bw-part-steps > .e-con.bw-part-step { flex: 0 0 100%; }
	.bw-part-cards > .e-con.bw-part-card { flex: 0 0 100%; }
	.bw-part-values > .e-con.bw-part-value { flex: 0 0 50%; }
	.bw-part-step__body { max-width: 300px; }
	body .bw-part-ctaband .bw-cta .e-con.bw-cta__icon { flex-basis: 80px !important; width: 80px; height: 80px; }
}

/* The shared banner sets its heading at 30px; this design's runs at ~25px
   (sized by ink width against the mockup). */
.bw-part-ctaband .bw-cta__words .elementor-heading-title { font-size: 25px; }
@media (max-width: 767px) {
	.bw-part-ctaband .bw-cta__words .elementor-heading-title { font-size: 23px; }
}

/* Phones: the forced design line breaks in short copy fight the narrower
   columns and the 15px mobile body size -- let the text flow instead. */
@media (max-width: 1279px) {
	.bw-part-step__body br, .bw-part-card__body br,
	.bw-part-value__body br, .bw-part-node__body br { display: none; }
}

/* Elementor forces child containers to 100% wide on phones; the circles
   must stay circles. */
.bw-part-step .e-con.bw-part-step__circle { --width: 91px; width: 91px; }
.bw-part-node .e-con.bw-part-node__circle { --width: 78px; width: 78px; }

@media (max-width: 767px) {
	/* Hero subtitle / CTA copy: drop the desktop line breaks. */
	.bw-hero__sub br, .bw-part-ctaband .bw-cta__words br { display: none; }
	/* CTA: icon above the words rather than squeezing the heading beside it. */
	.bw-part-ctaband .bw-cta > .e-con:first-child { flex-direction: column; align-items: flex-start; --gap: 18px; }
	.bw-part-ctaband .bw-cta .e-con.bw-cta__words { flex: 1 1 auto !important; width: 100%; }
}
