/* Shared content styles: public site and WordPress editor. */
:root,
.editor-styles-wrapper {
	--color-brand: var(--wp--preset--color--brand, #5d1e03);
	--color-ink: var(--wp--preset--color--pine, #0f2e3b);
	--color-heritage: var(--wp--preset--color--cream, #f2ebd1);
	--color-nature: var(--wp--preset--color--olive, #898959);
	--color-action: var(--wp--preset--color--coral, #e65f3c);
	--color-glacier: var(--wp--preset--color--glacier, #bfe6f2);
	--color-background: var(--wp--preset--color--canvas, #fbf8ee);
	--color-surface: var(--wp--preset--color--snow, #fff);
	--color-text: var(--wp--preset--color--charcoal, #182126);
	--color-muted: #526168;
	--color-border: #ccd3d2;
	--font-display: var(--wp--preset--font-family--display, "Fraunces", Georgia, serif);
	--font-body: var(--wp--preset--font-family--body, "Manrope", Arial, sans-serif);
	--radius-pill: 999px;
	--radius-card: 24px;
	--shadow-soft: 0 20px 60px rgb(15 46 59 / 12%);
	--shadow-lift: 0 12px 28px rgb(15 46 59 / 18%);
}

*, *::before, *::after { box-sizing: border-box; }
body { margin: 0; font-family: var(--font-body); font-size: 1rem; line-height: 1.7; background: var(--color-background); color: var(--color-text); overflow-wrap: break-word; }
:where(h1, h2, h3, h4, h5, h6) { margin-block: 0 1.5rem; text-wrap: balance; }
:where(h1, h2) { font-family: var(--font-display); font-weight: 650; letter-spacing: -.035em; line-height: 1.12; }
:where(h1) { font-size: clamp(2.5rem, 5vw, 3.5rem); }
:where(h2) { font-size: clamp(1.875rem, 3.5vw, 2.375rem); }
:where(h3, h4, h5, h6) { font-family: var(--font-body); font-weight: 800; line-height: 1.4; letter-spacing: -.02em; }
:where(h3) { font-size: 1.1875rem; }
:where(p, ul, ol, figure, pre, table, blockquote) { margin-block: 0 1.5rem; }
:where(a) { color: var(--color-brand); text-decoration: underline; text-underline-offset: .2em; }
:where(a:hover) { color: var(--color-ink); text-decoration-thickness: 2px; }
:where(img, video, iframe) { max-width: 100%; }
:where(img) { height: auto; }
:where(figure) { margin-inline: 0; }
/* White halo and dark outline keep focus visible on light and dark surfaces. */
:focus-visible { outline: 3px solid var(--color-ink); outline-offset: 4px; box-shadow: 0 0 0 4px #fff; }
[hidden] { display: none !important; }

/* Buttons: dark text on the reference coral provides AA text contrast. */
:where(button, input, textarea, select) { font: inherit; }
:where(button, input[type="submit"], input[type="button"], input[type="reset"], .button, .btn, .wp-element-button, .wp-block-button__link) {
	display: inline-flex; min-height: 48px; align-items: center; justify-content: center; gap: .625rem;
	padding: .75rem 1.375rem; border: 1.5px solid transparent; border-radius: var(--radius-pill);
	background: var(--color-ink); color: #fff; font-weight: 800; line-height: 1.3; text-align: center; text-decoration: none;
	cursor: pointer; transition: transform .18s ease, box-shadow .18s ease, background-color .18s ease;
}
:where(button, input[type="submit"], input[type="button"], input[type="reset"], .button, .btn, .wp-element-button, .wp-block-button__link):hover { transform: translateY(-2px); box-shadow: var(--shadow-lift); background: #17485a; color: #fff; }
:where(button, input[type="submit"], .button, .btn, .wp-element-button, .wp-block-button__link):active { transform: none; box-shadow: inset 0 2px 6px rgb(0 0 0 / 18%); }
.btn-primary, .is-style-harfang-primary .wp-block-button__link { background: var(--color-action); border-color: transparent; color: #351000; }
.btn-primary:hover, .is-style-harfang-primary .wp-block-button__link:hover { background: #ed795b; color: #351000; }
.btn-secondary, .is-style-harfang-secondary .wp-block-button__link { background: var(--color-heritage); border-color: #dcd5bd; color: var(--color-brand); }
.btn-secondary:hover, .is-style-harfang-secondary .wp-block-button__link:hover { background: #fff; color: var(--color-brand); }
.btn-outline, .wp-block-button.is-style-outline > .wp-block-button__link { background: transparent; border: 1.5px solid currentColor; color: inherit; }
.btn-outline:hover, .wp-block-button.is-style-outline > .wp-block-button__link:hover { background: var(--color-ink); color: #fff; }
.btn-ghost, .is-style-harfang-ghost .wp-block-button__link { background: transparent; color: inherit; }
.btn-ghost:hover, .is-style-harfang-ghost .wp-block-button__link:hover { background: var(--color-glacier); color: var(--color-ink); }
.btn-sm { min-height: 38px; padding: .5rem 1.0625rem; font-size: .875rem; }
.btn-lg { min-height: 58px; padding: 1rem 1.75rem; }
.btn-icon { width: 48px; padding: .75rem; }
:where(button, input):disabled { opacity: .45; cursor: not-allowed; transform: none; box-shadow: none; }

/* Native forms, search, password protection and comments. */
:where(input:not([type="checkbox"]):not([type="radio"]):not([type="submit"]):not([type="button"]):not([type="reset"]):not([type="range"]):not([type="color"]), textarea, select) {
	min-height: 48px; max-width: 100%; padding: .75rem 1rem; border: 1px solid #728087; border-radius: 12px; background: #fff; color: var(--color-text);
}
:where(textarea) { width: 100%; min-height: 160px; resize: vertical; }
:where(input, textarea)::placeholder { color: var(--color-muted); opacity: 1; }
:where(input[type="checkbox"], input[type="radio"]) { accent-color: var(--color-ink); width: 1.15rem; height: 1.15rem; vertical-align: middle; }
:where(fieldset) { min-width: 0; padding: 1.5rem; border: 1px solid var(--color-border); border-radius: 12px; }
:where(legend, label) { font-weight: 600; }
:where(input, textarea, select)[aria-invalid="true"] { border: 2px solid var(--color-brand); }
.search-form, .wp-block-search__inside-wrapper { display: flex; align-items: end; flex-wrap: wrap; gap: .75rem; }
.search-form label { display: grid; flex: 1 1 220px; gap: .5rem; }
.search-form input { width: 100%; }
.wp-block-search__input { min-width: 0; }
.wp-block-search__button { margin-left: 0; }
.post-password-form label { display: inline-grid; gap: .5rem; margin-block: .5rem; }
.wpcf7-form-control-wrap { display: block; margin-top: .5rem; }
.wpcf7-form-control:not(.wpcf7-submit):not(.wpcf7-checkbox):not(.wpcf7-radio) { max-width: 100%; }
.wpcf7-not-valid-tip { color: var(--color-brand); font-weight: 700; }
.wpcf7 form .wpcf7-response-output { margin-inline: 0; padding: 1rem; border-radius: 12px; }

/* Editorial blocks and classic WordPress content. */
:where(blockquote) { margin-inline: 0; padding: 1.5rem 2rem; border-inline-start: 4px solid var(--color-nature); background: var(--color-heritage); color: var(--color-brand); font-family: var(--font-display); font-size: clamp(1.5rem, 3vw, 2.375rem); line-height: 1.35; }
:where(blockquote p:last-child) { margin-bottom: 0; }
:where(cite, .wp-block-pullquote cite) { display: block; margin-top: 1rem; font-family: var(--font-body); font-size: .875rem; font-style: normal; }
:where(.wp-block-pullquote) { border-block: 1px solid var(--color-nature); padding-block: 2rem; }
:where(.wp-block-pullquote blockquote) { border: 0; margin: 0; }
:where(pre, code, kbd, samp) { font-family: ui-monospace, Consolas, monospace; }
:where(pre) { overflow-x: auto; padding: 1.5rem; border-radius: 12px; background: var(--color-ink); color: #fff; }
:where(:not(pre) > code) { background: #e9eef0; color: #182126; padding: .125em .3em; border-radius: 4px; }
:where(table) { width: 100%; border-collapse: collapse; }
:where(th, td) { border: 1px solid var(--color-border); padding: .875rem; text-align: start; }
:where(th) { background: var(--color-heritage); color: var(--color-brand); }
:where(.wp-block-table) { overflow-x: auto; }
:where(.wp-block-table.is-style-stripes tbody tr:nth-child(odd)) { background: #f2ebd1; }
:where(figcaption, .wp-caption-text, .gallery-caption) { margin-top: .75rem; font-size: .875rem; }
:where(.wp-caption) { max-width: 100%; }
:where(.wp-block-image img, .wp-block-media-text__media img, .wp-block-video video) { border-radius: 16px; }
:where(.wp-block-image.is-style-rounded img) { border-radius: 999px; }
:where(.wp-block-cover) { padding: clamp(1.5rem, 5vw, 4rem); }
:where(.wp-block-cover a:not(.wp-element-button)) { color: inherit; }
:where(.wp-block-details) { border-block: 1px solid var(--color-border); padding-block: 1.25rem; }
:where(.wp-block-details summary) { cursor: pointer; font-weight: 800; }
:where(.wp-block-details[open] summary) { margin-bottom: 1rem; }
:where(hr) { margin-block: 2.5rem; border: 0; border-top: 1px solid var(--color-border); }
:where(.gallery) { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 180px), 1fr)); gap: 1rem; }
:where(.gallery-item) { margin: 0; }
.alignleft { float: left; margin: .5rem 1.5rem 1.5rem 0; }
.alignright { float: right; margin: .5rem 0 1.5rem 1.5rem; }
.aligncenter { display: block; margin-inline: auto; }
.is-style-harfang-card { padding: clamp(1.5rem, 4vw, 2rem); border: 1px solid var(--color-border); border-radius: var(--radius-card); background: var(--color-surface); box-shadow: var(--shadow-soft); }
.is-style-harfang-card h3 { font-family: var(--font-display); color: var(--color-brand); font-size: 1.75rem; font-weight: 650; }
.is-style-harfang-eyebrow { font-family: var(--font-body); font-size: .75rem; font-weight: 800; letter-spacing: .14em; line-height: 1.6; text-transform: uppercase; }
.is-style-harfang-eyebrow::before { content: ""; display: inline-block; width: 2rem; height: 2px; margin-inline-end: .75rem; vertical-align: middle; background: var(--color-action); }
.harfang-section { padding: clamp(2rem, 7vw, 5rem); }
.harfang-hero { padding: clamp(2rem, 7vw, 5rem); border-radius: var(--radius-card); }
.harfang-hero h2 { max-width: 900px; }
.harfang-hero p:not(.is-style-harfang-eyebrow) { max-width: 620px; }
@media (max-width: 600px) {
	.alignleft, .alignright { float: none; margin-inline: 0; }
	.search-form button { width: 100%; }
	.wp-block-search__button { flex-grow: 1; }
}
@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after { scroll-behavior: auto !important; transition: none !important; animation: none !important; }
}
