/*
 * Oahu Local Core: component styles for the plugin's blocks, shortcodes and forms.
 * Uses the Oahu Local theme's presets when present and falls back to the brand
 * values so the components still look right under another theme.
 * Contrast (checked): navy #02294F on white 14.66:1; orange-ink #BF3A06 on white 5.49:1;
 * muted #4A5160 on white 7.96:1; navy on brand orange #FE5518 4.56:1.
 */
:root {
	--ol-navy: var(--wp--preset--color--navy, #02294f);
	--ol-ink: var(--wp--preset--color--ink, #1a1f2b);
	--ol-orange: var(--wp--preset--color--orange, #fe5518);
	--ol-orange-ink: var(--wp--preset--color--orange-ink, #bf3a06);
	--ol-muted: var(--wp--preset--color--muted, #4a5160);
	--ol-base: var(--wp--preset--color--base, #fff);
	--ol-sand: var(--wp--preset--color--sand, #fbf7f1);
	--ol-tint: var(--wp--preset--color--tint, #fff1ea);
	--ol-sky: var(--wp--preset--color--sky, #eaf0f6);
	--ol-line: var(--wp--preset--color--line, #e6dfd3);
	--ol-error: #a61b1b;      /* 7.06:1 on white */
	--ol-error-bg: #fdeeee;
	--ol-success: #13622f;    /* 7.27:1 on white */
	--ol-success-bg: #e9f6ee;
	--ol-serif: var(--wp--preset--font-family--serif, Georgia, "Times New Roman", serif);
	--ol-sans: var(--wp--preset--font-family--sans, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif);
	--ol-radius: 6px;
	--ol-gap: clamp(1rem, 2.5vw, 1.75rem);
}

/* Utilities ------------------------------------------------------------- */
.ol-nl, .ol-form, .ol-sponsor, .ol-details, .ol-empty-state, .ol-disclosure, .ol-author-bio, .ol-event-filters { box-sizing: border-box; }
.ol-hp {
	position: absolute !important;
	left: -10000px !important;
	width: 1px;
	height: 1px;
	overflow: hidden;
}
.screen-reader-text {
	border: 0;
	clip-path: inset(50%);
	height: 1px;
	margin: -1px;
	overflow: hidden;
	padding: 0;
	position: absolute !important;
	width: 1px;
	word-wrap: normal !important;
}

/* Labels / kicker -------------------------------------------------------- */
.ol-kicker {
	display: flex;
	flex-wrap: wrap;
	gap: 0.35rem 0.75rem;
	align-items: center;
	margin: 0 0 0.5rem;
	font-family: var(--ol-sans);
	font-size: 0.8125rem;
	font-weight: 700;
	letter-spacing: 0.06em;
	line-height: 1.3;
	text-transform: uppercase;
}
.ol-label { color: var(--ol-muted); text-decoration: none; }
.ol-label--cat { color: var(--ol-orange-ink); }
/* WCAG 2.2 target size (2.5.8): keep linked labels at least 24px tall. */
a.ol-label--cat { display: inline-flex; align-items: center; min-height: 24px; }
a.ol-label--cat:hover, a.ol-label--cat:focus-visible { text-decoration: underline; text-underline-offset: 0.2em; }
.ol-label--event { color: var(--ol-navy); }
.ol-label--type {
	padding: 0.1rem 0.45rem;
	border: 1px solid currentColor;
	border-radius: 3px;
	color: var(--ol-navy);
}
.ol-label--opinion { color: var(--ol-navy); background: var(--ol-sky); border-color: var(--ol-sky); }
.ol-label--sponsored { color: var(--ol-ink); background: var(--ol-tint); border-color: var(--ol-orange); }
.ol-label--demo {
	padding: 0.1rem 0.45rem;
	border-radius: 3px;
	background: #fff3c4;
	color: #5c4400; /* 8.3:1 */
}
.ol-label--article { color: var(--ol-navy); }

/* Sections --------------------------------------------------------------- */
.ol-section { margin-block: 0 var(--wp--preset--spacing--60, 3rem); }
.ol-section:last-child { margin-bottom: 0; }
.ol-section__head {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	justify-content: space-between;
	gap: 0.25rem 1rem;
	margin-bottom: 1.25rem;
	padding-top: 0.75rem;
	border-top: 3px solid var(--ol-navy);
}
.ol-section__title {
	margin: 0;
	font-family: var(--ol-serif);
	font-size: clamp(1.375rem, 1.1rem + 1vw, 1.875rem);
	line-height: 1.15;
	color: var(--ol-navy);
}
.ol-section__more {
	font-family: var(--ol-sans);
	font-size: 0.9375rem;
	font-weight: 700;
	color: var(--ol-orange-ink);
	text-decoration: none;
}
.ol-section__more:hover, .ol-section__more:focus-visible { text-decoration: underline; text-underline-offset: 0.2em; }
.ol-section__footer { margin: 1rem 0 0; }
.ol-section__items { display: grid; gap: var(--ol-gap); margin: 0; padding: 0; }

/* Cards ------------------------------------------------------------------ */
.ol-card { position: relative; margin: 0; min-width: 0; }
.ol-card__media { display: block; overflow: hidden; border-radius: var(--ol-radius); background: var(--ol-sky); }
.ol-card__media img { display: block; width: 100%; height: 100%; object-fit: cover; transition: transform 0.3s ease; }
.ol-card:hover .ol-card__media img { transform: scale(1.02); }
.ol-card__body { min-width: 0; }
.ol-card__title {
	margin: 0 0 0.4rem;
	font-family: var(--ol-serif);
	font-size: 1.1875rem;
	font-weight: 600;
	line-height: 1.22;
	color: var(--ol-ink);
}
.ol-card__title a { color: inherit; text-decoration: none; }
.ol-card__title a:hover, .ol-card__title a:focus-visible { color: var(--ol-navy); text-decoration: underline; text-decoration-color: var(--ol-orange); text-decoration-thickness: 2px; text-underline-offset: 0.15em; }
.ol-card__dek { margin: 0 0 0.5rem; color: var(--ol-ink); font-size: 1rem; line-height: 1.5; }
.ol-card__meta { margin: 0; color: var(--ol-muted); font-size: 0.875rem; line-height: 1.4; }

/* Lead */
.ol-card--lead .ol-card__media { aspect-ratio: 16 / 10; margin-bottom: 1rem; }
.ol-card--lead .ol-card__title { font-size: clamp(1.75rem, 1.2rem + 2.4vw, 3rem); font-weight: 700; line-height: 1.08; letter-spacing: -0.01em; }
.ol-card--lead .ol-card__dek { font-size: 1.1875rem; color: var(--ol-ink); }

/* Compact (supporting, feature secondary) */
.ol-card--compact { display: grid; grid-template-columns: 1fr; gap: 0.75rem; padding-bottom: var(--ol-gap); border-bottom: 1px solid var(--ol-line); }
.ol-card--compact.has-media { grid-template-columns: minmax(0, 1fr) 96px; }
.ol-card--compact .ol-card__media { grid-column: 2; grid-row: 1; width: 96px; aspect-ratio: 1; }
.ol-card--compact .ol-card__body { grid-column: 1; grid-row: 1; }
.ol-section__items > .ol-card--compact:last-child { padding-bottom: 0; border-bottom: 0; }

/* Row (latest list) */
.ol-card--row { display: grid; gap: 1rem; padding-bottom: var(--ol-gap); border-bottom: 1px solid var(--ol-line); }
.ol-card--row.has-media { grid-template-columns: minmax(0, 1fr) 7.5rem; }
.ol-card--row .ol-card__media { grid-column: 2; grid-row: 1; aspect-ratio: 1; }
.ol-card--row .ol-card__body { grid-column: 1; grid-row: 1; }
.ol-card--row .ol-card__title { font-size: clamp(1.1875rem, 1rem + 0.6vw, 1.375rem); }
.ol-section__items > .ol-card--row:last-child { padding-bottom: 0; border-bottom: 0; }
@media (min-width: 600px) {
	.ol-card--row.has-media { grid-template-columns: 13rem minmax(0, 1fr); }
	.ol-card--row .ol-card__media { grid-column: 1; aspect-ratio: 3 / 2; }
	.ol-card--row.has-media .ol-card__body { grid-column: 2; }
}
@media (max-width: 599px) { .ol-card--row .ol-card__dek { display: none; } }

/* Tile */
.ol-card--tile .ol-card__media { aspect-ratio: 3 / 2; margin-bottom: 0.85rem; }
.ol-card--tile .ol-card__title { font-size: clamp(1.1875rem, 1rem + 0.6vw, 1.375rem); }

/* Numbered (guides) */
.ol-section--guides .ol-section__items { list-style: none; }
.ol-card--numbered { display: grid; grid-template-columns: 2.75rem minmax(0, 1fr); gap: 0.75rem; padding: 1rem 0; border-top: 1px solid var(--ol-line); }
.ol-card__num {
	font-family: var(--ol-serif);
	font-size: 2.25rem;
	font-weight: 700;
	line-height: 1;
	color: var(--ol-orange-ink);
}

/* Section layouts */
.ol-section--supporting .ol-section__items { gap: var(--ol-gap); }
.ol-section--list .ol-section__items { gap: var(--ol-gap); }
@media (min-width: 782px) {
	.ol-section--feature .ol-section__items { grid-template-columns: 3fr 2fr; grid-auto-rows: auto; }
	.ol-section--feature .ol-card--tile { grid-row: span 3; }
	.ol-section--feature .ol-card--tile .ol-card__title { font-size: clamp(1.375rem, 1.1rem + 1vw, 1.875rem); }
	.ol-section--row .ol-section__items,
	.ol-section--related .ol-section__items { grid-template-columns: repeat(3, minmax(0, 1fr)); }
	.ol-section--guides .ol-section__items { grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 2.5rem; row-gap: 0; }
}
.ol-section--related { padding-top: var(--wp--preset--spacing--50, 2rem); }

/* Empty states ----------------------------------------------------------- */
.ol-empty-state {
	padding: 1.25rem 1.5rem;
	border: 2px dashed var(--ol-line);
	border-radius: var(--ol-radius);
	background: var(--ol-sand);
	color: var(--ol-ink);
}
.ol-empty-state p { margin: 0 0 0.5rem; }
.ol-empty-state p:last-child { margin-bottom: 0; }
.ol-empty-state__link { font-weight: 700; color: var(--ol-orange-ink); }

/* Article parts ---------------------------------------------------------- */
.ol-breadcrumbs ol { display: flex; flex-wrap: wrap; gap: 0.25rem; margin: 0 0 1rem; padding: 0; list-style: none; font-size: 0.875rem; color: var(--ol-muted); }
.ol-breadcrumbs li { display: inline-flex; align-items: center; gap: 0.25rem; }
.ol-breadcrumbs li + li::before { content: "/"; color: var(--ol-line); padding-right: 0.25rem; }
.ol-breadcrumbs a { color: var(--ol-muted); }
.ol-breadcrumbs [aria-current] { color: var(--ol-ink); }

.ol-subheading {
	margin: 0.75rem 0 1rem;
	font-family: var(--ol-serif);
	font-size: clamp(1.1875rem, 1rem + 0.8vw, 1.5rem);
	font-weight: 400;
	line-height: 1.35;
	color: var(--ol-muted);
}
.ol-byline { margin: 1rem 0; padding-block: 0.75rem; border-block: 1px solid var(--ol-line); font-size: 0.9375rem; color: var(--ol-muted); }
.ol-byline p { margin: 0; }
.ol-byline__author { color: var(--ol-ink); font-weight: 700; }
.ol-byline__author a { color: inherit; }
.ol-byline__updated { margin-top: 0.35rem !important; color: var(--ol-ink); }

.ol-disclosure {
	margin: 1rem 0;
	padding: 0.85rem 1rem;
	border-left: 4px solid var(--ol-navy);
	border-radius: 0 var(--ol-radius) var(--ol-radius) 0;
	background: var(--ol-sky);
	font-size: 0.9375rem;
	line-height: 1.5;
}
.ol-disclosure p { margin: 0; }
.ol-disclosure__label { font-weight: 800; text-transform: uppercase; letter-spacing: 0.06em; font-size: 0.8125rem; margin-bottom: 0.2rem !important; color: var(--ol-navy); }
.ol-disclosure--sponsored { border-left-color: var(--ol-orange); background: var(--ol-tint); }
.ol-disclosure--sponsored .ol-disclosure__label { color: var(--ol-orange-ink); }

.ol-figure { margin: 1.5rem 0 2rem; }
.ol-figure img { display: block; width: 100%; height: auto; border-radius: var(--ol-radius); }
.ol-figure__caption { margin-top: 0.5rem; font-size: 0.875rem; line-height: 1.45; color: var(--ol-muted); }
.ol-figure__text { color: var(--ol-ink); }
.ol-figure__credit { text-transform: uppercase; letter-spacing: 0.04em; font-size: 0.75rem; }

.ol-demo-notice, .ol-note {
	margin: 0 0 1.5rem;
	padding: 0.85rem 1rem;
	border: 1px solid #e8cf6a;
	border-radius: var(--ol-radius);
	background: #fff8db;
	color: #3d2e00;
	font-size: 0.9375rem;
}
.ol-topics { margin: 2rem 0 1rem; font-size: 0.9375rem; }
.ol-topics__label { font-weight: 700; margin-right: 0.35rem; }
.ol-topics a { display: inline-block; margin: 0 0.35rem 0.35rem 0; padding: 0.2rem 0.65rem; border: 1px solid var(--ol-line); border-radius: 999px; color: var(--ol-navy); text-decoration: none; }
.ol-topics a:hover, .ol-topics a:focus-visible { border-color: var(--ol-navy); }
.ol-corrections { margin: 1rem 0 2rem; font-size: 0.9375rem; color: var(--ol-muted); }
.ol-author-bio {
	display: flex;
	gap: 1rem;
	align-items: flex-start;
	margin: 2rem 0;
	padding: 1.25rem;
	border-radius: var(--ol-radius);
	background: var(--ol-sand);
}
.ol-author-bio img { border-radius: 50%; flex: none; }
.ol-author-bio p { margin: 0 0 0.4rem; }
.ol-author-bio__name { font-weight: 700; color: var(--ol-navy); }

/* Events ----------------------------------------------------------------- */
.ol-event-list { margin: 0; padding: 0; list-style: none; }
.ol-event-item { display: grid; grid-template-columns: 3.5rem minmax(0, 1fr); gap: 0.85rem; align-items: start; padding: 0.85rem 0; border-bottom: 1px solid var(--ol-line); }
.ol-event-item:first-child { padding-top: 0; }
.ol-event-item__title { margin: 0 0 0.25rem; font-family: var(--ol-serif); font-size: 1.125rem; font-weight: 600; line-height: 1.25; }
.ol-event-item__title a { color: var(--ol-ink); text-decoration: none; }
.ol-event-item__title a:hover, .ol-event-item__title a:focus-visible { color: var(--ol-navy); text-decoration: underline; text-decoration-color: var(--ol-orange); text-underline-offset: 0.15em; }
.ol-event-item__meta { margin: 0; font-size: 0.875rem; line-height: 1.45; color: var(--ol-muted); }
.ol-date-badge {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	min-height: 3.5rem;
	border-radius: var(--ol-radius);
	background: var(--ol-navy);
	color: #fff;
	font-family: var(--ol-sans);
	font-weight: 700;
	line-height: 1;
	text-transform: uppercase;
}
.ol-date-badge__m { font-size: 0.75rem; letter-spacing: 0.08em; color: #ffd2c0; } /* 10.9:1 on navy */
.ol-date-badge__d { font-size: 1.5rem; margin-top: 0.15rem; }
.ol-event-list--row { display: grid; gap: var(--ol-gap); }
.ol-event-list--row .ol-event-item { display: block; padding: 0; border: 0; }
.ol-event-list--row .ol-card__media { aspect-ratio: 3 / 2; margin-bottom: 0.75rem; }
@media (min-width: 600px) { .ol-event-list--row { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1024px) { .ol-event-list--row { grid-template-columns: repeat(4, minmax(0, 1fr)); } }

.ol-status-pill, .ol-event-status {
	display: inline-block;
	padding: 0.1rem 0.45rem;
	border-radius: 3px;
	font-family: var(--ol-sans);
	font-size: 0.75rem;
	font-weight: 800;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	vertical-align: 0.15em;
	background: #fff3c4;
	color: #5c4400;
}
.ol-status-pill--canceled, .ol-event-status--canceled { background: var(--ol-error-bg); color: var(--ol-error); }
.ol-event-status { display: block; margin: 0.75rem 0; padding: 0.65rem 0.9rem; font-size: 0.9375rem; text-transform: none; letter-spacing: 0; font-weight: 400; }
.ol-event-status strong { text-transform: uppercase; letter-spacing: 0.04em; }
.ol-event-item--list .ol-status-pill, .ol-event-item .ol-label--demo { margin-right: 0.35rem; }
.ol-event-item .ol-label--demo { font-size: 0.75rem; font-family: var(--ol-sans); vertical-align: 0.15em; }

.ol-event-filters {
	display: flex;
	flex-wrap: wrap;
	gap: 0.75rem 1rem;
	align-items: flex-end;
	margin: 0 0 2rem;
	padding: 1rem;
	border-radius: var(--ol-radius);
	background: var(--ol-sky);
}
.ol-filter { display: flex; flex-direction: column; gap: 0.25rem; min-width: 10rem; flex: 1 1 10rem; }
.ol-filter label { font-size: 0.875rem; font-weight: 700; color: var(--ol-navy); }
.ol-filter select { min-height: 2.75rem; padding: 0.4rem 0.6rem; border: 1px solid var(--ol-muted); border-radius: var(--ol-radius); background: #fff; font: inherit; color: var(--ol-ink); }
.ol-event-day { margin-bottom: 2rem; }
.ol-event-day__title {
	margin: 0 0 0.85rem;
	padding-bottom: 0.4rem;
	border-bottom: 2px solid var(--ol-navy);
	font-family: var(--ol-sans);
	font-size: 0.9375rem;
	font-weight: 800;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--ol-navy);
}
.ol-events-switch { margin: 1.5rem 0 0; font-weight: 700; }

/* Event details */
.ol-details {
	padding: 1.25rem;
	border: 1px solid var(--ol-line);
	border-top: 4px solid var(--ol-orange);
	border-radius: var(--ol-radius);
	background: #fff;
}
.ol-details__title { margin: 0 0 0.75rem; font-family: var(--ol-sans); font-size: 0.9375rem; font-weight: 800; letter-spacing: 0.06em; text-transform: uppercase; color: var(--ol-navy); }
.ol-details dl { margin: 0; }
.ol-details__row { padding: 0.6rem 0; border-top: 1px solid var(--ol-line); }
.ol-details__row:first-child { border-top: 0; padding-top: 0; }
.ol-details dt { font-size: 0.8125rem; font-weight: 700; color: var(--ol-muted); text-transform: uppercase; letter-spacing: 0.04em; }
.ol-details dd { margin: 0.15rem 0 0; }
.ol-details__tz { font-size: 0.8125rem; color: var(--ol-muted); }
.ol-details__cta { margin: 1rem 0 0; }
.ol-details__cta .wp-element-button, .ol-ticket-link { display: inline-block; text-decoration: none; }

/* Pagination (events) */
.ol-pagination ul.page-numbers { display: flex; flex-wrap: wrap; gap: 0.4rem; margin: 2rem 0 0; padding: 0; list-style: none; }
.ol-pagination .page-numbers a, .ol-pagination .page-numbers span.page-numbers {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 2.75rem;
	min-height: 2.75rem;
	padding: 0 0.75rem;
	border: 1px solid var(--ol-line);
	border-radius: 999px;
	color: var(--ol-navy);
	text-decoration: none;
	font-weight: 700;
}
.ol-pagination .page-numbers .current { background: var(--ol-navy); border-color: var(--ol-navy); color: #fff; }

/* Sponsor slot ----------------------------------------------------------- */
.ol-sponsor {
	margin: 2rem 0 0;
	padding: 1rem 1.25rem;
	border: 1px solid var(--ol-line);
	border-radius: var(--ol-radius);
	background: #fff;
	font-size: 0.9375rem;
}
.ol-sponsor__label { margin: 0 0 0.5rem; font-size: 0.75rem; font-weight: 800; letter-spacing: 0.08em; text-transform: uppercase; color: var(--ol-muted); }
.ol-sponsor__logo { display: block; max-height: 4rem; width: auto; margin-bottom: 0.5rem; }
.ol-sponsor__name, .ol-sponsor__text { display: block; }
.ol-sponsor__link { text-decoration: none; }
.ol-sponsor__name { margin: 0 0 0.25rem; font-weight: 700; color: var(--ol-ink); }
.ol-sponsor__text, .ol-sponsor__pitch { margin: 0 0 0.5rem; }
.ol-sponsor__note { margin: 0.5rem 0 0; font-size: 0.8125rem; color: var(--ol-muted); }
.ol-sponsor__link { font-weight: 700; color: var(--ol-orange-ink); }
.ol-sponsor img { max-width: 100%; height: auto; }
.ol-sponsor--placeholder { border-style: dashed; background: var(--ol-sand); }

/* Newsletter ------------------------------------------------------------- */
.ol-nl { font-family: var(--ol-sans); }
.ol-nl__eyebrow { margin: 0 0 0.35rem; font-size: 0.8125rem; font-weight: 800; letter-spacing: 0.08em; text-transform: uppercase; color: var(--ol-orange-ink); }
.ol-nl__title { margin: 0 0 0.5rem; font-family: var(--ol-serif); font-size: clamp(1.375rem, 1.1rem + 1vw, 1.875rem); line-height: 1.15; color: var(--ol-navy); }
.ol-nl__desc { margin: 0 0 1rem; }
.ol-nl__form { margin: 0; }
.ol-nl__label { display: block; margin-bottom: 0.35rem; font-weight: 700; font-size: 0.9375rem; }
.ol-nl__row { display: flex; flex-wrap: wrap; gap: 0.5rem; }
.ol-nl__input {
	flex: 1 1 14rem;
	min-width: 0;
	min-height: 3rem;
	padding: 0.6rem 0.85rem;
	border: 2px solid var(--ol-muted);
	border-radius: var(--ol-radius);
	background: #fff;
	color: var(--ol-ink);
	font: inherit;
	font-size: 1.0625rem; /* >= 16px: no iOS zoom */
}
.ol-nl__input[aria-invalid="true"] { border-color: var(--ol-error); }
.ol-nl__button { flex: 0 0 auto; min-height: 3rem; cursor: pointer; }
.ol-nl__button[disabled] { opacity: 0.7; cursor: progress; }
.ol-nl__note { margin: 0.6rem 0 0; font-size: 0.875rem; color: var(--ol-muted); }
.ol-nl__note a { color: inherit; }
.ol-nl__msg:empty { display: none; }
.ol-nl__msg { margin: 0.75rem 0 0; padding: 0.65rem 0.85rem; border-radius: var(--ol-radius); font-weight: 600; }
.ol-nl__msg.is-success { background: var(--ol-success-bg); color: var(--ol-success); }
.ol-nl__msg.is-info, .ol-nl__msg.is-already { background: var(--ol-sky); color: var(--ol-navy); }
.ol-nl__msg.is-error, .ol-nl__msg.is-invalid { background: var(--ol-error-bg); color: var(--ol-error); }
.ol-turnstile { margin-top: 0.75rem; }

.ol-nl--card { padding: clamp(1.25rem, 3vw, 2rem); border-radius: 10px; background: #fff; box-shadow: 0 1px 2px rgb(2 41 79 / 8%), 0 8px 24px rgb(2 41 79 / 8%); border-top: 4px solid var(--ol-orange); }
.ol-nl--inline { margin: 2.5rem 0; padding: 1.25rem 1.5rem; border-radius: var(--ol-radius); background: var(--ol-tint); border-left: 4px solid var(--ol-orange); }
.ol-nl--inline .ol-nl__title { font-size: 1.375rem; }
.ol-nl--page { padding: clamp(1.25rem, 3vw, 2.25rem); border-radius: 10px; background: var(--ol-sand); }
.ol-nl--band { padding-block: clamp(2rem, 5vw, 3.5rem); padding-inline: var(--wp--style--root--padding-left, 1.25rem); background: var(--ol-navy); color: #fff; }
.ol-nl--band > * { max-width: 44rem; margin-inline: auto; }
.ol-nl--band .ol-nl__eyebrow { color: #ffb08f; } /* 7.9:1 on navy */
.ol-nl--band .ol-nl__title { color: #fff; }
.ol-nl--band .ol-nl__note, .ol-nl--band .ol-nl__note a { color: #d6e0eb; }
.ol-nl--band .ol-nl__input { border-color: #fff; }
.ol-nl--band .ol-nl__button.wp-element-button,
.ol-nl--band .ol-nl__button { background: var(--ol-orange); color: var(--ol-navy); } /* 4.56:1 */
.ol-nl--band .ol-nl__msg.is-success { background: #fff; }
.ol-nl--band :focus-visible { outline-color: #fff; }

/* Forms ------------------------------------------------------------------ */
.ol-form { max-width: 44rem; font-family: var(--ol-sans); }
.ol-form__intro { margin-bottom: 1.25rem; }
.ol-form__required-note { font-size: 0.9375rem; color: var(--ol-muted); }
.ol-req { color: var(--ol-error); font-weight: 700; }
.ol-form__grid { display: grid; gap: 1.1rem 1.25rem; }
@media (min-width: 600px) {
	.ol-form__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.ol-form__grid > * { grid-column: 1 / -1; }
	.ol-form__grid > .ol-field--half { grid-column: auto; }
}
.ol-form label, .ol-form legend { display: block; margin-bottom: 0.3rem; font-weight: 700; color: var(--ol-ink); }
.ol-form fieldset { margin: 0; padding: 0; border: 0; min-width: 0; }
.ol-form input[type="text"], .ol-form input[type="email"], .ol-form input[type="tel"], .ol-form input[type="url"],
.ol-form input[type="date"], .ol-form input[type="time"], .ol-form input[type="number"], .ol-form select, .ol-form textarea {
	box-sizing: border-box;
	width: 100%;
	min-height: 2.9rem;
	padding: 0.55rem 0.75rem;
	border: 2px solid var(--ol-muted);
	border-radius: var(--ol-radius);
	background: #fff;
	color: var(--ol-ink);
	font: inherit;
	font-size: 1.0625rem;
}
.ol-form textarea { min-height: 9rem; resize: vertical; }
.ol-form [aria-invalid="true"] { border-color: var(--ol-error) !important; background: #fffafa; }
.ol-field__help { margin: 0.3rem 0 0; font-size: 0.875rem; color: var(--ol-muted); }
.ol-field__error { margin: 0.35rem 0 0; font-size: 0.9375rem; font-weight: 700; color: var(--ol-error); }
.ol-field__error::before { content: "⚠ "; }
.ol-check { display: flex !important; gap: 0.6rem; align-items: flex-start; font-weight: 400 !important; }
.ol-check input { width: 1.25rem; height: 1.25rem; margin: 0.15rem 0 0; flex: none; accent-color: var(--ol-navy); }
.ol-form__privacy { margin-top: 1rem; font-size: 0.875rem; color: var(--ol-muted); }
.ol-form button[type="submit"] { margin-top: 1.25rem; min-height: 3rem; cursor: pointer; }
.ol-form__summary {
	margin: 0 0 1.5rem;
	padding: 1rem 1.25rem;
	border: 2px solid var(--ol-error);
	border-radius: var(--ol-radius);
	background: var(--ol-error-bg);
	color: var(--ol-ink);
}
.ol-form__summary:focus { outline: 3px solid var(--ol-error); outline-offset: 2px; }
.ol-form__summary h2, .ol-form__summary p:first-child { margin-top: 0; font-size: 1.125rem; color: var(--ol-error); }
.ol-form__summary ul { margin: 0.5rem 0 0; padding-left: 1.25rem; }
.ol-form__summary a { color: var(--ol-error); font-weight: 700; }
.ol-form__success {
	padding: 1.25rem 1.5rem;
	border-left: 4px solid var(--ol-success);
	border-radius: 0 var(--ol-radius) var(--ol-radius) 0;
	background: var(--ol-success-bg);
}
.ol-form__success:focus { outline: 3px solid var(--ol-success); outline-offset: 2px; }
.ol-form__success h2 { margin-top: 0; color: var(--ol-success); font-size: 1.375rem; }
.ol-button--small { min-height: 2.75rem; padding: 0.5rem 1.1rem !important; }
.ol-search-summary { margin: 0.25rem 0 1.5rem; color: var(--ol-muted); }

/* Preview banner (logged-in admins only) ------------------------------- */
.ol-preview-banner {
	position: sticky;
	top: 0;
	z-index: 100;
	margin: 0;
	padding: 0.5rem 1rem;
	background: #fff3c4;
	color: #3d2e00;
	font: 600 0.875rem/1.4 var(--ol-sans);
	text-align: center;
	border-bottom: 1px solid #e8cf6a;
}
.admin-bar .ol-preview-banner { top: 32px; }
@media (max-width: 782px) { .admin-bar .ol-preview-banner { top: 46px; } }
.ol-preview-banner a { color: inherit; }

@media (prefers-reduced-motion: reduce) {
	.ol-card__media img { transition: none; }
	.ol-card:hover .ol-card__media img { transform: none; }
}
