/* ==========================================================================
   QACanada theme — main stylesheet
   --------------------------------------------------------------------------
   1. Fonts (self-hosted, SIL OFL)
   2. Design tokens
   3. Base / reset
   4. Typography
   5. Layout helpers
   6. Accessibility utilities
   7. Site header & navigation
   8. Buttons & links
   9. Site footer
   10. Standard (non-Elementor) content
   11. Elementor integration & brand components
   12. Mapping-matrix motif
   13. Contact form
   14. Print & reduced motion
   ========================================================================== */

/* 1. Fonts ---------------------------------------------------------------- */
@font-face {
	font-family: "Source Serif 4";
	font-style: normal;
	font-weight: 200 900;
	font-display: swap;
	src: url("../fonts/source-serif-4-latin-wght-normal.woff2") format("woff2");
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
	font-family: "Source Serif 4";
	font-style: normal;
	font-weight: 200 900;
	font-display: swap;
	src: url("../fonts/source-serif-4-latin-ext-wght-normal.woff2") format("woff2");
	unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
	font-family: "Source Sans 3";
	font-style: normal;
	font-weight: 200 900;
	font-display: swap;
	src: url("../fonts/source-sans-3-latin-wght-normal.woff2") format("woff2");
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
	font-family: "Source Sans 3";
	font-style: normal;
	font-weight: 200 900;
	font-display: swap;
	src: url("../fonts/source-sans-3-latin-ext-wght-normal.woff2") format("woff2");
	unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
	font-family: "Source Sans 3";
	font-style: italic;
	font-weight: 200 900;
	font-display: swap;
	src: url("../fonts/source-sans-3-latin-wght-italic.woff2") format("woff2");
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
	font-family: "Source Sans 3";
	font-style: italic;
	font-weight: 200 900;
	font-display: swap;
	src: url("../fonts/source-sans-3-latin-ext-wght-italic.woff2") format("woff2");
	unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* 2. Design tokens --------------------------------------------------------
   Keep in sync with docs/DESIGN-SYSTEM.md and inc/elementor.php (kit colours).
   ------------------------------------------------------------------------ */
:root {
	/* Colour */
	--qac-ink: #0f1f38;        /* deepest navy: headings, dark sections */
	--qac-navy: #1b3358;       /* primary brand navy: buttons, header rule */
	--qac-navy-soft: #2c4a78;  /* hover / secondary navy */
	--qac-teal: #17706a;       /* accent: links, highlights, aligned cells */
	--qac-teal-dark: #0f5752;  /* accent hover */
	--qac-teal-tint: #e3efed;  /* accent wash for callouts */
	--qac-ochre: #9a6a12;      /* "requires expert review" state only */
	--qac-paper: #f6f7f4;      /* section alternate background */
	--qac-white: #ffffff;
	--qac-line: #d5dbe2;       /* borders, rules */
	--qac-text: #26313f;       /* body text */
	--qac-muted: #536072;      /* secondary text (AA on white and paper) */
	--qac-on-dark: #e9eef5;    /* body text on navy */
	--qac-on-dark-muted: #b7c3d4;

	/* Type */
	--qac-font-serif: "Source Serif 4", "Iowan Old Style", "Palatino Linotype", Georgia, serif;
	--qac-font-sans: "Source Sans 3", "Segoe UI", system-ui, -apple-system, "Helvetica Neue", Arial, sans-serif;
	--qac-fs-body: 1.125rem;   /* 18px */
	--qac-fs-small: 0.9375rem; /* 15px */
	--qac-fs-h1: clamp(2.375rem, 1.6rem + 3vw, 3.5rem);
	--qac-fs-h2: clamp(1.875rem, 1.45rem + 1.6vw, 2.5rem);
	--qac-fs-h3: clamp(1.375rem, 1.2rem + 0.6vw, 1.625rem);
	--qac-fs-h4: 1.25rem;
	--qac-lh-body: 1.6;
	--qac-lh-heading: 1.15;

	/* Space (8px base) */
	--qac-space-1: 0.5rem;
	--qac-space-2: 1rem;
	--qac-space-3: 1.5rem;
	--qac-space-4: 2rem;
	--qac-space-5: 3rem;
	--qac-space-6: 4.5rem;
	--qac-space-7: 6.5rem;

	/* Shape */
	--qac-radius: 4px;
	--qac-radius-lg: 6px;
	--qac-shadow: 0 1px 2px rgba(15, 31, 56, 0.06), 0 8px 24px -12px rgba(15, 31, 56, 0.18);
	--qac-container: 1200px;
	--qac-measure: 68ch;
	--qac-header-h: 76px;
	--qac-focus: 3px solid #17706a;
}

/* 3. Base ---------------------------------------------------------------- */
*,
*::before,
*::after { box-sizing: border-box; }

html {
	-webkit-text-size-adjust: 100%;
	text-size-adjust: 100%;
	scroll-padding-top: calc(var(--qac-header-h) + 1rem);
}

body {
	margin: 0;
	background: var(--qac-white);
	color: var(--qac-text);
	font-family: var(--qac-font-sans);
	font-size: var(--qac-fs-body);
	line-height: var(--qac-lh-body);
	font-kerning: normal;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	overflow-x: hidden;
}

img,
svg,
video { max-width: 100%; height: auto; }

img { border-style: none; }

hr {
	border: 0;
	border-top: 1px solid var(--qac-line);
	margin: var(--qac-space-5) 0;
}

/* 4. Typography ---------------------------------------------------------- */
h1, h2, h3, h4, h5, h6 {
	font-family: var(--qac-font-serif);
	color: var(--qac-ink);
	font-weight: 600;
	line-height: var(--qac-lh-heading);
	letter-spacing: -0.01em;
	margin: 0 0 0.5em;
	text-wrap: balance;
}
h1 { font-size: var(--qac-fs-h1); font-weight: 600; letter-spacing: -0.018em; }
h2 { font-size: var(--qac-fs-h2); }
h3 { font-size: var(--qac-fs-h3); }
h4 { font-size: var(--qac-fs-h4); font-family: var(--qac-font-sans); font-weight: 650; letter-spacing: 0; }
h5, h6 { font-size: 1.0625rem; font-family: var(--qac-font-sans); font-weight: 650; letter-spacing: 0; }

p, ul, ol, dl, blockquote, figure, table { margin: 0 0 1.1em; }
p { text-wrap: pretty; }
ul, ol { padding-left: 1.25em; }
li { margin-bottom: 0.35em; }
li::marker { color: var(--qac-teal); }
strong, b { font-weight: 650; color: var(--qac-ink); }
small { font-size: var(--qac-fs-small); }

blockquote {
	border-left: 3px solid var(--qac-teal);
	padding: 0.25em 0 0.25em 1.25em;
	margin-left: 0;
	font-family: var(--qac-font-serif);
	font-size: 1.25rem;
	color: var(--qac-ink);
}

table { width: 100%; border-collapse: collapse; font-size: var(--qac-fs-small); }
th, td { text-align: left; padding: 0.6em 0.75em; border-bottom: 1px solid var(--qac-line); vertical-align: top; }
th { font-weight: 650; color: var(--qac-ink); border-bottom-width: 2px; }

code, kbd, pre { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: 0.9em; }

/* Links */
a {
	color: var(--qac-teal);
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 0.18em;
	transition: color 0.15s ease, text-decoration-color 0.15s ease;
}
a:hover { color: var(--qac-teal-dark); text-decoration-thickness: 2px; }

/* 5. Layout helpers ------------------------------------------------------ */
.qac-container {
	width: 100%;
	max-width: calc(var(--qac-container) + 2 * var(--qac-space-3));
	margin-inline: auto;
	padding-inline: var(--qac-space-3);
}
.qac-narrow { max-width: calc(var(--qac-measure) + 2 * var(--qac-space-3)); }

.site { min-height: 100vh; display: flex; flex-direction: column; }
.site-main { flex: 1 0 auto; }

/* 6. Accessibility ------------------------------------------------------- */
.screen-reader-text {
	border: 0;
	clip: rect(1px, 1px, 1px, 1px);
	clip-path: inset(50%);
	height: 1px;
	margin: -1px;
	overflow: hidden;
	padding: 0;
	position: absolute !important;
	width: 1px;
	word-wrap: normal !important;
}
.screen-reader-text:focus {
	clip: auto !important;
	clip-path: none;
	height: auto;
	width: auto;
	margin: 0;
	z-index: 100000;
	left: 1rem;
	top: 1rem;
	padding: 0.75rem 1.25rem;
	background: var(--qac-white);
	color: var(--qac-ink);
	font-weight: 650;
	box-shadow: var(--qac-shadow);
	text-decoration: none;
}

:focus { outline: none; }
:focus-visible {
	outline: var(--qac-focus);
	outline-offset: 3px;
	border-radius: 2px;
}
.qac-on-dark :focus-visible,
.site-footer :focus-visible { outline-color: #7fd0c8; }

/* 7. Site header --------------------------------------------------------- */
.site-header {
	position: sticky;
	top: 0;
	z-index: 50;
	background: rgba(255, 255, 255, 0.97);
	border-bottom: 1px solid var(--qac-line);
}
@supports (backdrop-filter: blur(6px)) {
	.site-header { background: rgba(255, 255, 255, 0.9); backdrop-filter: saturate(1.4) blur(8px); }
}
body.admin-bar .site-header { top: 32px; }
@media (max-width: 782px) { body.admin-bar .site-header { top: 46px; } }
@media (max-width: 600px) { body.admin-bar .site-header { top: 0; } }

.site-header__inner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--qac-space-3);
	min-height: var(--qac-header-h);
}

.site-branding { display: flex; align-items: center; flex-shrink: 0; }
.site-branding a { text-decoration: none; display: inline-flex; align-items: center; }
.site-branding .custom-logo { max-height: 44px; width: auto; display: block; }
.qac-wordmark { display: block; height: 36px; width: auto; }
.site-title {
	font-family: var(--qac-font-serif);
	font-size: 1.5rem;
	font-weight: 650;
	color: var(--qac-ink);
	margin: 0;
	line-height: 1;
}

/* Primary navigation */
.primary-nav { display: flex; align-items: center; gap: var(--qac-space-3); }
.primary-nav__menu,
.primary-nav__menu ul { list-style: none; margin: 0; padding: 0; }
.primary-nav__menu { display: flex; align-items: center; gap: 0.25rem; }
.primary-nav__menu > li { position: relative; margin: 0; }
.primary-nav__menu a {
	display: block;
	padding: 0.5rem 0.75rem;
	color: var(--qac-ink);
	font-weight: 550;
	font-size: 1.0625rem;
	text-decoration: none;
	border-radius: var(--qac-radius);
}
.primary-nav__menu a:hover { color: var(--qac-teal); }
.primary-nav__menu .current-menu-item > a,
.primary-nav__menu .current-menu-ancestor > a,
.primary-nav__menu .current_page_item > a,
.primary-nav__menu .current_page_ancestor > a {
	color: var(--qac-teal);
	box-shadow: inset 0 -2px 0 var(--qac-teal);
	border-radius: 0;
}

/* Sub-menus (desktop) */
.primary-nav__menu .sub-menu {
	position: absolute;
	left: 0;
	top: 100%;
	min-width: 280px;
	background: var(--qac-white);
	border: 1px solid var(--qac-line);
	border-top: 3px solid var(--qac-teal);
	border-radius: 0 0 var(--qac-radius) var(--qac-radius);
	box-shadow: var(--qac-shadow);
	padding: 0.5rem;
	visibility: hidden;
	opacity: 0;
	transform: translateY(4px);
	transition: opacity 0.15s ease, transform 0.15s ease, visibility 0.15s;
}
.primary-nav__menu li:hover > .sub-menu,
.primary-nav__menu li:focus-within > .sub-menu,
.primary-nav__menu li.is-open > .sub-menu {
	visibility: visible;
	opacity: 1;
	transform: none;
}
.primary-nav__menu .sub-menu a { font-weight: 500; padding: 0.55rem 0.75rem; }
.primary-nav__menu .sub-menu a:hover { background: var(--qac-paper); }
.primary-nav__menu .sub-menu .current-menu-item > a { box-shadow: inset 3px 0 0 var(--qac-teal); }

.submenu-toggle {
	display: none;
	background: none;
	border: 0;
	padding: 0.5rem;
	color: var(--qac-ink);
	cursor: pointer;
}
.menu-item-has-children > a { padding-right: 0.5rem; }
.menu-item-has-children > a::after {
	content: "";
	display: inline-block;
	width: 0.42em;
	height: 0.42em;
	margin-left: 0.45em;
	border-right: 1.5px solid currentColor;
	border-bottom: 1.5px solid currentColor;
	transform: translateY(-0.2em) rotate(45deg);
}

.header-cta { flex-shrink: 0; }

.menu-toggle {
	display: none;
	align-items: center;
	gap: 0.5rem;
	background: none;
	border: 1px solid var(--qac-line);
	border-radius: var(--qac-radius);
	padding: 0.5rem 0.85rem;
	font: inherit;
	font-weight: 600;
	font-size: 1rem;
	color: var(--qac-ink);
	cursor: pointer;
}
.menu-toggle__icon,
.menu-toggle__icon::before,
.menu-toggle__icon::after {
	display: block;
	width: 18px;
	height: 2px;
	background: currentColor;
	position: relative;
	transition: transform 0.2s ease, background 0.2s ease;
}
.menu-toggle__icon::before,
.menu-toggle__icon::after { content: ""; position: absolute; left: 0; }
.menu-toggle__icon::before { top: -6px; }
.menu-toggle__icon::after { top: 6px; }
.menu-toggle[aria-expanded="true"] .menu-toggle__icon { background: transparent; }
.menu-toggle[aria-expanded="true"] .menu-toggle__icon::before { transform: translateY(6px) rotate(45deg); }
.menu-toggle[aria-expanded="true"] .menu-toggle__icon::after { transform: translateY(-6px) rotate(-45deg); }

@media (max-width: 1080px) {
	.menu-toggle { display: inline-flex; }
	.no-js .menu-toggle { display: none; }
	.primary-nav {
		position: absolute;
		left: 0;
		right: 0;
		top: 100%;
		background: var(--qac-white);
		border-bottom: 1px solid var(--qac-line);
		box-shadow: 0 16px 24px -16px rgba(15, 31, 56, 0.25);
		flex-direction: column;
		align-items: stretch;
		gap: 0;
		padding: var(--qac-space-2) var(--qac-space-3) var(--qac-space-3);
		max-height: calc(100vh - var(--qac-header-h));
		overflow-y: auto;
		display: none;
	}
	.primary-nav.is-open { display: flex; }
	.no-js .primary-nav { position: static; display: flex; box-shadow: none; border: 0; }
	.primary-nav__menu { flex-direction: column; align-items: stretch; gap: 0; }
	.primary-nav__menu > li { border-bottom: 1px solid var(--qac-line); display: flex; flex-wrap: wrap; align-items: center; }
	.primary-nav__menu > li > a { flex: 1; padding: 0.85rem 0.25rem; font-size: 1.125rem; }
	.primary-nav__menu .current-menu-item > a,
	.primary-nav__menu .current_page_item > a { box-shadow: none; }
	.menu-item-has-children > a::after { display: none; }
	.submenu-toggle { display: inline-flex; }
	.submenu-toggle svg { transition: transform 0.2s ease; }
	.submenu-toggle[aria-expanded="true"] svg { transform: rotate(180deg); }
	.primary-nav__menu .sub-menu {
		position: static;
		flex-basis: 100%;
		min-width: 0;
		box-shadow: none;
		border: 0;
		border-left: 2px solid var(--qac-teal);
		border-radius: 0;
		margin: 0 0 0.75rem 0.25rem;
		padding: 0 0 0 0.75rem;
		visibility: visible;
		opacity: 1;
		transform: none;
		display: none;
	}
	.primary-nav__menu li.is-open > .sub-menu { display: block; }
	.no-js .primary-nav__menu .sub-menu { display: block; }
	.primary-nav__menu li:hover > .sub-menu { visibility: visible; }
	.header-cta { margin-top: var(--qac-space-3); }
	.header-cta .qac-button { width: 100%; justify-content: center; }
}
@media (min-width: 1081px) {
	/* Desktop: a compact chevron button next to parent items keeps sub-menus keyboard-reachable. */
	.primary-nav__menu > li.menu-item-has-children { display: flex; align-items: center; }
	.primary-nav__menu .menu-item-has-children > a { padding-right: 0.15rem; }
	.primary-nav__menu .menu-item-has-children > a::after { display: none; }
	.primary-nav__menu .submenu-toggle { display: inline-flex; align-items: center; justify-content: center; min-width: 28px; min-height: 28px; padding: 0.35rem; border-radius: var(--qac-radius); }
	.primary-nav__menu .submenu-toggle:hover { color: var(--qac-teal); }
	.primary-nav__menu .submenu-toggle[aria-expanded="true"] svg { transform: rotate(180deg); }
}

/* 8. Buttons ------------------------------------------------------------- */
.qac-button,
.wp-element-button,
.wp-block-button__link,
button.qac-button,
input[type="submit"].qac-button {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	padding: 0.8rem 1.35rem;
	border-radius: var(--qac-radius);
	border: 1.5px solid var(--qac-navy);
	background: var(--qac-navy);
	color: var(--qac-white);
	font-family: var(--qac-font-sans);
	font-size: 1.0625rem;
	font-weight: 600;
	line-height: 1.2;
	text-decoration: none;
	cursor: pointer;
	transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease;
}
.qac-button:hover,
.wp-element-button:hover,
.wp-block-button__link:hover { background: var(--qac-ink); border-color: var(--qac-ink); color: var(--qac-white); text-decoration: none; }
.qac-button--outline { background: transparent; color: var(--qac-navy); }
.qac-button--outline:hover { background: var(--qac-navy); color: var(--qac-white); }
.qac-button--small { padding: 0.6rem 1rem; font-size: 1rem; }

/* 9. Site footer --------------------------------------------------------- */
.site-footer {
	background: var(--qac-ink);
	color: var(--qac-on-dark-muted);
	font-size: var(--qac-fs-small);
	margin-top: auto;
}
.site-footer a { color: var(--qac-on-dark); text-decoration-color: rgba(233, 238, 245, 0.35); }
.site-footer a:hover { color: var(--qac-white); text-decoration-color: currentColor; }
.site-footer__main {
	display: grid;
	grid-template-columns: minmax(0, 1.4fr) repeat(2, minmax(0, 1fr));
	gap: var(--qac-space-5);
	padding-block: var(--qac-space-6) var(--qac-space-5);
}
.site-footer__brand .qac-wordmark { height: 34px; margin-bottom: var(--qac-space-3); }
.site-footer__brand .custom-logo { max-height: 40px; width: auto; filter: brightness(0) invert(1); margin-bottom: var(--qac-space-3); }
.site-footer__tagline {
	font-family: var(--qac-font-serif);
	color: var(--qac-white);
	font-size: 1.25rem;
	line-height: 1.35;
	max-width: 21ch;
	margin-bottom: var(--qac-space-2);
}
.site-footer__heading {
	font-family: var(--qac-font-sans);
	font-size: 1rem;
	font-weight: 650;
	color: var(--qac-white);
	margin: 0 0 var(--qac-space-2);
	letter-spacing: 0;
}
.site-footer ul { list-style: none; padding: 0; margin: 0; }
.site-footer li { margin-bottom: 0.55rem; }
.site-footer__contact p { margin-bottom: 0.5rem; }
.site-footer__bottom {
	border-top: 1px solid rgba(233, 238, 245, 0.14);
	padding-block: var(--qac-space-3);
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	gap: var(--qac-space-2);
}
.site-footer__bottom ul { display: flex; flex-wrap: wrap; gap: var(--qac-space-3); }
.site-footer__bottom li { margin: 0; }
.site-footer__ack { max-width: 70ch; margin: 0; }

@media (max-width: 860px) {
	.site-footer__main { grid-template-columns: 1fr 1fr; gap: var(--qac-space-4); }
	.site-footer__brand { grid-column: 1 / -1; }
}
@media (max-width: 520px) {
	.site-footer__main { grid-template-columns: 1fr; }
}

/* 10. Standard content (posts, Privacy Policy, non-Elementor pages) ------ */
.entry-header--page {
	background: var(--qac-paper);
	border-bottom: 1px solid var(--qac-line);
	padding-block: var(--qac-space-6) var(--qac-space-5);
}
.entry-header--page .entry-title { margin: 0; max-width: 22ch; }
.entry-header__lede { color: var(--qac-muted); font-size: 1.25rem; max-width: 60ch; margin: var(--qac-space-2) 0 0; }
.entry-content-wrap { padding-block: var(--qac-space-5) var(--qac-space-6); }
.entry-content > * { max-width: var(--qac-measure); }
.entry-content > .alignwide { max-width: var(--qac-container); }
.entry-content > .alignfull { max-width: none; }
.entry-content h2 { margin-top: 1.6em; font-size: clamp(1.625rem, 1.35rem + 1vw, 2rem); }
.entry-content h3 { margin-top: 1.4em; }
.entry-content img { border-radius: var(--qac-radius); }
.entry-meta { color: var(--qac-muted); font-size: var(--qac-fs-small); margin-top: var(--qac-space-2); }

.posts-list { display: grid; gap: var(--qac-space-4); padding-block: var(--qac-space-5); }
.post-summary { border-bottom: 1px solid var(--qac-line); padding-bottom: var(--qac-space-4); max-width: var(--qac-measure); }
.post-summary .entry-title { font-size: var(--qac-fs-h3); }
.post-summary .entry-title a { color: var(--qac-ink); text-decoration: none; }
.post-summary .entry-title a:hover { color: var(--qac-teal); }

.navigation.pagination .nav-links { display: flex; gap: 0.5rem; flex-wrap: wrap; }
.navigation.pagination .page-numbers { padding: 0.4rem 0.8rem; border: 1px solid var(--qac-line); border-radius: var(--qac-radius); text-decoration: none; }
.navigation.pagination .current { background: var(--qac-navy); color: var(--qac-white); border-color: var(--qac-navy); }

.search-form { display: flex; gap: 0.5rem; max-width: 520px; }
.search-form label { flex: 1; }

/* Form controls (shared) */
input[type="text"],
input[type="email"],
input[type="tel"],
input[type="url"],
input[type="search"],
select,
textarea {
	width: 100%;
	font: inherit;
	font-size: 1.0625rem;
	color: var(--qac-text);
	background: var(--qac-white);
	border: 1px solid #9aa5b3;
	border-radius: var(--qac-radius);
	padding: 0.7rem 0.85rem;
	transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
input:focus-visible,
select:focus-visible,
textarea:focus-visible { border-color: var(--qac-teal); outline: 2px solid var(--qac-teal); outline-offset: 1px; }

/* Placeholder marker: wrap unverified/business-specific text in
   <span class="qac-placeholder">…</span> so it is easy to find & replace. */
.qac-placeholder {
	background: #fff4d6;
	color: #5a3d00;
	border-bottom: 1px dashed #9a6a12;
	padding: 0 0.2em;
	border-radius: 2px;
}

/* 404 */
.error-404 { padding-block: var(--qac-space-7); }

/* 11. Elementor integration -----------------------------------------------
   The theme sets sensible defaults for Elementor's core widgets so pages
   look on-brand even before Elementor global styles are applied. Anything
   set in the Elementor panel overrides these defaults.
   ------------------------------------------------------------------------ */
.elementor-page .site-main,
.qac-elementor-page .site-main { overflow: clip; }

.elementor-widget-text-editor { color: var(--qac-text); }
.elementor-widget-text-editor p:last-child,
.elementor-widget-text-editor ul:last-child { margin-bottom: 0; }
.elementor-widget-heading .elementor-heading-title {
	font-family: var(--qac-font-serif);
	color: var(--qac-ink);
	font-weight: 600;
	line-height: var(--qac-lh-heading);
}
.elementor-widget-heading h1.elementor-heading-title { font-size: var(--qac-fs-h1); letter-spacing: -0.018em; }
.elementor-widget-heading h2.elementor-heading-title { font-size: var(--qac-fs-h2); letter-spacing: -0.01em; }
.elementor-widget-heading h3.elementor-heading-title { font-size: var(--qac-fs-h3); }
.elementor-widget-heading h4.elementor-heading-title { font-size: var(--qac-fs-h4); font-family: var(--qac-font-sans); font-weight: 650; }
.elementor-widget-heading p.elementor-heading-title { font-family: var(--qac-font-sans); }

/* Elementor buttons — default look matches .qac-button */
.elementor-widget-button .elementor-button {
	font-family: var(--qac-font-sans);
	font-size: 1.0625rem;
	font-weight: 600;
	line-height: 1.2;
	background-color: var(--qac-navy);
	color: var(--qac-white);
	border: 1.5px solid var(--qac-navy);
	border-radius: var(--qac-radius);
	padding: 0.85rem 1.4rem;
	transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease;
}
.elementor-widget-button .elementor-button:hover,
.elementor-widget-button .elementor-button:focus-visible { background-color: var(--qac-ink); border-color: var(--qac-ink); color: var(--qac-white); }
.elementor-widget-button.qac-btn-outline .elementor-button { background-color: transparent; color: var(--qac-navy); }
.elementor-widget-button.qac-btn-outline .elementor-button:hover { background-color: var(--qac-navy); color: var(--qac-white); }
.elementor-widget-button.qac-btn-light .elementor-button { background-color: var(--qac-white); border-color: var(--qac-white); color: var(--qac-ink); }
.elementor-widget-button.qac-btn-light .elementor-button:hover { background-color: var(--qac-teal-tint); border-color: var(--qac-teal-tint); }
.elementor-widget-button.qac-btn-ghost-light .elementor-button { background-color: transparent; border-color: rgba(255, 255, 255, 0.55); color: var(--qac-white); }
.elementor-widget-button.qac-btn-ghost-light .elementor-button:hover { border-color: var(--qac-white); background-color: rgba(255, 255, 255, 0.08); }
.elementor-widget-button.qac-btn-link .elementor-button {
	background: none;
	border: 0;
	padding: 0.25rem 0;
	color: var(--qac-teal);
	text-decoration: underline;
	text-underline-offset: 0.2em;
	text-decoration-thickness: 1px;
}
.elementor-widget-button.qac-btn-link .elementor-button:hover { color: var(--qac-teal-dark); text-decoration-thickness: 2px; background: none; }

/* Section modifiers (applied via Advanced → CSS Classes on containers) */
.qac-section { position: relative; }
.qac-bg-paper { background-color: var(--qac-paper); }
.qac-rule-top { border-top: 1px solid var(--qac-line); }

.qac-on-dark { color: var(--qac-on-dark); }
.qac-on-dark .elementor-heading-title,
.qac-on-dark h2,
.qac-on-dark h3,
.qac-on-dark h4 { color: var(--qac-white); }
.qac-on-dark .elementor-widget-text-editor,
.qac-on-dark p { color: var(--qac-on-dark); }
.qac-on-dark a:not(.elementor-button) { color: #9fded6; }
.qac-on-dark .qac-lede { color: var(--qac-on-dark); }

/* Lede / intro text */
.qac-lede,
.qac-lede .elementor-widget-container { font-size: 1.25rem; line-height: 1.55; color: var(--qac-muted); }
.qac-lede p { max-width: 60ch; }
.qac-measure .elementor-widget-container,
.qac-measure { max-width: var(--qac-measure); }
.qac-small,
.qac-small .elementor-widget-container { font-size: var(--qac-fs-small); color: var(--qac-muted); }

/* The brand promise line: three short statements set as one typographic unit */
.qac-promise .elementor-heading-title,
.qac-promise {
	font-family: var(--qac-font-sans) !important;
	font-size: 1.0625rem !important;
	font-weight: 600 !important;
	letter-spacing: 0.01em;
	color: var(--qac-teal) !important;
}

/* Cards (containers with class qac-card) */
.qac-card {
	background: var(--qac-white);
	border: 1px solid var(--qac-line);
	border-radius: var(--qac-radius-lg);
	transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.qac-card--accent { border-top: 3px solid var(--qac-teal); }
.qac-card--link:hover { border-color: #a9b6c6; box-shadow: var(--qac-shadow); }
.qac-card .elementor-heading-title { margin-bottom: 0; }
.qac-card h3.elementor-heading-title { font-size: 1.5rem; }

/* Icon boxes */
.elementor-widget-icon-box .elementor-icon-box-title { font-family: var(--qac-font-serif); color: var(--qac-ink); font-weight: 600; font-size: 1.375rem; line-height: 1.25; margin-bottom: 0.4rem; }
.elementor-widget-icon-box .elementor-icon-box-description { color: var(--qac-text); margin: 0; }
.elementor-widget-icon-box .elementor-icon { color: var(--qac-teal); fill: var(--qac-teal); font-size: 28px; }
.elementor-widget-icon-box .elementor-icon svg { width: 28px; height: 28px; }
.qac-on-dark .elementor-widget-icon-box .elementor-icon-box-title { color: var(--qac-white); }
.qac-on-dark .elementor-widget-icon-box .elementor-icon-box-description { color: var(--qac-on-dark); }
.qac-on-dark .elementor-widget-icon-box .elementor-icon { color: #7fd0c8; fill: #7fd0c8; }

/* Icon lists */
.elementor-widget-icon-list .elementor-icon-list-icon i,
.elementor-widget-icon-list .elementor-icon-list-icon svg { color: var(--qac-teal); fill: var(--qac-teal); }
.elementor-widget-icon-list .elementor-icon-list-text { color: var(--qac-text); }
.elementor-widget-icon-list .elementor-icon-list-icon { flex: 0 0 1.1em; width: 1.1em; justify-content: center; }
.elementor-widget-icon-list { --icon-vertical-align: flex-start; --icon-vertical-offset: 0.28em; }
.elementor-widget-icon-list .elementor-icon-list-item { align-items: flex-start !important; }


/* Numbered methodology steps (HTML widget or text) */
.qac-steps { list-style: none; margin: 0; padding: 0; counter-reset: qacstep; display: grid; gap: 0; }
.qac-steps > li {
	counter-increment: qacstep;
	display: grid;
	grid-template-columns: 3.25rem minmax(0, 1fr);
	gap: 0 var(--qac-space-3);
	padding: var(--qac-space-3) 0;
	border-top: 1px solid var(--qac-line);
	margin: 0;
}
.qac-steps > li:last-child { border-bottom: 1px solid var(--qac-line); }
.qac-steps > li::before {
	content: counter(qacstep, decimal-leading-zero);
	font-family: var(--qac-font-serif);
	font-size: 1.5rem;
	font-weight: 500;
	color: var(--qac-teal);
	line-height: 1.2;
	font-variant-numeric: lining-nums tabular-nums;
}
.qac-steps h3 { font-size: 1.3125rem; margin: 0 0 0.3rem; }
.qac-steps p { margin: 0; color: var(--qac-text); max-width: 64ch; }
.qac-steps .qac-steps__out { display: block; margin-top: 0.4rem; color: var(--qac-muted); font-size: var(--qac-fs-small); }

/* Compact horizontal process strip (home page) */
.qac-flow { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 0; margin: 0; padding: 0; list-style: none; counter-reset: qacflow; }
.qac-flow > li { counter-increment: qacflow; position: relative; padding: 1.25rem 1rem 0 0; border-top: 2px solid var(--qac-line); margin: 0; }
.qac-flow > li::before {
	content: counter(qacflow);
	position: absolute;
	top: -0.85rem;
	left: 0;
	width: 1.6rem;
	height: 1.6rem;
	display: grid;
	place-items: center;
	border-radius: 50%;
	background: var(--qac-white);
	border: 2px solid var(--qac-teal);
	color: var(--qac-teal);
	font-size: 0.875rem;
	font-weight: 700;
}
.qac-bg-paper .qac-flow > li::before { background: var(--qac-paper); }
.qac-flow > li.is-human::before { background: var(--qac-teal); color: var(--qac-white); }
.qac-flow strong { display: block; font-family: var(--qac-font-serif); font-weight: 600; font-size: 1.125rem; color: var(--qac-ink); margin-bottom: 0.25rem; line-height: 1.25; }
.qac-flow span { display: block; font-size: var(--qac-fs-small); color: var(--qac-muted); line-height: 1.45; }
@media (max-width: 1024px) {
	.qac-flow { grid-template-columns: repeat(3, minmax(0, 1fr)); row-gap: 2.25rem; }
}
@media (max-width: 600px) {
	.qac-flow { grid-template-columns: 1fr; row-gap: 0; border-left: 2px solid var(--qac-line); margin-left: 0.8rem; }
	.qac-flow > li { border-top: 0; padding: 0 0 1.5rem 1.6rem; }
	.qac-flow > li::before { top: 0; left: -0.9rem; }
}

/* Callouts */
.qac-callout {
	background: var(--qac-teal-tint);
	border-left: 3px solid var(--qac-teal);
	border-radius: 0 var(--qac-radius) var(--qac-radius) 0;
}
.qac-callout .elementor-widget-text-editor,
.qac-callout p { color: var(--qac-ink); }

/* Deliverable / definition lists inside text widgets */
.qac-deflist { display: grid; grid-template-columns: minmax(0, 14rem) minmax(0, 1fr); gap: 0; margin: 0; }
.qac-deflist dt, .qac-deflist dd { padding: 0.9rem 0; border-top: 1px solid var(--qac-line); margin: 0; }
.qac-deflist dt { font-weight: 650; color: var(--qac-ink); padding-right: var(--qac-space-3); }
.qac-deflist dd { color: var(--qac-text); }
@media (max-width: 640px) {
	.qac-deflist { grid-template-columns: 1fr; }
	.qac-deflist dd { border-top: 0; padding-top: 0; }
}

/* FAQ (native <details>) */
.qac-faq { border-top: 1px solid var(--qac-line); }
.qac-faq details { border-bottom: 1px solid var(--qac-line); }
.qac-faq summary {
	list-style: none;
	cursor: pointer;
	padding: 1.15rem 2.5rem 1.15rem 0;
	position: relative;
	font-family: var(--qac-font-serif);
	font-size: 1.25rem;
	font-weight: 600;
	color: var(--qac-ink);
	line-height: 1.35;
}
.qac-faq summary::-webkit-details-marker { display: none; }
.qac-faq summary::after {
	content: "";
	position: absolute;
	right: 0.5rem;
	top: 1.55rem;
	width: 0.6rem;
	height: 0.6rem;
	border-right: 2px solid var(--qac-teal);
	border-bottom: 2px solid var(--qac-teal);
	transform: rotate(45deg);
	transition: transform 0.2s ease;
}
.qac-faq details[open] summary::after { transform: translateY(0.25rem) rotate(-135deg); }
.qac-faq summary:hover { color: var(--qac-teal-dark); }
.qac-faq .qac-faq__answer { padding: 0 0 1.25rem; max-width: 70ch; }
.qac-faq .qac-faq__answer p:last-child { margin-bottom: 0; }

/* Comparison table (e.g., what AI does / what people do) */
.qac-split-table { width: 100%; border-collapse: collapse; font-size: 1rem; }
.qac-split-table th, .qac-split-table td { padding: 0.9rem 1rem; border-bottom: 1px solid var(--qac-line); }
.qac-split-table thead th { font-family: var(--qac-font-sans); font-size: 1rem; color: var(--qac-ink); border-bottom: 2px solid var(--qac-ink); background: transparent; }
.qac-split-table tbody th { font-weight: 650; color: var(--qac-ink); width: 26%; }
@media (max-width: 700px) {
	.qac-split-table thead { display: none; }
	.qac-split-table tr { display: block; border-bottom: 1px solid var(--qac-line); padding: 0.75rem 0; }
	.qac-split-table th, .qac-split-table td,
	.qac-split-table tbody th { display: block; border: 0; padding: 0.25rem 0; width: auto; }
	.qac-split-table td::before { content: attr(data-label) ": "; font-weight: 650; color: var(--qac-ink); }
}

/* 12. Mapping-matrix motif ------------------------------------------------
   The brand's signature graphic: a learning-outcome alignment matrix.
   Used in the hero (HTML widget) and as a legend on the mapping page.
   ------------------------------------------------------------------------ */
.qac-matrix {
	background: var(--qac-white);
	border: 1px solid var(--qac-line);
	border-radius: var(--qac-radius-lg);
	box-shadow: var(--qac-shadow);
	padding: 1.25rem 1.25rem 1rem;
	font-size: 0.875rem;
	color: var(--qac-text);
	max-width: 520px;
	margin-left: auto;
}
.qac-matrix__caption {
	display: flex;
	justify-content: space-between;
	align-items: baseline;
	gap: 1rem;
	margin: 0 0 0.85rem;
	font-weight: 650;
	color: var(--qac-ink);
	font-size: 0.9375rem;
}
.qac-matrix__caption span { font-weight: 400; color: var(--qac-muted); font-size: 0.8125rem; }
.qac-matrix table { margin: 0; font-size: 0.8125rem; table-layout: fixed; }
.qac-matrix th, .qac-matrix td { border: 0; padding: 0; }
.qac-matrix thead th {
	font-weight: 600;
	color: var(--qac-muted);
	text-align: center;
	padding-bottom: 0.45rem;
	font-size: 0.75rem;
}
.qac-matrix tbody th {
	font-weight: 500;
	color: var(--qac-text);
	padding: 0.2rem 0.6rem 0.2rem 0;
	line-height: 1.3;
}
.qac-matrix thead th:first-child { width: 42%; }
.qac-matrix td { text-align: center; padding: 3px; }
.qac-cell {
	display: block;
	height: 26px;
	border-radius: 3px;
	border: 1.5px solid var(--qac-line);
	background: var(--qac-white);
}
.qac-cell--full { background: var(--qac-teal); border-color: var(--qac-teal); }
.qac-cell--partial { border-color: var(--qac-teal); background: linear-gradient(135deg, var(--qac-teal) 0 50%, var(--qac-white) 50% 100%); }
.qac-cell--review { border: 1.5px dashed var(--qac-ochre); background: #fbf3e2; }
.qac-cell--gap { background: var(--qac-white); border-color: #c4ccd6; }
.qac-matrix__legend {
	display: flex;
	flex-wrap: wrap;
	gap: 0.4rem 1rem;
	list-style: none;
	padding: 0.85rem 0 0;
	margin: 0.85rem 0 0;
	border-top: 1px solid var(--qac-line);
	font-size: 0.8125rem;
	color: var(--qac-muted);
}
.qac-matrix__legend li { display: inline-flex; align-items: center; gap: 0.4rem; margin: 0; }
.qac-matrix__legend .qac-cell { width: 14px; height: 14px; border-radius: 2px; display: inline-block; }
.qac-matrix__note { margin: 0.6rem 0 0; font-size: 0.75rem; color: var(--qac-muted); }

@media (max-width: 1024px) { .qac-matrix { margin: 0; max-width: 560px; } }
@media (max-width: 480px) {
	.qac-matrix { padding: 1rem 0.75rem 0.75rem; }
	.qac-matrix thead th:first-child { width: 40%; }
	.qac-matrix tbody th { font-size: 0.75rem; }
	.qac-cell { height: 22px; }
}

/* Legend used standalone (mapping page) */
.qac-legend { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.9rem; }
.qac-legend li { display: grid; grid-template-columns: 28px minmax(0, 1fr); gap: 0.9rem; align-items: start; margin: 0; }
.qac-legend .qac-cell { width: 28px; height: 28px; }
.qac-legend strong { display: block; font-family: var(--qac-font-serif); font-size: 1.1875rem; font-weight: 600; }
.qac-legend span { color: var(--qac-text); }

/* Decorative grid motif for dark CTA bands (pure CSS, aria-hidden) */
.qac-grid-motif {
	background-image:
		linear-gradient(rgba(255, 255, 255, 0.05) 1px, transparent 1px),
		linear-gradient(90deg, rgba(255, 255, 255, 0.05) 1px, transparent 1px);
	background-size: 32px 32px;
	background-position: -1px -1px;
}

/* 13. Contact form (qacanada-contact plugin or theme fallback) ----------- */
.qac-contact-form { display: grid; gap: 1.1rem; max-width: 640px; }
.qac-contact-form .qac-field { display: grid; gap: 0.35rem; }
.qac-contact-form .qac-field--row { grid-template-columns: 1fr 1fr; gap: 1.1rem; }
.qac-contact-form label { font-weight: 600; color: var(--qac-ink); font-size: 1rem; }
.qac-contact-form .qac-req { color: var(--qac-muted); font-weight: 400; font-size: 0.9375rem; }
.qac-contact-form .qac-help { font-size: 0.9375rem; color: var(--qac-muted); margin: 0; }
.qac-contact-form textarea { min-height: 160px; resize: vertical; }
.qac-contact-form .qac-hp { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; overflow: hidden; }
.qac-contact-form .qac-consent { display: grid; grid-template-columns: auto 1fr; gap: 0.6rem; align-items: start; font-weight: 400; font-size: 0.9375rem; color: var(--qac-text); }
.qac-contact-form .qac-consent input { margin-top: 0.3rem; width: 1.1rem; height: 1.1rem; accent-color: var(--qac-teal); }
.qac-form-notice { padding: 1rem 1.25rem; border-radius: var(--qac-radius); margin-bottom: 1.25rem; border-left: 3px solid; }
.qac-form-notice--success { background: var(--qac-teal-tint); border-color: var(--qac-teal); color: var(--qac-ink); }
.qac-form-notice--error { background: #fdecea; border-color: #b3261e; color: #5c1410; }
.qac-form-notice ul { margin: 0.5rem 0 0; }
.qac-field-error { color: #b3261e; font-size: 0.9375rem; }
[aria-invalid="true"] { border-color: #b3261e !important; }
@media (max-width: 560px) { .qac-contact-form .qac-field--row { grid-template-columns: 1fr; } }

.qac-contact-fallback {
	border: 1px solid var(--qac-line);
	border-radius: var(--qac-radius-lg);
	padding: 1.5rem;
	background: var(--qac-white);
}

/* 14. Print & motion ----------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after {
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.01ms !important;
		scroll-behavior: auto !important;
	}
}

@media print {
	.site-header, .site-footer, .menu-toggle, .elementor-widget-button { display: none !important; }
	body { font-size: 11pt; color: #000; }
	a { color: #000; }
	.qac-on-dark, .qac-on-dark * { color: #000 !important; background: none !important; }
}

/* 15. Additional components ---------------------------------------------- */
.qac-breadcrumb ol { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 0.25rem 0.5rem; font-size: var(--qac-fs-small); color: var(--qac-muted); }
.qac-breadcrumb li { margin: 0; display: inline-flex; align-items: center; gap: 0.5rem; }
.qac-breadcrumb li + li::before { content: "/"; color: #9aa5b3; }
.qac-breadcrumb a { color: var(--qac-muted); text-decoration: none; }
.qac-breadcrumb a:hover { color: var(--qac-teal); text-decoration: underline; }
.qac-breadcrumb li:last-child a { color: var(--qac-ink); pointer-events: none; }

.qac-page-hero { border-bottom: 1px solid var(--qac-line); }
.qac-hero { border-bottom: 1px solid var(--qac-line); }

.qac-photo-placeholder {
	aspect-ratio: 4 / 5;
	width: 100%;
	max-width: 360px;
	display: grid;
	place-items: center;
	padding: 1.5rem;
	text-align: center;
	background: var(--qac-paper);
	border: 1px dashed #9aa5b3;
	border-radius: var(--qac-radius-lg);
	font-size: var(--qac-fs-small);
}

.qac-faq-group-title .elementor-heading-title { font-size: 1.5rem; position: sticky; top: calc(var(--qac-header-h) + 1.5rem); }

.qac-footer-heading .elementor-heading-title { font-family: var(--qac-font-sans); font-size: 1rem; font-weight: 650; }
.qac-el-footer ul { list-style: none; padding: 0; }
.qac-el-header { border-bottom: 1px solid var(--qac-line); }

.has-teal-tint-background-color { background-color: var(--qac-teal-tint); }
.qac-draft-note { border-left: 3px solid var(--qac-teal); border-radius: 0 var(--qac-radius) var(--qac-radius) 0; }

.elementor-widget-text-editor .qac-lede,
p.qac-lede { font-size: 1.25rem; line-height: 1.55; color: var(--qac-muted); }

/* Cards: keep trailing link buttons aligned to the card bottom */
.qac-card .elementor-widget-button.qac-btn-link { margin-top: auto; }
.qac-hero-measure { max-width: 880px; }
.qac-draft-note { margin-bottom: 1.5rem; }

/* Links inside running text are always underlined (not colour-only; WCAG 1.4.1). */
.elementor-widget-text-editor a:not(.elementor-button),
.elementor-widget-shortcode a:not(.qac-button),
.elementor-widget-html p a,
.qac-contact-fallback a,
.qac-consent a {
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 0.18em;
}
