/*
 * Music Art Project — styles that theme.json cannot express.
 * Loaded on the front end and in the editor (add_editor_style).
 *
 *  1. Base
 *  2. Header + navigation
 *  3. Page hero + entry
 *  4. Cards
 *  5. Block style variations
 *  6. Home sections
 *  7. Footer + newsletter + payment logos
 *  8. WooCommerce (classic checkout) + donation form
 *  9. Motion
 */

/* 1. Base ---------------------------------------------------------------- */

:root {
	--musicart-radius: 18px;
	--musicart-radius-lg: 28px;
	--musicart-ease: cubic-bezier(.2, .7, .2, 1);
	--musicart-header-offset: var(--wp-admin--admin-bar--height, 0px);
}

body {
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	text-rendering: optimizeLegibility;
}

::selection {
	background: var(--wp--preset--color--accent);
	color: var(--wp--preset--color--contrast);
}

:where(h1, h2, h3, h4) {
	text-wrap: balance;
}

:where(p, li) {
	text-wrap: pretty;
}

/* Focus ring only for keyboard navigation (Tab), never after a click or tap.
   Core blocks and plugins style plain :focus, so that is switched off here. */
:where(a, button, input, select, textarea, summary):focus-visible {
	outline: 2px solid var(--wp--preset--color--primary);
	outline-offset: 3px;
}

*:focus:not(:focus-visible) {
	outline: none !important;
}

html {
	-webkit-tap-highlight-color: transparent;
}

.screen-reader-text:focus {
	clip-path: none;
}

/* Images inside text content keep a soft radius; logos/payments opt out. */
.wp-block-post-content :where(.wp-block-image img, .wp-block-gallery img) {
	border-radius: var(--musicart-radius);
}

.wp-block-embed iframe {
	border-radius: var(--musicart-radius);
}

/* 2. Header + navigation -------------------------------------------------- */

.site-header {
	position: sticky;
	top: var(--musicart-header-offset);
	z-index: 100;
	transition: box-shadow .25s var(--musicart-ease);
}

.site-header.is-scrolled {
	box-shadow: 0 12px 30px -24px rgba(43, 23, 64, .55);
}

.musicart-header .musicart-logo {
	flex-shrink: 0;
	margin: 0;
}

.musicart-header .musicart-logo img {
	display: block;
	height: auto;
}

.musicart-header__actions {
	min-width: 0;
}

.musicart-primary-nav .wp-block-navigation-item__content {
	padding-block: .45rem;
	color: var(--wp--preset--color--contrast);
	transition: color .15s ease;
}

.musicart-primary-nav .wp-block-navigation-item__content:hover,
.musicart-primary-nav .current-menu-item > .wp-block-navigation-item__content,
.musicart-primary-nav .current-menu-ancestor > .wp-block-navigation-item__content {
	color: var(--wp--preset--color--primary);
}

/* Dropdowns: floating card instead of a flat list. */
@media (min-width: 600px) {
	.musicart-primary-nav .wp-block-navigation__submenu-container {
		min-width: 15rem !important;
		padding: .5rem !important;
		border: 1px solid var(--wp--preset--color--border) !important;
		border-radius: 14px;
		background: var(--wp--preset--color--base) !important;
		box-shadow: var(--wp--preset--shadow--soft);
		top: calc(100% + .35rem) !important;
	}

	.musicart-primary-nav .wp-block-navigation__submenu-container::before {
		/* Hover bridge over the gap above the card. */
		content: "";
		position: absolute;
		inset: -.6rem 0 auto;
		height: .6rem;
	}

	.musicart-primary-nav .wp-block-navigation__submenu-container {
		color: var(--wp--preset--color--contrast) !important;
	}

	.musicart-primary-nav .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
		color: var(--wp--preset--color--contrast);
		width: 100%;
		padding: .55rem .8rem !important;
		border-radius: 9px;
		font-weight: 500;
	}

	.musicart-primary-nav .wp-block-navigation__submenu-container .wp-block-navigation-item__content:hover {
		background: var(--wp--preset--color--soft);
	}
}

/* Mobile overlay */
.musicart-primary-nav .wp-block-navigation__responsive-container-open {
	width: 44px;
	height: 44px;
	align-items: center;
	justify-content: center;
	border-radius: 999px;
	background: var(--wp--preset--color--soft);
	color: var(--wp--preset--color--secondary);
}

.musicart-primary-nav .wp-block-navigation__responsive-container.is-menu-open {
	padding: var(--wp--preset--spacing--50);
}

.musicart-primary-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content {
	padding-top: var(--wp--preset--spacing--60);
	gap: var(--wp--preset--spacing--40);
}

.musicart-primary-nav .is-menu-open .wp-block-navigation__responsive-container-content,
.musicart-primary-nav .is-menu-open .wp-block-navigation__container,
.musicart-primary-nav .is-menu-open .wp-block-navigation-item,
.musicart-primary-nav .is-menu-open .wp-block-navigation__submenu-container {
	align-items: flex-start !important;
	text-align: left;
}

.musicart-primary-nav .is-menu-open .wp-block-navigation__container > .wp-block-navigation-item > .wp-block-navigation-item__content {
	font-size: var(--wp--preset--font-size--large);
	font-weight: 700;
}

.musicart-primary-nav .is-menu-open .wp-block-navigation__submenu-container {
	padding-top: .4rem !important;
	gap: .35rem;
}

.musicart-primary-nav .is-menu-open .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
	color: var(--wp--preset--color--muted);
}

/* Donate button + language switcher */
.musicart-header__donate,
.musicart-lang {
	flex-shrink: 0;
}

.musicart-header__donate .wp-block-button__link {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	box-sizing: border-box;
	height: 2.75rem;
	padding: 0 1.6rem;
	white-space: nowrap;
	box-shadow: 0 10px 20px -12px rgba(185, 53, 146, .8);
	text-transform: uppercase;
	letter-spacing: .06em;
	font-weight: 700;
	line-height: 1;
}

.musicart-lang,
.musicart-lang ul {
	margin: 0;
	padding: 0;
	list-style: none;
}

.musicart-lang a {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	box-sizing: border-box;
	min-width: 2.75rem;
	height: 2.75rem;
	padding: 0 .4rem;
	border: 1.5px solid var(--wp--preset--color--border);
	border-radius: 999px;
	color: var(--wp--preset--color--secondary);
	font-size: var(--wp--preset--font-size--x-small);
	font-weight: 700;
	letter-spacing: .04em;
	text-decoration: none;
	transition: border-color .15s ease, color .15s ease;
}

.musicart-lang a:hover {
	border-color: var(--wp--preset--color--primary);
	color: var(--wp--preset--color--primary);
}

@media (max-width: 781px) {
	.musicart-header .musicart-logo img {
		width: 118px !important;
	}

	.musicart-header__actions {
		gap: .5rem !important;
	}

	.musicart-header__donate .wp-block-button__link {
		padding: 0 1.15rem;
		font-size: var(--wp--preset--font-size--x-small) !important;
		letter-spacing: .04em;
	}
}

/* On mobile the hamburger goes last, after Donate and the language switch. */
@media (max-width: 599px) {
	.musicart-header__actions > .musicart-primary-nav {
		order: 3;
	}
}

/* 3. Page hero + entry ---------------------------------------------------- */

.musicart-page-hero {
	position: relative;
	overflow: hidden;
	isolation: isolate;
}

.musicart-page-hero::after {
	/* Decorative staff and notes, echoing the logo. */
	content: "";
	position: absolute;
	z-index: -1;
	right: max(-4rem, calc((100vw - 1240px) / 2 - 6rem));
	bottom: -2.5rem;
	width: min(38vw, 420px);
	aspect-ratio: 1;
	background: url("../images/notes.svg") no-repeat center / contain;
	opacity: .9;
	pointer-events: none;
}

.musicart-page-hero__title,
.musicart-page-hero h1 {
	margin-block: 0;
}

.musicart-page-hero .wp-block-post-terms a {
	display: inline-block;
	padding: .3em .8em;
	border-radius: 999px;
	background: var(--wp--preset--color--base);
}

.musicart-entry__media {
	margin-top: calc(-1 * var(--wp--preset--spacing--70)) !important;
	margin-bottom: var(--wp--preset--spacing--60) !important;
	position: relative;
}

/* The whole image, never cropped: news images are often posters with text.
   Tall ones are capped in height and centred. */
.musicart-entry__media img {
	display: block;
	width: auto !important;
	max-width: 100%;
	height: auto !important;
	max-height: min(80vh, 900px);
	margin-inline: auto;
	object-fit: contain;
	border-radius: var(--musicart-radius-lg);
	box-shadow: var(--wp--preset--shadow--lifted);
}

.musicart-entry .wp-block-post-content > * + :where(h2, h3) {
	margin-top: var(--wp--preset--spacing--60);
}

.musicart-entry__nav a {
	font-weight: 600;
	text-decoration: none;
}

/* Previous / next post: always one row, long titles cut at two lines. */
.wp-block-group.musicart-entry__nav {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: var(--wp--preset--spacing--40);
	align-items: start;
	padding-top: var(--wp--preset--spacing--40);
	border-top: 1px solid var(--wp--preset--color--border);
}

.musicart-entry__nav .wp-block-post-navigation-link {
	display: flex;
	gap: .5rem;
	align-items: baseline;
	margin: 0;
	font-size: var(--wp--preset--font-size--small);
	line-height: 1.4;
}

.musicart-entry__nav .post-navigation-link-previous {
	grid-column: 1;
}

.musicart-entry__nav .post-navigation-link-next {
	grid-column: 2;
	justify-content: flex-end;
	text-align: right;
}

.musicart-entry__nav .wp-block-post-navigation-link a {
	display: -webkit-box;
	overflow: hidden;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 2;
}

.musicart-entry__nav [class*="wp-block-post-navigation-link__arrow"] {
	flex: none;
	color: var(--wp--preset--color--primary);
	font-weight: 700;
}

/* Landing/donation pages that end with ordinary content (not a full-width
   section) keep clear of the footer wave, which overlaps the page end. */
.musicart-landing:not(:has(> .alignfull:last-child)) {
	padding-bottom: calc(var(--musicart-wave) + var(--wp--preset--spacing--60));
}

/* Same for a last full-width section without a background: its own bottom
   padding would otherwise sit under the wave. */
.musicart-landing > .alignfull:last-child:not(.has-background) {
	padding-bottom: calc(var(--wp--preset--spacing--70) + var(--musicart-wave)) !important;
}

/* Donation page: room under the header. */
.musicart-landing > .musicart-donation-layout:first-child {
	padding-top: var(--wp--preset--spacing--70) !important;
}

/* A page whose content ends with a coloured full-width section: that section
   runs into the footer wave instead of leaving a white band after it. */
.musicart-entry:has(> .wp-block-post-content > .alignfull.has-background:last-child),
.musicart-entry:has(> .wp-block-post-content > .alignfull:last-child > .has-background:only-child) {
	padding-bottom: 0 !important;
}

.musicart-entry > .wp-block-post-content > .alignfull.has-background:last-child {
	margin-bottom: 0;
}

/* Same at the top: a coloured section right under the page title sits flush. */
.musicart-entry:has(> .wp-block-post-content:first-child > .alignfull.has-background:first-child) {
	padding-top: 0 !important;
}

/* Empty page (no content yet): no empty white area under the title. */
.musicart-entry:not(:has(*)),
.musicart-entry:has(> .wp-block-post-content:only-child:empty) {
	display: none;
}

/* Landing pages and the front page: sections sit flush, no inherited gap. */
.musicart-landing > .alignfull:first-child {
	margin-top: 0;
}

.musicart-landing > * {
	margin-block-start: 0;
}

/* 4. Cards ---------------------------------------------------------------- */

.musicart-card {
	height: 100%;
	overflow: hidden;
	border: 1px solid var(--wp--preset--color--border);
	border-radius: var(--musicart-radius);
	transition: transform .3s var(--musicart-ease), box-shadow .3s var(--musicart-ease);
}

.musicart-card:hover {
	transform: translateY(-4px);
	box-shadow: var(--wp--preset--shadow--soft);
}

.musicart-card__media {
	margin: 0 !important;
	width: 100%;
	background: var(--wp--preset--color--soft);
}

.musicart-card__media img {
	transition: transform .5s var(--musicart-ease);
}

.musicart-card:hover .musicart-card__media img {
	transform: scale(1.04);
}

.musicart-card__body {
	flex: 1;
}

.musicart-card .wp-block-post-title {
	margin: 0;
	line-height: 1.3;
}

.musicart-card .wp-block-post-excerpt__excerpt {
	margin: 0;
}

.musicart-card .wp-block-post-excerpt__more-text {
	display: none;
}

/* Card with an image link: whole card is clickable via the title link. */
.musicart-link-card {
	position: relative;
}

.musicart-link-card :where(h3, h4) a::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 1;
}

/* 5. Block style variations ---------------------------------------------- */

.is-style-card {
	padding: var(--wp--preset--spacing--50);
	border: 1px solid var(--wp--preset--color--border);
	border-radius: var(--musicart-radius);
	background: var(--wp--preset--color--base);
	box-shadow: var(--wp--preset--shadow--soft);
}

.wp-block-group.is-style-panel {
	padding: var(--wp--preset--spacing--50);
	border-radius: var(--musicart-radius-lg);
	background: var(--wp--preset--color--soft);
}

.wp-block-heading.is-style-eyebrow {
	margin-bottom: .35rem;
	color: var(--wp--preset--color--primary);
	font-family: var(--wp--preset--font-family--caveat);
	font-size: clamp(1.45rem, 1.2rem + .8vw, 1.85rem);
	font-weight: 700;
	letter-spacing: 0;
	line-height: 1.1;
	text-transform: none;
	transform: rotate(-1.5deg);
	transform-origin: left center;
}

.wp-block-heading.is-style-eyebrow.has-text-align-center {
	transform-origin: center;
}

.has-base-color .wp-block-heading.is-style-eyebrow,
.wp-block-heading.is-style-eyebrow.has-text-color {
	color: inherit;
}

p.is-style-lead {
	font-size: var(--wp--preset--font-size--large);
	line-height: 1.6;
	font-weight: 400;
}

.wp-block-list.is-style-checks {
	padding-left: 0;
	list-style: none;
}

.wp-block-list.is-style-checks li {
	position: relative;
	padding-left: 2.1em;
}

.wp-block-list.is-style-checks li + li {
	margin-top: .6em;
}

.wp-block-list.is-style-checks li::before {
	content: "";
	position: absolute;
	left: 0;
	top: .2em;
	width: 1.35em;
	height: 1.35em;
	border-radius: 50%;
	background: var(--wp--preset--color--accent) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%232b1740' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.2 4.2L19 7'/%3E%3C/svg%3E") no-repeat center / 62%;
}

/* "Cutout" — white frame with a slight shadow, like the campaign collages. */
.wp-block-image.is-style-cutout img {
	border: 8px solid #fff;
	border-radius: 22px;
	box-shadow: var(--wp--preset--shadow--lifted);
}

.wp-block-image.is-style-tilted img {
	border: 8px solid #fff;
	border-radius: 22px;
	box-shadow: var(--wp--preset--shadow--lifted);
	transform: rotate(-2.5deg);
}

.wp-block-button.is-style-lime .wp-block-button__link {
	background: var(--wp--preset--color--accent);
	color: var(--wp--preset--color--secondary-dark);
}

.wp-block-button.is-style-lime .wp-block-button__link:hover {
	background: #b3c25a;
	color: var(--wp--preset--color--secondary-dark);
}

.wp-block-button.is-style-light .wp-block-button__link {
	background: var(--wp--preset--color--base);
	color: var(--wp--preset--color--secondary);
}

.wp-block-button.is-style-light .wp-block-button__link:hover {
	background: var(--wp--preset--color--soft);
	color: var(--wp--preset--color--primary);
}

/* Outline buttons fill on hover. Colours chosen in the editor are printed as
   !important utility classes (.has-base-color …), so the hover state has to
   win with !important too, or the text takes the new background's colour. */
.wp-block-button.is-style-outline .wp-block-button__link:is(:hover, :focus-visible) {
	border-color: var(--wp--preset--color--secondary) !important;
	background: var(--wp--preset--color--secondary) !important;
	color: var(--wp--preset--color--base) !important;
}

/* White outline (on dark or coloured sections) fills white. */
.wp-block-button.is-style-outline .wp-block-button__link.has-base-color:is(:hover, :focus-visible),
.has-base-color .wp-block-button.is-style-outline .wp-block-button__link:not([class*="-color"]):is(:hover, :focus-visible) {
	border-color: var(--wp--preset--color--base) !important;
	background: var(--wp--preset--color--base) !important;
	color: var(--wp--preset--color--secondary-dark) !important;
}

/* Buttons with an editor-chosen background just darken. */
.wp-block-button__link.has-background:hover {
	filter: brightness(.9);
}

.wp-block-cover.is-style-rounded {
	overflow: hidden;
	border-radius: var(--musicart-radius-lg);
}

.wp-block-separator.is-style-short {
	width: 64px;
	margin-left: 0;
	border: 0 !important;
	border-top: 4px solid var(--wp--preset--color--primary) !important;
	border-radius: 4px;
	opacity: 1;
}

.has-text-align-center + .wp-block-separator.is-style-short,
.wp-block-separator.is-style-short.aligncenter {
	margin-inline: auto;
}

.wp-block-quote.is-style-big {
	border: 0;
	padding: 0;
	font-size: var(--wp--preset--font-size--x-large);
	font-weight: 600;
	line-height: 1.35;
}

.wp-block-quote.is-style-big::before {
	content: "“";
	display: block;
	height: .7em;
	margin-bottom: .1em;
	color: var(--wp--preset--color--accent);
	font-size: 4.5em;
	font-weight: 800;
	line-height: 1;
}

.wp-block-quote.is-style-big cite {
	display: block;
	margin-top: 1.2rem;
	font-size: var(--wp--preset--font-size--small);
	opacity: .85;
}

/* 6. Home sections -------------------------------------------------------- */

.musicart-hero {
	position: relative;
	overflow: hidden;
	isolation: isolate;
}

.musicart-hero::before {
	content: "";
	position: absolute;
	z-index: -1;
	top: -10%;
	left: -8%;
	width: 46vw;
	max-width: 640px;
	aspect-ratio: 1;
	border-radius: 50%;
	background: radial-gradient(closest-side, rgba(197, 211, 111, .28), transparent);
	pointer-events: none;
}

.musicart-hero__title {
	letter-spacing: -.03em;
	line-height: 1.02;
}

.musicart-hero__title mark {
	background: none;
	color: var(--wp--preset--color--primary);
}

.musicart-hero__media {
	position: relative;
}

.musicart-hero__media .wp-block-image {
	margin: 0;
}

.musicart-hero__media img {
	width: 100%;
	aspect-ratio: 4 / 5;
	object-fit: cover;
	border-radius: 200px 200px var(--musicart-radius-lg) var(--musicart-radius-lg);
	box-shadow: var(--wp--preset--shadow--lifted);
}

.musicart-hero__badge {
	position: absolute;
	left: -1.5rem;
	bottom: 2.5rem;
	max-width: 15rem;
	transform: rotate(-3deg);
	box-shadow: var(--wp--preset--shadow--soft);
}

@media (max-width: 781px) {
	.musicart-hero__media img {
		aspect-ratio: 4 / 3.4;
		border-radius: 140px 140px var(--musicart-radius) var(--musicart-radius);
	}

	.musicart-hero__badge {
		left: .75rem;
		bottom: -1.25rem;
	}
}

/* Icon tiles in "Ways to support". */
.musicart-ways .wp-block-column {
	text-align: center;
}

.musicart-way.is-style-panel {
	height: 100%;
	border: 1px solid var(--wp--preset--color--border);
	background: var(--wp--preset--color--base);
	transition: transform .3s var(--musicart-ease), box-shadow .3s var(--musicart-ease);
}

.musicart-way.is-style-panel:hover {
	transform: translateY(-4px);
	box-shadow: var(--wp--preset--shadow--soft);
}

.musicart-way.is-style-panel :where(h3, h4) {
	margin-block: .25rem 0;
}

.musicart-way img {
	width: 64px;
	height: 64px;
	object-fit: contain;
	border-radius: 0 !important;
}

.musicart-way :where(h3, h4) a {
	color: inherit;
	text-decoration: none;
}

.musicart-way:hover :where(h3, h4) a {
	color: var(--wp--preset--color--primary);
}

/* Program tiles with image + title overlay. */
.musicart-program {
	overflow: hidden;
	border-radius: var(--musicart-radius-lg);
	min-height: 22rem;
}

.musicart-program .wp-block-cover__image-background {
	transition: transform .6s var(--musicart-ease);
}

.musicart-program:hover .wp-block-cover__image-background {
	transform: scale(1.05);
}

.musicart-program h3 a {
	color: inherit;
	text-decoration: none;
}

.musicart-program h3 a::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 2;
}

.musicart-program {
	isolation: isolate;
}

/* Background layers go below the static content so the title link can
   stretch over the whole tile (a::after) and still sit above the photo. */
.musicart-program .wp-block-cover__image-background,
.musicart-program .wp-block-cover__background {
	z-index: -1 !important;
}

.musicart-program .wp-block-cover__inner-container {
	position: static;
}

/* Program tiles: legibility gradient instead of a flat dim. */
.musicart-program .wp-block-cover__background {
	opacity: 1 !important;
	background: linear-gradient(to top, rgba(43, 23, 64, .92) 0%, rgba(43, 23, 64, .55) 38%, rgba(43, 23, 64, 0) 70%) !important;
}

.musicart-program .wp-block-cover__inner-container > * {
	margin-block: 0;
}

.musicart-program .wp-block-cover__inner-container > p {
	margin-top: .35rem;
	opacity: .9;
}

/* Two overlapping photos next to the mission text. */
.musicart-collage {
	position: relative;
	padding-bottom: 14%;
}

.musicart-collage .wp-block-image {
	margin: 0;
}

.musicart-collage__back {
	width: 86%;
}

.musicart-collage__back img {
	aspect-ratio: 4 / 3;
	object-fit: cover;
}

.musicart-collage__front {
	position: absolute;
	right: 0;
	bottom: 0;
	width: 54%;
	z-index: 1;
}

.musicart-collage__front img {
	aspect-ratio: 1;
	object-fit: cover;
	transform: rotate(3deg);
}

/* Stats */
.musicart-stats .wp-block-column {
	padding-left: var(--wp--preset--spacing--40);
	border-left: 2px solid rgba(255, 255, 255, .18);
}

.musicart-stats p {
	margin: 0;
}

/* Donate banner */
.musicart-donate-banner {
	position: relative;
	overflow: hidden;
	isolation: isolate;
	box-shadow: var(--wp--preset--shadow--lifted);
}

.musicart-donate-banner.musicart-dark::after {
	left: auto;
	right: -4rem;
	top: auto;
	bottom: -5rem;
}

/* Section on dark purple: decorative notes. */
.musicart-dark {
	position: relative;
	overflow: hidden;
	isolation: isolate;
}

.musicart-dark::after {
	content: "";
	position: absolute;
	z-index: -1;
	left: -5rem;
	top: -4rem;
	width: 360px;
	aspect-ratio: 1;
	background: url("../images/notes-light.svg") no-repeat center / contain;
	opacity: .5;
	pointer-events: none;
}

.musicart-campaign {
	overflow: hidden;
	border-radius: var(--musicart-radius-lg);
	background: var(--wp--preset--color--base);
	box-shadow: var(--wp--preset--shadow--soft);
}

.musicart-campaign .wp-block-image {
	margin: 0;
}

.musicart-campaign .wp-block-image img {
	width: 100%;
	aspect-ratio: 16 / 10;
	object-fit: cover;
	border-radius: 0;
}

/* 7. Footer + newsletter + payments -------------------------------------- */

.musicart-footer {
	position: relative;
	overflow: hidden;
	isolation: isolate;
}

.musicart-footer::after {
	content: "";
	position: absolute;
	z-index: -1;
	right: -6rem;
	bottom: -6rem;
	width: 420px;
	aspect-ratio: 1;
	background: url("../images/notes-light.svg") no-repeat center / contain;
	opacity: .35;
	pointer-events: none;
}

.musicart-footer__heading {
	margin-bottom: 1rem;
	color: var(--wp--preset--color--accent);
	font-size: var(--wp--preset--font-size--x-small) !important;
	font-weight: 700;
	letter-spacing: .14em;
	text-transform: uppercase;
}

.musicart-footer__about {
	max-width: 34ch;
	opacity: .85;
}

.musicart-footer-nav .wp-block-navigation-item__content {
	opacity: .85;
	transition: opacity .15s ease, color .15s ease;
}

.musicart-footer-nav .wp-block-navigation-item__content:hover {
	opacity: 1;
	color: var(--wp--preset--color--accent) !important;
}

.musicart-footer .musicart-social {
	margin-top: var(--wp--preset--spacing--40);
}

.musicart-footer .musicart-social .wp-social-link {
	transition: background-color .15s ease, transform .2s ease;
}

.musicart-footer .musicart-social .wp-social-link:hover {
	background-color: var(--wp--preset--color--primary) !important;
	transform: translateY(-2px);
}

.wp-block-group.musicart-footer__bottom {
	display: grid;
	grid-template-columns: 1fr auto 1fr;
	gap: 1rem 2rem;
	align-items: center;
}

.musicart-footer__bottom > p {
	opacity: .75;
}

.musicart-footer__bottom > p:last-child {
	text-align: right;
}

/* Made by ivapix (as on the agency's other sites). */
.musicart-footer__credit {
	display: block;
	line-height: 0;
	opacity: .85;
	transition: opacity .2s ease;
}

.musicart-footer__credit:hover,
.musicart-footer__credit:focus-visible {
	opacity: 1;
}

.musicart-footer__credit img {
	width: 90px;
	height: 20px;
}

@media (max-width: 781px) {
	.wp-block-group.musicart-footer__bottom {
		grid-template-columns: 1fr;
		justify-items: center;
		text-align: center;
	}

	.musicart-footer__bottom > p:last-child {
		text-align: center;
	}

	.musicart-footer__credit {
		order: 3;
		margin-top: .5rem;
	}
}

.musicart-footer__bottom p {
	margin: 0;
}

.musicart-footer__bottom a {
	text-decoration: none;
}

.musicart-footer__bottom a:hover {
	text-decoration: underline;
}

/* map-mautic newsletter: the plugin exposes custom properties for this. */
.musicart-footer .map-newsletter {
	--map-nl-accent: var(--wp--preset--color--primary);
	--map-nl-accent-hover: var(--wp--preset--color--primary-dark);
	--map-nl-border: transparent;
	--map-nl-text: var(--wp--preset--color--contrast);
	--map-nl-placeholder: var(--wp--preset--color--muted);
	--map-nl-gap: 10px;
	--map-nl-pad-y: .85em;
	--map-nl-pad-x: 1.2em;
	max-width: none;
	margin: 0;
	text-align: left;
	font-size: var(--wp--preset--font-size--small);
}

.musicart-footer .map-newsletter__submit button {
	font-weight: 600;
}

.musicart-footer .map-newsletter__field input:focus {
	border-color: var(--wp--preset--color--accent);
	box-shadow: 0 0 0 3px rgba(197, 211, 111, .45);
}

.musicart-footer .map-newsletter__status {
	color: var(--wp--preset--color--accent);
	font-weight: 600;
}

.musicart-footer .map-newsletter__status--error {
	color: #ffb4c8;
}

/* Inline newsletter in content (e.g. the Newsletter page) */
.musicart-newsletter-card .map-newsletter {
	max-width: none;
	margin: 0;
	text-align: left;
}

.wp-block-post-content .map-newsletter {
	--map-nl-accent: var(--wp--preset--color--primary);
	--map-nl-accent-hover: var(--wp--preset--color--primary-dark);
	--map-nl-border: var(--wp--preset--color--border);
}

.musicart-payments__row {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: var(--wp--preset--spacing--40) var(--wp--preset--spacing--50);
	max-width: var(--wp--style--global--wide-size);
	margin-inline: auto;
}

.musicart-payments__cards,
.musicart-payments__secure {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: .6rem;
	margin: 0;
	padding: 0;
	list-style: none;
}

.musicart-payments img {
	display: block;
	width: auto;
	height: 34px;
	border-radius: 0;
}

.musicart-payments__bank img {
	height: 24px;
}

.musicart-payments__secure img {
	height: 30px;
}

@media (max-width: 781px) {
	.musicart-payments__row {
		justify-content: center;
	}
}

/* 8. WooCommerce + donations -------------------------------------------- */

/* WooCommerce's own form styles read these. */
.musicart-shop,
.woocommerce-checkout .wp-site-blocks {
	--wc-form-border-color: var(--wp--preset--color--border);
	--wc-form-border-radius: 12px;
	--wc-form-border-width: 1.5px;
	--wc-form-color-background: var(--wp--preset--color--base);
	--wc-form-color-text: var(--wp--preset--color--contrast);
}

/* WooCommerce caps its block-theme pages at 1000px; use the page's width. */
.musicart-shop .wp-block-post-content > .woocommerce {
	max-width: none;
}

.musicart-shop :where(input[type="text"], input[type="email"], input[type="tel"], input[type="number"], input[type="password"], select, textarea),
.musicart-shop .woocommerce form .form-row :is(input.input-text, textarea, select),
.woocommerce form .form-row :where(input.input-text, textarea, select) {
	width: 100%;
	min-height: 3.25rem;
	padding: .8rem 1rem;
	border: 1.5px solid var(--wp--preset--color--border);
	border-radius: 12px;
	background: var(--wp--preset--color--base);
	color: var(--wp--preset--color--contrast);
	font: inherit;
	font-size: var(--wp--preset--font-size--small);
	transition: border-color .15s ease, box-shadow .15s ease;
}

.musicart-shop :where(input, select, textarea):focus,
.woocommerce form .form-row :where(input.input-text, textarea, select):focus {
	outline: none;
	border-color: var(--wp--preset--color--secondary);
	box-shadow: 0 0 0 3px rgba(91, 52, 126, .15);
}

.woocommerce form .form-row label {
	margin-bottom: .35rem;
	font-size: var(--wp--preset--font-size--x-small);
	font-weight: 600;
	line-height: 1.4;
}

.woocommerce form .form-row .required {
	color: var(--wp--preset--color--primary);
	text-decoration: none;
}

/* Country / region pickers (select2): same box as the text fields. */
.musicart-shop .woocommerce .select2-container .select2-selection--single {
	height: 3.25rem;
	border: 1.5px solid var(--wp--preset--color--border);
	border-radius: 12px;
	background: var(--wp--preset--color--base);
}

.musicart-shop .woocommerce form .form-row .select2-container .select2-selection--single .select2-selection__rendered {
	padding: 0 2.75rem 0 1rem;
	color: var(--wp--preset--color--contrast);
	font-size: var(--wp--preset--font-size--small);
	line-height: calc(3.25rem - 3px);
}

.musicart-shop .woocommerce .select2-container .select2-selection--single .select2-selection__arrow {
	top: 0;
	right: .6rem;
	height: calc(3.25rem - 3px);
}

.musicart-shop .woocommerce .select2-container--open .select2-selection--single,
.musicart-shop .woocommerce .select2-container--focus .select2-selection--single {
	border-color: var(--wp--preset--color--secondary);
	box-shadow: 0 0 0 3px rgba(91, 52, 126, .15);
}

.select2-container .select2-dropdown {
	overflow: hidden;
	border: 1.5px solid var(--wp--preset--color--border);
	border-radius: 12px;
	font-size: var(--wp--preset--font-size--small);
}

.select2-container .select2-results__option--highlighted[aria-selected],
.select2-container .select2-results__option--highlighted[data-selected] {
	background: var(--wp--preset--color--secondary);
}

.musicart-shop .woocommerce form .form-row {
	margin-bottom: 1rem;
	padding: 0;
}

.musicart-shop .woocommerce form .form-row.form-row-first,
.musicart-shop .woocommerce form .form-row.form-row-last {
	width: calc(50% - .5rem);
}

/* Card brands next to the payment method: logo size, not file size. */
.woocommerce-checkout #payment ul.payment_methods li label img,
.woocommerce-checkout #payment ul.payment_methods li img {
	display: inline-block;
	width: auto !important;
	max-width: 3.25rem;
	height: 1.6rem !important;
	max-height: 1.6rem !important;
	margin: 0 0 0 .35rem !important;
	float: none !important;
	vertical-align: middle;
	object-fit: contain;
}

.woocommerce-checkout #payment ul.payment_methods {
	padding: var(--wp--preset--spacing--40);
	border-bottom: 1px solid var(--wp--preset--color--border);
}

.woocommerce-checkout #payment ul.payment_methods li {
	line-height: 1.6;
}

.woocommerce-checkout #payment ul.payment_methods li > label {
	display: inline;
	font-weight: 600;
}

.woocommerce-checkout #payment div.form-row {
	padding: var(--wp--preset--spacing--40);
}

.woocommerce-checkout .woocommerce-form-coupon-toggle .woocommerce-info {
	margin-bottom: var(--wp--preset--spacing--40);
}

/* Order summary: product name and amount on one line. */
.woocommerce-checkout-review-order-table .product-name {
	padding-right: 1rem !important;
}

.woocommerce-checkout-review-order-table .product-total,
.woocommerce-checkout-review-order-table tfoot td {
	text-align: right;
	white-space: nowrap;
}

.woocommerce-checkout-review-order-table thead th {
	color: var(--wp--preset--color--muted);
	font-size: var(--wp--preset--font-size--x-small);
	font-weight: 600;
	letter-spacing: .06em;
	text-transform: uppercase;
}

.woocommerce-checkout-review-order-table thead th:last-child {
	text-align: right;
}

.woocommerce-checkout-review-order-table .product-quantity {
	display: none;
}

/* Donations have no shipping or tax: the subtotal only repeats the total. */
.woocommerce-checkout-review-order-table .cart-subtotal {
	display: none;
}

.woocommerce :where(a.button, button.button, input.button, #respond input#submit),
.woocommerce :where(a.button.alt, button.button.alt, input.button.alt) {
	padding: .9em 1.8em;
	border: 0;
	border-radius: 999px;
	background: var(--wp--preset--color--primary);
	color: var(--wp--preset--color--base);
	font-family: inherit;
	font-size: var(--wp--preset--font-size--small);
	font-weight: 600;
	line-height: 1.3;
	transition: background-color .15s ease;
}

.woocommerce :where(a.button, button.button, input.button):hover {
	background: var(--wp--preset--color--primary-dark);
	color: var(--wp--preset--color--base);
}

/* Checkout: billing on the left, summary card on the right. */
@media (min-width: 900px) {
	.woocommerce-checkout form.checkout {
		display: grid;
		grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr);
		gap: 0 var(--wp--preset--spacing--60);
		align-items: start;
	}

	.woocommerce-checkout form.checkout > .woocommerce-NoticeGroup {
		grid-column: 1 / -1;
	}

	.woocommerce-checkout form.checkout > #customer_details {
		grid-column: 1;
		grid-row: 1 / span 3;
	}

	.woocommerce-checkout form.checkout > #order_review_heading,
	.woocommerce-checkout form.checkout > #order_review {
		grid-column: 2;
	}

	.woocommerce-checkout form.checkout > #order_review {
		position: sticky;
		top: calc(var(--musicart-header-offset) + 7rem);
	}

	.woocommerce-checkout #customer_details .col-1,
	.woocommerce-checkout #customer_details .col-2 {
		float: none;
		width: 100%;
	}
}

.woocommerce-checkout h3,
.woocommerce-checkout #order_review_heading {
	margin-top: 0;
	font-size: var(--wp--preset--font-size--large);
}

.woocommerce-checkout #order_review {
	padding: var(--wp--preset--spacing--50);
	border-radius: var(--musicart-radius-lg);
	background: var(--wp--preset--color--soft);
}

.woocommerce table.shop_table {
	border: 0;
	border-radius: 0;
	border-collapse: collapse;
}

.woocommerce table.shop_table :where(th, td) {
	padding: .85rem 0;
	border-top: 1px solid var(--wp--preset--color--border);
}

.woocommerce table.shop_table tfoot .order-total :where(th, td) {
	font-size: var(--wp--preset--font-size--large);
	color: var(--wp--preset--color--secondary);
}

.woocommerce-checkout #payment {
	border-radius: var(--musicart-radius);
	background: var(--wp--preset--color--base);
}

.woocommerce-checkout #payment div.payment_box {
	border-radius: 12px;
	background: var(--wp--preset--color--soft);
	color: var(--wp--preset--color--contrast);
}

.woocommerce-checkout #payment div.payment_box::before {
	border-bottom-color: var(--wp--preset--color--soft);
}

.woocommerce-checkout #place_order {
	width: 100%;
	padding-block: 1.05em;
	font-size: var(--wp--preset--font-size--medium);
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: .06em;
	box-shadow: 0 14px 28px -16px rgba(185, 53, 146, .9);
}

.woocommerce-checkout #payment #place_order {
	float: none;
}

.musicart-trust-note {
	clear: both;
	display: flex;
	gap: .6rem;
	align-items: flex-start;
	margin: 1rem 0 0;
	color: var(--wp--preset--color--muted);
	font-size: var(--wp--preset--font-size--x-small);
	line-height: 1.5;
}

.musicart-trust-note::before {
	content: "";
	flex: 0 0 1.1rem;
	height: 1.1rem;
	margin-top: .1rem;
	background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%235b347e' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='4' y='11' width='16' height='10' rx='2'/%3E%3Cpath d='M8 11V7a4 4 0 0 1 8 0v4'/%3E%3C/svg%3E") no-repeat center / contain;
}

.woocommerce :where(.woocommerce-message, .woocommerce-info, .woocommerce-error) {
	border: 0;
	border-left: 4px solid var(--wp--preset--color--secondary);
	border-radius: 12px;
	background: var(--wp--preset--color--soft);
	color: var(--wp--preset--color--contrast);
}

.woocommerce .woocommerce-error {
	border-left-color: #c0392b;
}

.woocommerce :where(.woocommerce-message, .woocommerce-info, .woocommerce-error)::before {
	color: var(--wp--preset--color--secondary);
}

/* Thank-you page */
.woocommerce-order .woocommerce-thankyou-order-received,
.woocommerce-order > p:first-child {
	padding: var(--wp--preset--spacing--50);
	border-radius: var(--musicart-radius-lg);
	background: var(--wp--preset--color--soft);
	color: var(--wp--preset--color--secondary);
	font-size: var(--wp--preset--font-size--large);
	font-weight: 600;
}

.woocommerce-order ul.order_details {
	display: flex;
	flex-wrap: wrap;
	gap: 1rem;
	padding: 0;
}

.woocommerce-order ul.order_details li {
	margin: 0;
	padding: 0 1rem 0 0;
	border-right: 1px solid var(--wp--preset--color--border);
	font-size: var(--wp--preset--font-size--x-small);
}

/* Donation sidebar */
@media (min-width: 782px) {
	.musicart-donation__aside > * {
		position: sticky;
		top: calc(var(--musicart-header-offset) + 7rem);
	}
}

.musicart-donation-missing {
	padding: var(--wp--preset--spacing--40);
	border: 2px dashed var(--wp--preset--color--primary);
	border-radius: var(--musicart-radius);
	background: #fbeef7;
	font-size: var(--wp--preset--font-size--small);
}

/* 10. Refresh: hand-made details ------------------------------------------
   The campaign artwork is collage-like (paper, cut-outs, tape, scribbles);
   these bring a little of that into the site. */

/* Paper grain on the warm/light section colours. */
.has-cream-background-color,
.has-soft-background-color {
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .17 0 0 0 0 .09 0 0 0 0 .25 0 0 0 .07 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}

/* Hand-drawn underline under highlighted words in headings. */
:where(h1, h2, h3) mark.has-inline-color {
	position: relative;
	padding-bottom: .08em;
	background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 300 24' preserveAspectRatio='none'%3E%3Cpath d='M4 16c40-9 92-12 146-9s96 6 146-3' fill='none' stroke='%23c5d36f' stroke-width='7' stroke-linecap='round'/%3E%3C/svg%3E") no-repeat left bottom / 100% .32em !important;
}

/* Washi tape on cut-out photos. */
.wp-block-image.is-style-cutout,
.wp-block-image.is-style-tilted {
	position: relative;
}

.wp-block-image.is-style-cutout::before,
.wp-block-image.is-style-tilted::before {
	content: "";
	position: absolute;
	z-index: 2;
	top: -14px;
	left: 50%;
	width: 110px;
	height: 30px;
	background: rgba(197, 211, 111, .85);
	box-shadow: 0 2px 6px rgba(43, 23, 64, .15);
	transform: translateX(-50%) rotate(-4deg);
	pointer-events: none;
}

.wp-block-image.is-style-tilted::before {
	left: 18%;
	background: rgba(185, 53, 146, .75);
	transform: translateX(-50%) rotate(-10deg);
}

/* Wave where content meets the footer. The footer is pulled up by the wave's
   height (and the root block gap is removed), so the area above the wave
   shows the last section's own background instead of a white band. Every
   section ends with more bottom padding than the wave is tall. */
:root {
	--musicart-wave: clamp(28px, 4vw, 56px);
}

.wp-site-blocks > .site-footer {
	position: relative;
	z-index: 1;
	margin-block-start: calc(-1 * var(--musicart-wave)) !important;
}

.site-footer::before {
	content: "";
	display: block;
	height: var(--musicart-wave);
	margin-bottom: -1px;
	background: var(--wp--preset--color--secondary-dark);
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 56' preserveAspectRatio='none'%3E%3Cpath d='M0 56V28C120 10 240 2 360 10s240 34 360 34 240-26 360-34 240 0 360 18v28z'/%3E%3C/svg%3E") no-repeat center / 100% 100%;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 56' preserveAspectRatio='none'%3E%3Cpath d='M0 56V28C120 10 240 2 360 10s240 34 360 34 240-26 360-34 240 0 360 18v28z'/%3E%3C/svg%3E") no-repeat center / 100% 100%;
}

/* Current menu item: little lime squiggle. */
@media (min-width: 600px) {
	.musicart-primary-nav .wp-block-navigation__container > .current-menu-item > .wp-block-navigation-item__content,
	.musicart-primary-nav .wp-block-navigation__container > .current-menu-ancestor > .wp-block-navigation-item__content {
		background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 8'%3E%3Cpath d='M2 5c8-4 14 2 22-1s14-3 22 0 8 1 12-1' fill='none' stroke='%23c5d36f' stroke-width='3' stroke-linecap='round'/%3E%3C/svg%3E") no-repeat center bottom / 70% 6px;
	}
}

/* Mobile menu overlay: brand colours and big, thumb-friendly links. */
.musicart-primary-nav .wp-block-navigation__responsive-container.is-menu-open {
	background: var(--wp--preset--color--secondary-dark) !important;
	color: var(--wp--preset--color--base) !important;
}

.musicart-primary-nav .is-menu-open .wp-block-navigation-item__content {
	color: var(--wp--preset--color--base) !important;
}

.musicart-primary-nav .is-menu-open .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
	color: rgba(255, 255, 255, .72) !important;
	font-size: var(--wp--preset--font-size--medium);
}

.musicart-primary-nav .is-menu-open .wp-block-navigation__responsive-container-close {
	width: 44px;
	height: 44px;
	display: flex;
	align-items: center;
	justify-content: center;
	border-radius: 50%;
	background: rgba(255, 255, 255, .12);
	color: var(--wp--preset--color--base);
}

/* Announcement strip above the header (stays under the open mobile menu). */
.musicart-announce {
	position: relative;
}

.musicart-announce p {
	margin: 0;
}

.musicart-announce a {
	color: inherit;
	font-weight: 700;
	text-decoration: underline;
	text-decoration-color: var(--wp--preset--color--accent);
	text-decoration-thickness: 2px;
	text-underline-offset: 3px;
}

.musicart-announce a:hover {
	color: var(--wp--preset--color--accent);
}

/* Links on dark/coloured sections (white text) stay white instead of the
   theme's purple link colour; blocks with their own link colour still win. */
.has-base-color.has-background a:where(:not(.wp-element-button)) {
	color: inherit;
}

.has-base-color.has-background a:where(:not(.wp-element-button)):hover {
	color: var(--wp--preset--color--accent);
}

/* Links in running text: calmer underline. */
.wp-block-post-content :where(p, li) a:where(:not(.wp-element-button)) {
	text-decoration-thickness: 1px;
	text-underline-offset: .2em;
	text-decoration-color: color-mix(in srgb, currentColor 45%, transparent);
	transition: text-decoration-color .15s ease, color .15s ease;
}

.wp-block-post-content :where(p, li) a:where(:not(.wp-element-button)):hover {
	text-decoration-color: currentColor;
}

/* Reveal on scroll (assets/js/theme.js adds the class only below the fold). */
.musicart-reveal {
	opacity: 0;
	transform: translateY(26px);
	transition: opacity .7s var(--musicart-ease), transform .7s var(--musicart-ease);
	transition-delay: var(--reveal-delay, 0ms);
}

.musicart-reveal.is-revealed {
	opacity: 1;
	transform: none;
}

/* Back to top */
.musicart-top {
	position: fixed;
	right: 1.25rem;
	bottom: 1.25rem;
	z-index: 90;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 3rem;
	height: 3rem;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: var(--wp--preset--color--secondary);
	color: var(--wp--preset--color--base);
	box-shadow: var(--wp--preset--shadow--soft);
	cursor: pointer;
	opacity: 0;
	pointer-events: none;
	transform: translateY(12px);
	transition: opacity .25s ease, transform .25s ease, background-color .15s ease;
}

.musicart-top.is-visible {
	opacity: 1;
	pointer-events: auto;
	transform: none;
}

.musicart-top.is-over-footer {
	background: var(--wp--preset--color--primary);
}

.musicart-top svg {
	width: 1.2rem;
	height: 1.2rem;
	fill: none;
	stroke: currentColor;
	stroke-width: 2.4;
	stroke-linecap: round;
	stroke-linejoin: round;
}

/* YouTube preview (inc/blocks.php) */
.musicart-yt,
.musicart-yt__frame {
	position: relative;
	display: block;
	width: 100%;
	aspect-ratio: 16 / 9;
	overflow: hidden;
	border: 0;
	border-radius: var(--musicart-radius);
	background: #000;
}

.musicart-yt {
	padding: 0;
	cursor: pointer;
}

.musicart-yt img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	opacity: .88;
	transition: transform .5s var(--musicart-ease), opacity .3s ease;
}

.musicart-yt:hover img {
	opacity: 1;
	transform: scale(1.03);
}

.musicart-yt__play {
	position: absolute;
	top: 50%;
	left: 50%;
	width: 76px;
	height: 76px;
	border-radius: 50%;
	background: var(--wp--preset--color--primary);
	box-shadow: 0 0 0 10px rgba(185, 53, 146, .25);
	transform: translate(-50%, -50%);
	transition: transform .2s ease, box-shadow .2s ease;
}

.musicart-yt__play::after {
	content: "";
	position: absolute;
	top: 50%;
	left: 54%;
	border-style: solid;
	border-width: 13px 0 13px 21px;
	border-color: transparent transparent transparent #fff;
	transform: translate(-50%, -50%);
}

.musicart-yt:hover .musicart-yt__play,
.musicart-yt:focus-visible .musicart-yt__play {
	box-shadow: 0 0 0 16px rgba(185, 53, 146, .3);
	transform: translate(-50%, -50%) scale(1.06);
}

.musicart-yt__title {
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0;
	padding: 2.5rem 1.25rem 1rem;
	background: linear-gradient(to top, rgba(0, 0, 0, .7), transparent);
	color: #fff;
	font-size: var(--wp--preset--font-size--small);
	font-weight: 600;
	text-align: left;
}

.wp-block-embed.is-provider-youtube .wp-block-embed__wrapper::before {
	display: none;
}

/* Campaign progress (blocks/progress) */
.musicart-progress {
	margin-block: var(--wp--preset--spacing--30);
}

.musicart-progress__numbers {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: .2rem .6rem;
	margin: 0 0 .55rem;
	line-height: 1.2;
}

.musicart-progress__label {
	width: 100%;
	opacity: .7;
	font-size: var(--wp--preset--font-size--x-small);
	font-weight: 600;
	letter-spacing: .08em;
	text-transform: uppercase;
}

.musicart-progress__raised {
	color: var(--wp--preset--color--primary);
	font-size: var(--wp--preset--font-size--x-large);
	font-weight: 800;
	letter-spacing: -.02em;
}

.has-base-color .musicart-progress__raised {
	color: var(--wp--preset--color--accent);
}

.musicart-progress__goal {
	opacity: .7;
	font-size: var(--wp--preset--font-size--small);
}

.musicart-progress__bar {
	height: .7rem;
	overflow: hidden;
	border-radius: 999px;
	background: color-mix(in srgb, currentColor 12%, transparent);
}

.musicart-progress__bar span {
	display: block;
	width: var(--progress);
	height: 100%;
	border-radius: inherit;
	background: linear-gradient(90deg, var(--wp--preset--color--primary), var(--wp--preset--color--secondary));
	transition: width 1.4s var(--musicart-ease);
}

.js .musicart-progress:not(.is-in) .musicart-progress__bar span {
	width: 0;
}

.musicart-progress__first {
	margin: 0;
	padding: .55rem .9rem;
	border-radius: 10px;
	background: color-mix(in srgb, var(--wp--preset--color--accent) 35%, transparent);
	font-size: var(--wp--preset--font-size--small);
	font-weight: 600;
}

.musicart-progress__meta {
	display: flex;
	justify-content: space-between;
	gap: 1rem;
	margin: .4rem 0 0;
	opacity: .8;
	font-size: var(--wp--preset--font-size--x-small);
}

.musicart-progress__meta strong {
	margin-left: auto;
}

.musicart-hero .musicart-progress {
	max-width: 30rem;
	margin-top: var(--wp--preset--spacing--40);
}

/* Campaign list (blocks/campaigns) */
.musicart-campaigns__grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 18rem), 1fr));
	gap: var(--wp--preset--spacing--50);
	margin: 0;
	padding: 0;
	list-style: none;
}

.musicart-campaign-card__media {
	position: relative;
	margin: 0;
	aspect-ratio: 16 / 9;
	overflow: hidden;
	background: var(--wp--preset--color--soft);
}

.musicart-campaign-card__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform .5s var(--musicart-ease);
}

.musicart-campaign-card:hover .musicart-campaign-card__media img {
	transform: scale(1.04);
}

.musicart-campaign-card__placeholder {
	position: absolute;
	inset: 0;
	background: var(--wp--preset--gradient--sunrise);
}

.musicart-campaign-card__status {
	position: absolute;
	top: .9rem;
	left: .9rem;
	padding: .3rem .8rem;
	border-radius: 999px;
	background: var(--wp--preset--color--base);
	color: var(--wp--preset--color--muted);
	font-size: var(--wp--preset--font-size--x-small);
	font-weight: 700;
	box-shadow: var(--wp--preset--shadow--soft);
}

.musicart-campaign-card.is-active .musicart-campaign-card__status {
	background: var(--wp--preset--color--accent);
	color: var(--wp--preset--color--secondary-dark);
}

.musicart-campaign-card.is-active .musicart-campaign-card__status::before {
	content: "";
	display: inline-block;
	width: .5rem;
	height: .5rem;
	margin-right: .4rem;
	border-radius: 50%;
	background: var(--wp--preset--color--primary);
	animation: musicart-pulse 1.6s ease-in-out infinite;
}

@keyframes musicart-pulse {
	50% { opacity: .3; }
}

.musicart-campaign-card__body {
	padding: var(--wp--preset--spacing--40);
}

.musicart-campaign-card__date {
	margin: 0 0 .35rem;
	color: var(--wp--preset--color--muted);
	font-size: var(--wp--preset--font-size--x-small);
}

.musicart-campaign-card__title {
	margin: 0 0 .5rem;
	font-size: var(--wp--preset--font-size--large);
}

.musicart-campaign-card.is-active {
	border-color: var(--wp--preset--color--accent);
	box-shadow: 0 0 0 2px var(--wp--preset--color--accent);
}

.musicart-campaigns__total {
	max-width: 640px;
	margin: var(--wp--preset--spacing--60) auto 0;
	text-align: center;
}

.musicart-campaigns__total p {
	margin: 0;
}

.musicart-campaigns__total-label {
	color: var(--wp--preset--color--primary);
	font-family: var(--wp--preset--font-family--caveat);
	font-size: 1.8rem;
	font-weight: 700;
}

.musicart-campaigns__total-value {
	margin: .25rem 0 1.25rem !important;
	color: var(--wp--preset--color--secondary);
	font-size: var(--wp--preset--font-size--xx-large);
	font-weight: 800;
	letter-spacing: -.03em;
}

/* Campaign cards (pattern musicart/campaign-cards) */
.musicart-campaign-card {
	position: relative;
	height: 100%;
	overflow: hidden;
	border: 1px solid var(--wp--preset--color--border);
	border-radius: var(--musicart-radius-lg);
	background: var(--wp--preset--color--base);
	transition: transform .3s var(--musicart-ease), box-shadow .3s var(--musicart-ease);
}

.musicart-campaign-card:hover {
	transform: translateY(-4px);
	box-shadow: var(--wp--preset--shadow--soft);
}

.musicart-campaign-card .wp-block-image {
	margin: 0;
}

.musicart-campaign-card .wp-block-image img {
	width: 100%;
	aspect-ratio: 16 / 9;
	object-fit: cover;
	border-radius: 0;
}

.musicart-campaign-card h3 a {
	color: inherit;
	text-decoration: none;
}

.musicart-campaign-card h3 a::after {
	content: "";
	position: absolute;
	inset: 0;
}

/* Stories carousel (pattern musicart/stories) */
.musicart-story {
	position: relative;
	overflow: hidden;
	border-radius: var(--musicart-radius-lg);
	background: var(--wp--preset--color--base);
	box-shadow: var(--wp--preset--shadow--soft);
}

.musicart-story .wp-block-image {
	margin: 0;
}

.musicart-story .wp-block-image img {
	width: 100%;
	aspect-ratio: 1440 / 603;
	object-fit: cover;
	border-radius: 0;
	transition: transform .5s var(--musicart-ease);
}

.musicart-story:hover .wp-block-image img {
	transform: scale(1.03);
}

.musicart-story h3 a {
	color: inherit;
	text-decoration: none;
}

.musicart-story h3 a::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 1;
}

/* Hero slides */
.musicart-slide {
	position: relative;
	overflow: hidden;
	isolation: isolate;
	display: flex !important;
	flex-direction: column;
	justify-content: center;
}

.musicart-slide > .wp-block-columns {
	width: 100%;
}

.musicart-slider.is-style-hero .musicart-slide {
	padding-bottom: calc(var(--wp--preset--spacing--70) + 2.5rem) !important;
}

.musicart-slide .musicart-hero__media img {
	aspect-ratio: 5 / 5.2;
}

.musicart-slide.has-indigo-background-color .musicart-hero__media img,
.musicart-slide.has-secondary-dark-background-color .musicart-hero__media img {
	border-radius: var(--musicart-radius-lg);
	aspect-ratio: 4 / 3.3;
}

.musicart-slider:not(.is-ready) .musicart-slider__track > .musicart-slide:not(:first-child) {
	visibility: hidden;
}

/* PDF publication (blocks/pdf) */
.musicart-pdf {
	display: grid;
	grid-template-columns: minmax(120px, 210px) 1fr;
	gap: var(--wp--preset--spacing--50);
	align-items: center;
	margin-block: var(--wp--preset--spacing--50);
	padding: var(--wp--preset--spacing--40);
	border: 1px solid var(--wp--preset--color--border);
	border-radius: var(--musicart-radius-lg);
	background: var(--wp--preset--color--soft);
}

.musicart-pdf__cover {
	display: block;
	position: relative;
	transform: rotate(-2deg);
	transition: transform .3s var(--musicart-ease);
}

.musicart-pdf__cover:hover {
	transform: rotate(0) translateY(-4px);
}

.musicart-pdf__cover img {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 3 / 4;
	object-fit: cover;
	border: 6px solid #fff;
	border-radius: 10px !important;
	box-shadow: 8px 10px 0 -2px var(--wp--preset--color--accent), var(--wp--preset--shadow--lifted);
}

.musicart-pdf__placeholder {
	display: flex;
	align-items: center;
	justify-content: center;
	aspect-ratio: 3 / 4;
	border-radius: 10px;
	background: var(--wp--preset--color--base);
	color: var(--wp--preset--color--primary);
	box-shadow: var(--wp--preset--shadow--soft);
}

.musicart-pdf__placeholder svg {
	width: 46%;
}

.musicart-pdf__body {
	display: flex;
	flex-direction: column;
	gap: .5rem;
	align-items: flex-start;
}

.musicart-pdf__meta {
	color: var(--wp--preset--color--primary);
	font-size: var(--wp--preset--font-size--x-small);
	font-weight: 700;
	letter-spacing: .1em;
	text-transform: uppercase;
}

.musicart-pdf__title {
	font-size: var(--wp--preset--font-size--large);
	font-weight: 700;
	line-height: 1.25;
}

.musicart-pdf__desc {
	color: var(--wp--preset--color--muted);
	font-size: var(--wp--preset--font-size--small);
}

.musicart-pdf__actions {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: .5rem 1.25rem;
	margin-top: .5rem;
}

.musicart-pdf__read {
	text-decoration: none;
}

.musicart-pdf__download {
	font-size: var(--wp--preset--font-size--small);
	font-weight: 600;
}

.musicart-pdf__dialog {
	width: min(1100px, 94vw);
	height: 92vh;
	max-height: none;
	padding: 0;
	border: 0;
	border-radius: var(--musicart-radius);
	overflow: hidden;
	box-shadow: var(--wp--preset--shadow--lifted);
}

.musicart-pdf__dialog[open] {
	display: flex;
	flex-direction: column;
}

.musicart-pdf__dialog::backdrop {
	background: rgba(29, 23, 36, .7);
	backdrop-filter: blur(3px);
}

.musicart-pdf__bar {
	display: flex;
	align-items: center;
	gap: 1rem;
	padding: .75rem 1rem .75rem 1.25rem;
	background: var(--wp--preset--color--secondary-dark);
	color: var(--wp--preset--color--base);
	font-size: var(--wp--preset--font-size--small);
}

.musicart-pdf__bar strong {
	flex: 1;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.musicart-pdf__bar a {
	color: var(--wp--preset--color--accent);
	font-weight: 600;
}

.musicart-pdf__close {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 2.5rem;
	height: 2.5rem;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: rgba(255, 255, 255, .12);
	color: inherit;
	cursor: pointer;
}

.musicart-pdf__close svg {
	width: 1.1rem;
	height: 1.1rem;
	fill: none;
	stroke: currentColor;
	stroke-width: 2.4;
	stroke-linecap: round;
}

.musicart-pdf__dialog iframe {
	flex: 1;
	width: 100%;
	border: 0;
	background: #525659;
}

html.has-modal {
	overflow: hidden;
}

@media (max-width: 599px) {
	.musicart-pdf {
		grid-template-columns: 1fr;
		text-align: left;
	}

	.musicart-pdf__cover {
		max-width: 180px;
	}
}

/* Share (blocks/share) */
.musicart-share {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: .75rem;
}

.musicart-share__label {
	font-family: var(--wp--preset--font-family--caveat);
	font-size: 1.5rem;
	font-weight: 700;
	color: var(--wp--preset--color--primary);
}

.musicart-share__list {
	display: flex;
	flex-wrap: wrap;
	gap: .5rem;
	margin: 0;
	padding: 0;
	list-style: none;
}

.musicart-share__btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 2.75rem;
	height: 2.75rem;
	padding: 0;
	border: 1.5px solid var(--wp--preset--color--border);
	border-radius: 50%;
	background: var(--wp--preset--color--base);
	color: var(--wp--preset--color--secondary);
	cursor: pointer;
	transition: background-color .15s ease, color .15s ease, border-color .15s ease, transform .15s ease;
}

.musicart-share__btn:hover,
.musicart-share__btn.is-done {
	border-color: var(--wp--preset--color--secondary);
	background: var(--wp--preset--color--secondary);
	color: var(--wp--preset--color--base);
	transform: translateY(-2px);
}

.musicart-share__btn svg {
	width: 1.15rem;
	height: 1.15rem;
}

.musicart-share__status {
	color: var(--wp--preset--color--secondary);
	font-size: var(--wp--preset--font-size--x-small);
	font-weight: 600;
}

/* Contact form (blocks/contact-form) */
.musicart-contact {
	padding: var(--wp--preset--spacing--50);
	border: 1px solid var(--wp--preset--color--border);
	border-radius: var(--musicart-radius-lg);
	background: var(--wp--preset--color--base);
	box-shadow: var(--wp--preset--shadow--soft);
}

.musicart-contact__grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 0 1rem;
}

.musicart-contact__grid .is-name {
	grid-column: 1 / -1;
}

.musicart-contact__field {
	margin: 0 0 1rem;
}

.musicart-contact__field label {
	display: block;
	margin-bottom: .35rem;
	font-size: var(--wp--preset--font-size--x-small);
	font-weight: 600;
}

.musicart-contact__field label span {
	color: var(--wp--preset--color--primary);
}

.musicart-contact__field :where(input, textarea) {
	box-sizing: border-box;
	width: 100%;
	padding: .8rem 1rem;
	border: 1.5px solid var(--wp--preset--color--border);
	border-radius: 12px;
	background: var(--wp--preset--color--base);
	color: var(--wp--preset--color--contrast);
	font: inherit;
	font-size: var(--wp--preset--font-size--small);
	transition: border-color .15s ease, box-shadow .15s ease;
}

.musicart-contact__field textarea {
	min-height: 9rem;
	resize: vertical;
}

.musicart-contact__field :where(input, textarea):focus {
	outline: none;
	border-color: var(--wp--preset--color--secondary);
	box-shadow: 0 0 0 3px rgba(91, 52, 126, .15);
}

.musicart-contact__consent {
	display: flex;
	gap: .6rem;
	align-items: flex-start;
	margin: 0 0 1.25rem;
	font-size: var(--wp--preset--font-size--x-small);
	line-height: 1.5;
}

.musicart-contact__consent input {
	flex: 0 0 auto;
	width: 1.15rem;
	height: 1.15rem;
	margin-top: .1rem;
	accent-color: var(--wp--preset--color--primary);
}

.musicart-contact__submit {
	margin: 0;
}

.musicart-contact__submit button {
	cursor: pointer;
}

.musicart-contact__form.is-sending button {
	opacity: .6;
	pointer-events: none;
}

.musicart-contact__status:empty {
	display: none;
}

.musicart-contact__status {
	margin: 1rem 0 0;
	padding: .8rem 1rem;
	border-radius: 12px;
	font-size: var(--wp--preset--font-size--small);
	font-weight: 600;
}

.musicart-contact__status.is-ok {
	background: #eef5d6;
	color: #3d4a10;
}

.musicart-contact__status.is-error {
	background: #fdecef;
	color: #8a1c2d;
}

.musicart-contact__hp {
	position: absolute !important;
	left: -9999px !important;
	width: 1px;
	height: 1px;
	overflow: hidden;
}

@media (max-width: 599px) {
	.musicart-contact__grid {
		grid-template-columns: 1fr;
	}
}

/* A big quote alone in a narrow dark section is centred. */
.musicart-dark > .wp-block-quote.is-style-big:only-of-type {
	text-align: center;
}

@media (max-width: 781px) {
	.musicart-dark::after,
	.musicart-footer::after {
		width: 180px;
		opacity: .22;
	}

	.musicart-slider.is-style-hero .musicart-slide {
		padding-bottom: calc(var(--wp--preset--spacing--70) + 4.5rem) !important;
	}

	.musicart-slider.is-style-hero .musicart-slider__controls {
		bottom: var(--wp--preset--spacing--40);
	}
}

/* Campaign landing details */
.musicart-shout {
	margin-top: .25rem;
	color: var(--wp--preset--color--primary);
	font-family: var(--wp--preset--font-family--caveat);
	font-size: clamp(3rem, 2rem + 4vw, 5.5rem);
	font-weight: 700;
	line-height: 1;
	transform: rotate(-3deg);
	transform-origin: left center;
}

.musicart-shout.is-small {
	font-size: clamp(1.8rem, 1.4rem + 1.6vw, 2.6rem);
	line-height: 1.2;
	transform: rotate(-1deg);
	transform-origin: center;
}

.musicart-chips {
	gap: .6rem !important;
	margin-top: var(--wp--preset--spacing--50);
}

.musicart-chip {
	margin: 0;
	padding: .55rem 1.15rem;
	border: 2px solid rgba(255, 255, 255, .35);
	border-radius: 999px;
	font-size: var(--wp--preset--font-size--small);
	font-weight: 700;
	letter-spacing: .04em;
	text-transform: uppercase;
	transition: background-color .2s ease, color .2s ease, border-color .2s ease;
}

.musicart-chip:nth-child(odd) {
	transform: rotate(-2deg);
}

.musicart-chip:nth-child(even) {
	transform: rotate(1.5deg);
}

.musicart-chip:hover {
	border-color: var(--wp--preset--color--accent);
	background: var(--wp--preset--color--accent);
	color: var(--wp--preset--color--secondary-dark);
}

.musicart-center-list {
	width: fit-content;
	margin-inline: auto !important;
}

.musicart-credit {
	max-width: 220px;
	margin-inline: auto !important;
}

.musicart-credit img {
	border-radius: 0 !important;
}

/* Contact page (pattern musicart/contact-page) */
.musicart-contact-photo {
	margin-top: var(--wp--preset--spacing--50);
}

.musicart-contact-photo img {
	aspect-ratio: 3 / 2;
	object-fit: cover;
}

.musicart-map {
	position: relative;
	min-height: 22rem;
}

.musicart-map iframe {
	display: block;
	width: 100%;
	height: 100%;
	min-height: 22rem;
	border: 0;
	border-radius: var(--musicart-radius-lg);
	box-shadow: var(--wp--preset--shadow--soft);
}

.musicart-map::after {
	/* Pin sticker in the corner, like the campaign collages. */
	content: "";
	position: absolute;
	top: -14px;
	right: 24px;
	width: 56px;
	height: 56px;
	border-radius: 50%;
	background: var(--wp--preset--color--primary) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 21s-7-6.2-7-11.5A7 7 0 0 1 19 9.5C19 14.8 12 21 12 21z'/%3E%3Ccircle cx='12' cy='9.5' r='2.5'/%3E%3C/svg%3E") no-repeat center / 26px;
	box-shadow: 0 10px 20px -10px rgba(185, 53, 146, .8);
	transform: rotate(-8deg);
}

.musicart-info-list {
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--30);
}

.musicart-info {
	position: relative;
	flex: 1;
	padding: var(--wp--preset--spacing--40) var(--wp--preset--spacing--40) var(--wp--preset--spacing--40) calc(var(--wp--preset--spacing--40) + 3.25rem);
	border: 1px solid var(--wp--preset--color--border);
	border-radius: var(--musicart-radius);
	background: var(--wp--preset--color--base);
	transition: border-color .2s ease, box-shadow .2s ease;
}

.musicart-info:hover {
	border-color: color-mix(in srgb, var(--wp--preset--color--primary) 40%, var(--wp--preset--color--border));
	box-shadow: var(--wp--preset--shadow--soft);
}

.musicart-info::before {
	content: "";
	position: absolute;
	top: var(--wp--preset--spacing--40);
	left: var(--wp--preset--spacing--40);
	width: 2.4rem;
	height: 2.4rem;
	border-radius: 12px;
	background: var(--wp--preset--color--soft) var(--icon) no-repeat center / 1.2rem;
}

.musicart-info.is-address {
	--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23b93592' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 21s-7-6.2-7-11.5A7 7 0 0 1 19 9.5C19 14.8 12 21 12 21z'/%3E%3Ccircle cx='12' cy='9.5' r='2.5'/%3E%3C/svg%3E");
}

.musicart-info.is-contact {
	--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23b93592' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='5' width='18' height='14' rx='2'/%3E%3Cpath d='M3 7l9 6 9-6'/%3E%3C/svg%3E");
}

.musicart-info.is-org {
	--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23b93592' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='4' y='3' width='16' height='18' rx='2'/%3E%3Cpath d='M8 7h8M8 11h8M8 15h5'/%3E%3C/svg%3E");
}

.musicart-info :where(h3, h4) {
	margin: 0;
	font-size: var(--wp--preset--font-size--small);
	letter-spacing: .02em;
}

.musicart-info p {
	margin: 0;
	color: var(--wp--preset--color--muted);
}

.musicart-info a {
	color: var(--wp--preset--color--secondary);
	font-weight: 600;
}

.musicart-bank__item {
	padding: var(--wp--preset--spacing--30) var(--wp--preset--spacing--40);
	border-radius: var(--musicart-radius);
	background: var(--wp--preset--color--base);
}

.musicart-bank__item p {
	margin: 0;
}

.musicart-bank__item p:first-child {
	color: var(--wp--preset--color--muted);
	font-weight: 600;
	letter-spacing: .04em;
	text-transform: uppercase;
}

.musicart-bank code {
	position: relative;
	display: inline-block;
	padding: .15rem 0;
	background: none;
	color: var(--wp--preset--color--secondary);
	font-family: inherit;
	font-size: var(--wp--preset--font-size--medium);
	font-weight: 700;
	letter-spacing: .02em;
	white-space: nowrap;
	cursor: copy;
	transition: color .15s ease;
}

.musicart-bank code:hover {
	color: var(--wp--preset--color--primary);
}

.musicart-bank code.is-copied::after {
	content: attr(data-copied);
	position: absolute;
	left: 100%;
	top: 50%;
	margin-left: .6rem;
	padding: .2rem .55rem;
	border-radius: 999px;
	background: var(--wp--preset--color--accent);
	color: var(--wp--preset--color--secondary-dark);
	font-size: var(--wp--preset--font-size--x-small);
	font-weight: 700;
	white-space: nowrap;
	transform: translateY(-50%);
}

@media (max-width: 781px) {
	.musicart-map,
	.musicart-map iframe {
		min-height: 18rem;
	}
}

/* Cards and coloured sections carried over from the Avada pages (converter). */
.wp-block-column > .musicart-avada-card:only-child {
	height: 100%;
}

.musicart-avada-card {
	box-shadow: 0 10px 28px -22px rgba(43, 23, 64, .45);
	transition: transform .25s var(--musicart-ease), box-shadow .25s var(--musicart-ease);
}

.musicart-avada-card:hover {
	transform: translateY(-3px);
	box-shadow: var(--wp--preset--shadow--soft);
}

.musicart-avada-card > :where(h2, h3, h4) {
	margin-top: 0;
	margin-bottom: .45rem;
	line-height: 1.25;
}

.musicart-avada-card > * + * {
	margin-top: .35rem;
}

.musicart-avada-card > :last-child {
	margin-bottom: 0;
}

.wp-block-group.alignfull.has-background > .wp-block-columns + .wp-block-columns {
	margin-top: var(--wp--preset--spacing--40);
}

/* Team page (inc/team.php) */
.musicart-team-heading {
	margin-top: var(--wp--preset--spacing--70) !important;
	margin-bottom: var(--wp--preset--spacing--40) !important;
}

.musicart-person {
	height: 100%;
}

.musicart-person .wp-block-image {
	width: 100%;
	margin: 0 0 .5rem;
}

.musicart-person .wp-block-image img {
	width: 100%;
	border-radius: var(--musicart-radius) !important;
	transition: transform .4s var(--musicart-ease), box-shadow .4s var(--musicart-ease);
}

.musicart-person .wp-block-image a {
	display: block;
	overflow: hidden;
	border-radius: var(--musicart-radius);
}

.musicart-person:hover .wp-block-image img {
	transform: scale(1.03);
}

.musicart-person h3 {
	margin: 0;
	line-height: 1.3;
}

.musicart-person h3 a {
	color: inherit;
	text-decoration: none;
}

.musicart-person h3 a:hover {
	color: var(--wp--preset--color--primary);
}

.musicart-person p {
	margin: 0;
	line-height: 1.45;
}

/* Single post extras */
.musicart-entry__share {
	margin-top: var(--wp--preset--spacing--60);
	padding-top: var(--wp--preset--spacing--40);
	border-top: 1px solid var(--wp--preset--color--border);
}

.musicart-reading-time::before {
	content: "·";
	margin: 0 .5em;
}

/* Donation panel (inc/donation-form.php, patterns/donation-page.php) */
.musicart-donate-panel {
	overflow: hidden;
	box-shadow: var(--wp--preset--shadow--lifted);
}

.musicart-donate-panel .wp-block-columns {
	margin: 0;
	align-items: stretch !important;
}

.musicart-donate-panel__form {
	display: flex;
	flex-direction: column;
	justify-content: center;
	padding: var(--wp--preset--spacing--60) var(--wp--preset--spacing--60);
}

/* wpautop leaves empty paragraphs around the shortcode output. */
.musicart-donate-panel__form > p:empty {
	display: none;
}

.musicart-donate-panel__form > * {
	width: 100%;
	max-width: 34rem;
	margin-inline: auto;
}

.musicart-donate-panel__media {
	position: relative;
	min-height: 22rem;
}

.musicart-donate-panel__media .wp-block-image {
	position: absolute;
	inset: 0;
	margin: 0;
}

.musicart-donate-panel__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	border-radius: 0 !important;
}

/* On its own (shortcode placed anywhere) the form brings its panel colour;
   inside the donation panel the panel provides it. */
.musicart-donate {
	max-width: 40rem;
	padding: var(--wp--preset--spacing--50);
	border-radius: var(--musicart-radius-lg);
	background: var(--wp--preset--color--indigo);
	color: var(--wp--preset--color--base);
}

.musicart-donate-panel .musicart-donate {
	max-width: none;
	padding: 0;
	border-radius: 0;
	background: none;
}

.musicart-donate [hidden] {
	display: none !important;
}

.musicart-donate__kicker {
	margin: 0 0 .25rem;
	color: var(--wp--preset--color--accent);
	font-family: var(--wp--preset--font-family--caveat);
	font-size: clamp(1.6rem, 1.3rem + 1vw, 2.1rem);
	font-weight: 700;
	line-height: 1.1;
	transform: rotate(-1.5deg);
	transform-origin: left center;
}

.musicart-donate__heading,
.musicart-donate__title {
	margin: 0 0 var(--wp--preset--spacing--40);
	color: var(--wp--preset--color--base);
	font-size: var(--wp--preset--font-size--x-large);
	line-height: 1.15;
}

.musicart-donate__title:focus {
	outline: none;
}

/* Step 1: two big choices */
.musicart-donate__types {
	display: grid;
	gap: .9rem;
}

.musicart-donate__type {
	display: grid;
	grid-template-columns: 3rem 1fr;
	grid-template-rows: auto auto;
	column-gap: 1rem;
	align-items: center;
	width: 100%;
	padding: 1.1rem 1.25rem;
	border: 2px solid rgba(255, 255, 255, .28);
	border-radius: 18px;
	background: rgba(255, 255, 255, .08);
	color: var(--wp--preset--color--base);
	font: inherit;
	text-align: left;
	cursor: pointer;
	transition: background-color .2s ease, border-color .2s ease, transform .2s var(--musicart-ease);
}

.musicart-donate__type:hover,
.musicart-donate__type:focus-visible {
	border-color: var(--wp--preset--color--accent);
	background: rgba(255, 255, 255, .14);
	transform: translateY(-2px);
}

.musicart-donate__type-icon {
	grid-row: 1 / span 2;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 3rem;
	height: 3rem;
	border-radius: 50%;
	background: var(--wp--preset--color--accent);
	color: var(--wp--preset--color--secondary-dark);
	font-size: 1.35rem;
	font-weight: 700;
}

.musicart-donate__type strong {
	font-size: var(--wp--preset--font-size--large);
	line-height: 1.2;
}

.musicart-donate__type span:last-child {
	opacity: .8;
	font-size: var(--wp--preset--font-size--small);
}

/* Step 2: amount */
.musicart-donate__bar {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	margin-bottom: var(--wp--preset--spacing--30);
}

.musicart-donate__back {
	padding: .3rem 0;
	border: 0;
	background: none;
	color: var(--wp--preset--color--base);
	font: inherit;
	font-size: var(--wp--preset--font-size--small);
	font-weight: 600;
	opacity: .85;
	cursor: pointer;
}

.musicart-donate__back:hover {
	opacity: 1;
	color: var(--wp--preset--color--accent);
}

.musicart-donate__badge {
	padding: .3rem .8rem;
	border-radius: 999px;
	background: var(--wp--preset--color--accent);
	color: var(--wp--preset--color--secondary-dark);
	font-size: var(--wp--preset--font-size--x-small);
	font-weight: 700;
}

.musicart-donate__currencies {
	display: inline-flex;
	gap: .25rem;
	margin-bottom: var(--wp--preset--spacing--30);
	padding: .25rem;
	border-radius: 999px;
	background: rgba(255, 255, 255, .12);
}

.musicart-donate__currencies button {
	min-width: 3.5rem;
	padding: .4rem .9rem;
	border: 0;
	border-radius: 999px;
	background: transparent;
	color: var(--wp--preset--color--base);
	font: inherit;
	font-size: var(--wp--preset--font-size--x-small);
	font-weight: 700;
	letter-spacing: .04em;
	cursor: pointer;
}

.musicart-donate__currencies button[aria-pressed="true"] {
	background: var(--wp--preset--color--base);
	color: var(--wp--preset--color--indigo);
}

.musicart-donate__amounts {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(7.5rem, 1fr));
	gap: .65rem;
}

.musicart-donate__amounts button {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: .1rem;
	white-space: nowrap;
	min-height: 3.6rem;
	padding: .75rem 1rem;
	border: 2px solid rgba(255, 255, 255, .35);
	border-radius: 16px;
	background: transparent;
	color: var(--wp--preset--color--base);
	font: inherit;
	font-size: var(--wp--preset--font-size--large);
	font-weight: 700;
	line-height: 1.2;
	cursor: pointer;
	transition: background-color .15s ease, border-color .15s ease, color .15s ease;
}

.musicart-donate__amounts button span,
.musicart-donate__amounts button small {
	font-size: var(--wp--preset--font-size--x-small);
	font-weight: 600;
	line-height: 1.1;
	opacity: .85;
}

.musicart-donate__amounts button:hover {
	border-color: var(--wp--preset--color--accent);
}

.musicart-donate__amounts button[aria-pressed="true"] {
	border-color: var(--wp--preset--color--accent);
	background: var(--wp--preset--color--accent);
	color: var(--wp--preset--color--secondary-dark);
}

.musicart-donate__amounts button.is-other {
	font-size: var(--wp--preset--font-size--small);
}

.musicart-donate__other {
	margin-top: .9rem;
}

.musicart-donate__other label {
	display: block;
	margin-bottom: .35rem;
	font-size: var(--wp--preset--font-size--x-small);
	font-weight: 600;
	opacity: .9;
}

.musicart-donate__other-field {
	display: flex;
	align-items: center;
	overflow: hidden;
	border: 2px solid var(--wp--preset--color--base);
	border-radius: 16px;
	background: var(--wp--preset--color--base);
}

.musicart-donate__other-field:focus-within {
	border-color: var(--wp--preset--color--accent);
	box-shadow: 0 0 0 3px rgba(197, 211, 111, .45);
}

.musicart-donate__other-field input {
	flex: 1;
	min-width: 0;
	padding: .85rem 1rem;
	border: 0;
	background: transparent;
	color: var(--wp--preset--color--contrast);
	font: inherit;
	font-size: var(--wp--preset--font-size--large);
	font-weight: 700;
	-moz-appearance: textfield;
}

.musicart-donate__other-field input:focus {
	outline: none;
}

.musicart-donate__other-field input::-webkit-outer-spin-button,
.musicart-donate__other-field input::-webkit-inner-spin-button {
	margin: 0;
	-webkit-appearance: none;
}

.musicart-donate__other-cur {
	padding: 0 1rem;
	color: var(--wp--preset--color--muted);
	font-weight: 700;
}

.musicart-donate__approx,
.musicart-donate__error {
	margin: .75rem 0 0;
	font-size: var(--wp--preset--font-size--small);
}

.musicart-donate__approx {
	opacity: .85;
}

.musicart-donate__error {
	padding: .55rem .85rem;
	border-radius: 10px;
	background: rgba(255, 255, 255, .95);
	color: #8a1c2d;
	font-weight: 600;
}

.musicart-donate__secure {
	margin: .75rem 0 0;
	opacity: .75;
	font-size: var(--wp--preset--font-size--x-small);
	text-align: center;
}

/* The plugin's own form: only its Donate button is shown (inputs stay in
   the DOM — the plugin reads the amount from them). */
.musicart-donate.is-ready .wc-donation-in-action {
	padding: 0;
	border: 0;
	background: none;
	box-shadow: none;
}

.musicart-donate.is-ready .wc-donation-in-action .row1 {
	display: none !important;
}

.musicart-donate .musicart-donate__plugin {
	margin-top: var(--wp--preset--spacing--40);
}

.musicart-donate .musicart-donate__plugin > p,
.musicart-donate .musicart-donate__plugin br {
	margin: 0;
}

.musicart-donate .musicart-donate__plugin div[style*="clear:both"] {
	display: none;
}

.musicart-donate .wc-donation-f-submit-donation {
	width: 100%;
	padding: 1.05em 2em !important;
	border: 0 !important;
	border-radius: 999px !important;
	background: var(--wp--preset--color--accent) !important;
	color: var(--wp--preset--color--secondary-dark) !important;
	font-family: inherit;
	font-size: var(--wp--preset--font-size--medium) !important;
	font-weight: 800;
	letter-spacing: .08em;
	text-transform: uppercase;
	cursor: pointer;
	box-shadow: 0 14px 28px -16px rgba(0, 0, 0, .6);
	transition: filter .15s ease, transform .15s ease;
}

.musicart-donate .wc-donation-f-submit-donation:hover:not(:disabled) {
	filter: brightness(.95);
	transform: translateY(-1px);
}

.musicart-donate .wc-donation-f-submit-donation:disabled {
	opacity: .5;
	cursor: not-allowed;
}

@media (max-width: 781px) {
	.musicart-donate-panel .wp-block-columns {
		flex-direction: column-reverse;
	}

	.musicart-donate-panel__media {
		min-height: 0;
	}

	.musicart-donate-panel__media .wp-block-image {
		position: static;
	}

	.musicart-donate-panel__media img {
		aspect-ratio: 1440 / 1325;
	}

	.musicart-donate-panel__form {
		padding: var(--wp--preset--spacing--50) var(--wp--preset--spacing--40);
	}
}

/* Donation page: text + form left, campaign photo right (patterns/donation-page.php) */
.musicart-donation-layout__title {
	margin-top: 0;
}

.musicart-donation-layout__main > .musicart-donate,
.musicart-donation-layout__main > p:has(> .musicart-donate) {
	margin-block: var(--wp--preset--spacing--50);
}

.musicart-donation-layout__main .musicart-donate {
	max-width: none;
	box-shadow: var(--wp--preset--shadow--lifted);
}

.musicart-donation-photo {
	margin: 0 0 var(--wp--preset--spacing--50);
}

.musicart-donation-photo img {
	width: 100%;
	height: auto;
}

@media (min-width: 782px) {
	.musicart-donation-layout__sticky {
		position: sticky;
		top: calc(var(--musicart-header-offset) + 7.5rem);
	}
}

/* Checkout: monthly / one-off */
.musicart-checkout-type {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: .25rem .75rem;
	margin-bottom: var(--wp--preset--spacing--50);
	padding: 1rem 1.25rem;
	border-radius: var(--musicart-radius);
	background: var(--wp--preset--color--soft);
}

.musicart-checkout-type strong {
	color: var(--wp--preset--color--secondary);
	font-size: var(--wp--preset--font-size--large);
}

.musicart-checkout-type span {
	color: var(--wp--preset--color--muted);
	font-size: var(--wp--preset--font-size--small);
}

.musicart-checkout-type.is-monthly {
	background: color-mix(in srgb, var(--wp--preset--color--accent) 30%, white);
}

/* Content pages (patterns/page-*.php) ------------------------------------ */

.musicart-hero .wp-block-image.is-style-cutout img {
	width: 100%;
	aspect-ratio: 4 / 3;
	object-fit: cover;
}

/* Card with a lime top edge. */
.musicart-feature-card {
	height: 100%;
	padding: var(--wp--preset--spacing--50) var(--wp--preset--spacing--40);
	border-top: 6px solid var(--wp--preset--color--accent);
	border-radius: var(--musicart-radius);
	background: var(--wp--preset--color--base);
	box-shadow: var(--wp--preset--shadow--soft);
	transition: transform .3s var(--musicart-ease), box-shadow .3s var(--musicart-ease);
}

.musicart-feature-card:hover {
	transform: translateY(-4px);
	box-shadow: var(--wp--preset--shadow--lifted);
}

.musicart-feature-card:nth-child(3n+2) {
	border-top-color: var(--wp--preset--color--primary);
}

.musicart-feature-card:nth-child(3n) {
	border-top-color: var(--wp--preset--color--indigo);
}

.musicart-feature-card > * {
	margin-block: 0;
}

.musicart-feature-card > * + * {
	margin-top: .6rem;
}

.musicart-feature-card .wp-block-heading {
	line-height: 1.25;
}

.musicart-feature-card__num {
	color: var(--wp--preset--color--primary);
	font-family: var(--wp--preset--font-family--caveat);
	font-size: 2.2rem;
	font-weight: 700;
	line-height: 1;
}

/* Five cards in three columns: the last one fills the gap. */
@media (min-width: 1100px) {
	.musicart-feature-grid > :last-child:nth-child(3n+2) {
		grid-column: span 2;
	}
}

/* Year timeline. */
.wp-block-list.musicart-timeline {
	position: relative;
	margin: var(--wp--preset--spacing--50) 0 0;
	padding: 0;
	list-style: none;
}

.wp-block-list.musicart-timeline::before {
	content: "";
	position: absolute;
	top: .6rem;
	bottom: .6rem;
	left: 7px;
	width: 2px;
	background: linear-gradient(var(--wp--preset--color--accent), var(--wp--preset--color--primary));
}

.musicart-timeline li {
	position: relative;
	margin: 0;
	padding: 0 0 var(--wp--preset--spacing--40) 2.5rem;
}

.musicart-timeline li:last-child {
	padding-bottom: 0;
}

.musicart-timeline li::before {
	content: "";
	position: absolute;
	top: .35rem;
	left: 0;
	width: 16px;
	height: 16px;
	border: 3px solid var(--wp--preset--color--primary);
	border-radius: 50%;
	background: var(--wp--preset--color--base);
}

.musicart-timeline li strong {
	display: block;
	margin-bottom: .1rem;
	color: var(--wp--preset--color--primary);
	font-family: var(--wp--preset--font-family--caveat);
	font-size: 1.75rem;
	line-height: 1.1;
}

.musicart-successes-photo {
	margin-top: var(--wp--preset--spacing--60);
}

/* "Did you know" facts on dark purple. */
.musicart-fact {
	height: 100%;
	padding: var(--wp--preset--spacing--50) var(--wp--preset--spacing--40);
	border: 1px solid rgba(255, 255, 255, .16);
	border-radius: var(--musicart-radius);
	background: rgba(255, 255, 255, .06);
}

.musicart-fact > * {
	margin-block: 0;
}

.musicart-fact__big {
	margin-bottom: .75rem !important;
	color: var(--wp--preset--color--accent);
	font-family: var(--wp--preset--font-family--caveat);
	font-size: clamp(3rem, 2.4rem + 2vw, 4.25rem);
	font-weight: 700;
	line-height: 1;
}

/* Chips on a light background. */
.musicart-chip.is-light {
	border-color: var(--wp--preset--color--border);
	background: var(--wp--preset--color--base);
	color: var(--wp--preset--color--secondary);
}

.musicart-chip.is-light:nth-child(3n+1) {
	border-color: var(--wp--preset--color--accent);
}

.musicart-chip.is-light:nth-child(3n+2) {
	border-color: color-mix(in srgb, var(--wp--preset--color--primary) 45%, white);
}

.musicart-chip.is-light:hover {
	border-color: var(--wp--preset--color--secondary);
	background: var(--wp--preset--color--secondary);
	color: var(--wp--preset--color--base);
}

/* Numbered steps 01–10 (Independence Academy). */
.musicart-step {
	display: flex;
	flex-direction: column;
	justify-content: space-between;
	min-height: 10.5rem;
	height: 100%;
	padding: var(--wp--preset--spacing--40);
	border-radius: var(--musicart-radius);
	transition: transform .3s var(--musicart-ease);
}

.musicart-step:nth-child(odd) {
	transform: rotate(-1deg);
}

.musicart-step:nth-child(even) {
	transform: rotate(1deg);
}

.musicart-step:hover {
	transform: translateY(-4px) rotate(0);
}

.musicart-step.is-lime {
	background: var(--wp--preset--color--accent);
	color: var(--wp--preset--color--secondary-dark);
}

.musicart-step.is-indigo {
	background: var(--wp--preset--color--indigo);
	color: var(--wp--preset--color--base);
}

.musicart-step > * {
	margin: 0;
}

.musicart-step__num {
	font-family: var(--wp--preset--font-family--caveat);
	font-size: 3rem;
	font-weight: 700;
	line-height: 1;
	opacity: .85;
}

.musicart-step__label {
	font-size: var(--wp--preset--font-size--medium);
	font-weight: 700;
	line-height: 1.25;
}

.musicart-way__link {
	margin-top: auto;
	font-weight: 700;
}

.musicart-way__link a {
	text-decoration: none;
}

.musicart-ways .musicart-way.is-style-panel {
	display: flex;
	flex-direction: column;
	gap: .6rem;
}

.musicart-ways .musicart-way > * {
	margin-block: 0;
}

@media (max-width: 781px) {
	.musicart-step {
		min-height: 8rem;
	}
}

/* 9. Motion --------------------------------------------------------------- */

@media (prefers-reduced-motion: reduce) {
	*,
	*::before,
	*::after {
		transition-duration: .01ms !important;
		animation-duration: .01ms !important;
		scroll-behavior: auto !important;
	}
}
