/* Shared components use the approved 29 September 2026 tokens.
 * main.css retains page structure and established responsive breakpoints.
 */
:root {
	--hero-lead-width: 520px;
	--target-size: 44px;
	--field-height: 48px;
	--button-height: 44px;
	--action-outline-hover: color-mix(in srgb, var(--action-secondary) 6%, transparent);
	/* On-dark button hover, specified in the written button guidelines. */
	--action-on-dark-hover: #F0EFFA;
	--hero-shape-red-width: 76px;
	--hero-shape-accent-width: 84px;
	--hero-shape-offset: 20px;
	--disabled-opacity: 0.45;
	--text-footer-link: rgb(255 255 255 / 82%);
}

body { background: var(--surface-page); color: var(--text-body); font-family: var(--font-serif); font-size: var(--text-base); line-height: var(--lh-relaxed); }
h1, h2, h3, h4, h5, h6 { font-family: var(--font-display); color: var(--text-strong); }
h1, .hero h1 { font-weight: var(--fw-bold); line-height: var(--lh-tight); letter-spacing: var(--ls-display); }
.site-main h2, .dac-access h2 { font-size: var(--text-h2); font-weight: var(--fw-bold); line-height: var(--lh-snug); letter-spacing: var(--ls-heading); }
.site-main h3 { font-size: var(--text-h3); font-weight: var(--fw-bold); line-height: 1.25; letter-spacing: normal; }
h4 { font-size: var(--text-h4); font-weight: var(--fw-bold); line-height: 1.3; }
h5 { font-size: var(--text-h5); font-weight: var(--fw-semibold); line-height: 1.35; }
a { color: var(--text-link); }
/* Inline copy keeps its underline; hover and keyboard focus use the accent. */
:is(.site-main, .dac-access) :where(p, li, dd, figcaption, label, .haven-cta__contact-body) a:not(:where(.button, .text-link, .resource-item, .resource-nav__link)) {
	text-decoration: underline;
	text-underline-offset: 0.2em;
}
:is(.site-main, .dac-access) :where(p, li, dd, figcaption, label) a:not(:where(.button, .text-link, .resource-item, .resource-nav__link)):is(:hover, :focus-visible),
:is(.site-main, .dac-access) :where(p, li, dd, figcaption, label) a:not(:where(.button, .text-link, .resource-item, .resource-nav__link)):is(:hover, :focus-visible) :is(strong, b, em, span) {
	color: var(--inline-link-hover, var(--text-accent));
}
button, input, select, textarea { font-family: var(--font-ui); }
:where(a, button, input, textarea, select, summary):focus-visible { outline: 3px solid var(--focus-ring); outline-offset: var(--space-1); }
.site-main .eyebrow, .dac-access .eyebrow, .resource-sidebar__label {
	font: var(--fw-medium) var(--text-eyebrow)/var(--lh-snug) var(--font-ui);
	letter-spacing: var(--ls-eyebrow); text-transform: uppercase; color: var(--text-accent); margin-bottom: var(--space-4);
}

/* Shared navy navigation, white dropdowns and member account menu. */
.site-header { font-family: var(--font-ui); color: var(--text-on-dark); border-bottom: 1px solid var(--border-on-dark); }
.site-header__inner { min-height: calc(var(--nav-height) - 1px); gap: var(--space-5); }
.site-nav__list { gap: var(--space-5); }
.site-nav__list a { min-height: var(--target-size); font: var(--fw-medium) var(--text-base)/var(--lh-snug) var(--font-ui); padding-block: var(--space-3); white-space: nowrap; color: var(--text-on-dark); }
.site-nav__list a:hover, .site-nav__list a:focus-visible { color: var(--text-accent-on-dark); text-decoration: none; }
.site-nav__list a[aria-current="page"], .site-nav .current-menu-item > a, .site-nav .current-menu-ancestor > a { text-decoration: underline; text-decoration-color: var(--text-accent-on-dark); text-decoration-thickness: 2px; text-underline-offset: var(--space-2); }
.site-nav .sub-menu { left: calc(-1 * var(--space-3) - 1px); }
.site-nav .sub-menu, .site-header__account-menu { background: var(--surface-card); border: 1px solid var(--border-subtle); border-radius: var(--radius-md); box-shadow: var(--shadow-card); padding: var(--space-3) 0; }
.site-nav .sub-menu a, .site-header__account-menu a { padding-inline: var(--space-3); border-radius: var(--radius-sm); font-size: var(--text-base); color: var(--text-strong); }
.site-nav .sub-menu a { display: flex; align-items: center; }
.site-nav .sub-menu a:hover, .site-nav .sub-menu a:focus-visible, .site-header__account-menu a:hover, .site-header__account-menu a:focus-visible { color: var(--text-accent); text-decoration: underline; text-decoration-thickness: 2px; text-underline-offset: var(--space-2); }
.site-nav .sub-menu a:focus-visible, .site-header__account-menu a:focus-visible { outline-offset: calc(-1 * var(--space-1)); }
.site-nav .sub-menu a[aria-current="page"], .site-nav .sub-menu .current-menu-item > a { text-decoration-color: var(--text-accent); }
.menu-toggle { color: var(--text-on-dark); }
.menu-toggle img { filter: brightness(0) invert(1); }
.site-header__account { position: relative; display: flex; align-items: center; }
.site-header__profile { display: flex; align-items: center; gap: var(--space-2); min-width: 0; min-height: var(--target-size); padding: 0; border: 0; background: transparent; color: var(--text-on-dark); cursor: pointer; text-decoration: none; white-space: nowrap; font: var(--fw-medium) var(--text-base)/var(--lh-snug) var(--font-ui); }
.site-header__initials { display: grid; place-items: center; flex: 0 0 var(--target-size); width: var(--target-size); height: var(--target-size); border-radius: var(--radius-pill); background: var(--surface-accent-soft); color: var(--text-strong); }
.site-header__profile:hover, .site-header__profile:focus-visible { color: var(--text-accent-on-dark); }
.site-header__profile:hover .site-header__initials, .site-header__profile:focus-visible .site-header__initials { outline: 2px solid var(--text-accent-on-dark); outline-offset: 3px; }
.site-header__name { max-width: 10ch; padding-block: var(--space-3); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; text-decoration: none; }
.site-header__account-menu { position: absolute; top: calc(100% + var(--space-2)); right: 0; z-index: 30; width: 14rem; max-width: calc(100vw - 2 * var(--gutter)); margin: 0; list-style: none; }
.site-header__account-menu a { display: block; min-height: var(--target-size); padding-block: var(--space-3); font: var(--fw-medium) var(--text-base)/var(--lh-snug) var(--font-ui); text-decoration: none; white-space: nowrap; }
.site-nav__account { display: none; }

/* One action component, including legacy class aliases. */
.button, .hero__actions .button, .module-card__button, .site-header__login.button {
	display: inline-flex; align-items: center; justify-content: center; gap: var(--space-2);
	min-height: var(--button-height); padding: var(--space-2) var(--space-5); border: 1px solid transparent; border-radius: var(--radius-pill);
	font: var(--fw-medium) var(--text-base)/var(--lh-snug) var(--font-ui); letter-spacing: 0.01em; text-decoration: none; cursor: pointer;
	transition: background-color var(--dur-fast) var(--ease-standard), color var(--dur-fast) var(--ease-standard), transform var(--dur-fast) var(--ease-standard);
}
.button img { margin-left: 0; width: var(--space-4); height: var(--space-4); flex-shrink: 0; }
.button--primary, .button--coral { background: var(--action-primary); color: var(--text-on-dark); }
.button--secondary, .button--navy { background: var(--action-secondary); color: var(--text-on-dark); }
.button--primary img, .button--coral img, .button--secondary img { filter: brightness(0) invert(1); }
.button--outline-navy { background: transparent; border-color: var(--action-secondary); color: var(--text-strong); }
.button--light { background: var(--surface-card); color: var(--text-strong); }
.button:hover:not(:disabled):not([aria-disabled="true"]) { transform: translateY(-1px); }
.button--primary:hover:not(:disabled), .button--coral:hover:not(:disabled) { background: var(--action-primary-hover); }
.button--secondary:hover:not(:disabled), .button--navy:hover:not(:disabled) { background: var(--action-secondary-hover); }
.button--outline-navy:hover:not(:disabled) { background: var(--action-outline-hover); color: var(--text-strong); }
.button--light:hover:not(:disabled) { background: var(--action-on-dark-hover); color: var(--text-strong); }
.button:active:not(:disabled):not([aria-disabled="true"]) { transform: translateY(0); }
.button--primary:active:not(:disabled), .button--coral:active:not(:disabled) { background: var(--action-primary-press); }
.button--secondary:active:not(:disabled), .button--navy:active:not(:disabled) { background: var(--dac-navy-900); }
.button:disabled, .button[aria-disabled="true"] { opacity: var(--disabled-opacity); cursor: not-allowed; transform: none; }
.button:focus-visible { outline: 3px solid var(--focus-ring); outline-offset: var(--space-1); }
.site-header__login { white-space: nowrap; }
.text-link { color: var(--text-link); font: var(--fw-medium) var(--text-base)/var(--lh-normal) var(--font-ui); }
.text-link:is(:hover, :focus-visible), .resource-item:is(:hover, :focus-visible) { text-decoration: none; }

/* Guideline text CTAs move only their arrow, including external resource rows. */
@media (prefers-reduced-motion: no-preference) {
	.text-link img, .resource-item__arrow { transition: transform var(--dur-base) var(--ease-out); }
	.text-link:is(:hover, :focus-visible) img { transform: translateX(3px); }
	.text-link:is(:hover, :focus-visible) img[src$="/arrow-up-right.svg"],
	.resource-item:is(:hover, :focus-visible) .resource-item__arrow { transform: translate(2px, -2px); }
}

/* Small labels on Canadian Red need navy ink to meet the written AA rule. */
.button.button--primary-readable { color: var(--text-strong); }
.button.button--primary-readable img { filter: none; }

/* Shared icon tiles and availability badges from the written guidelines. */
.icon-tile {
	display: inline-flex; flex: 0 0 40px; align-items: center; justify-content: center;
	width: 40px; height: 40px; border-radius: var(--radius-sm); background: var(--action-primary); color: var(--text-on-dark);
}
.icon-tile svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.icon-tile img { width: 20px; height: 20px; filter: brightness(0) invert(1); }
.status-badge {
	display: inline-flex; padding: var(--space-1) var(--space-3); border-radius: var(--radius-pill);
	font: var(--fw-medium) var(--text-caption)/var(--lh-normal) var(--font-ui);
}
.status-badge--available { color: var(--status-success); background: var(--status-success-tint); }
.status-badge--neutral { color: var(--text-body); background: var(--surface-neutral-tint); }

/* Shared hero tiers. Page classes only retain their content layout. */
.hero.hero--tier-1 { background: var(--grad-hero-light); color: var(--text-body); }
.hero.hero--tier-2 { --inline-link-hover: var(--text-accent-on-dark); background: var(--surface-inverse); color: var(--text-on-dark); }
.hero .hero__inner, .hero .contact-hero__inner, .hero .faq-hero__inner, .hero .resource-hero__inner { min-height: 0; }
.hero .hero__inner--text { display: block; }
.hero .dac-access-hero__inner, .hero .faq-hero__inner { max-width: var(--container); text-align: left; }
.hero .hero__content, .hero .psp-hero__content { padding-top: 0; transform: none; }
.hero h1 { margin-bottom: var(--space-5); margin-inline: 0; max-width: var(--container-text); }
.hero h1 span { display: inline; color: var(--text-highlight); }
.mobile-heading-break { display: none; }
.hero--tier-2 h1, .module-hero h1 span { color: var(--text-on-dark); }
.hero .hero__intro, .hero .psp-hero__lead, .hero .dac-access-hero__inner > p:last-child {
	max-width: var(--hero-lead-width); margin-inline: 0; font-family: var(--font-serif); font-weight: var(--fw-regular); line-height: 1.6; color: var(--text-body);
}
.hero--tier-2 .hero__intro, .hero--tier-2 .psp-hero__lead, .hero--tier-2 .psp-hero__note { color: var(--text-on-dark-muted); }
.site-main .hero--tier-2 .eyebrow { color: var(--text-accent-on-dark); }
.psp-hero__note { font-size: var(--text-base); max-width: var(--hero-lead-width); }
.psp-hero__note a { color: var(--text-on-dark); }
/* The photo sets the frame height so its shadow and overlays share the same bounds. */
.hero .hero__visual, .hero .psp-hero__media { aspect-ratio: auto; height: auto; width: 100%; max-height: none; min-height: 0; border: 0; border-radius: var(--radius-lg); box-shadow: var(--shadow-lg); }
.hero--tier-2 .hero__visual, .hero--tier-2 .psp-hero__media { box-shadow: var(--shadow-on-dark); }
.hero .hero__photo, .hero .psp-hero__media > img:not(.hero__shape) { width: 100%; height: auto; aspect-ratio: 4 / 3; object-fit: cover; border-radius: var(--radius-lg); }
.hero .psp-hero__media { overflow: visible; }
.hero .hero__visual > .hero__shape, .hero .psp-hero__media > .hero__shape { height: auto; aspect-ratio: auto; border-radius: 0; pointer-events: none; }
.hero .hero__visual > .hero__shape--red, .hero .psp-hero__media > .hero__shape--red { width: var(--hero-shape-red-width); top: calc(-1 * var(--hero-shape-offset)); left: calc(-1 * var(--hero-shape-offset)); }
.hero .hero__visual > .hero__shape--purple, .hero .psp-hero__media > .hero__shape--purple { width: var(--hero-shape-accent-width); right: calc(-1 * var(--hero-shape-offset)); bottom: calc(-1 * var(--hero-shape-offset)); }
.psp-hero__media::after { display: none; }
.hero .hero__actions { gap: var(--space-3); }
.dac-access-hero { display: block; min-height: 0; }
.dac-access-hero__shape { display: none; }
.faq-hero .hero__shape--purple { left: auto; right: var(--gutter); top: auto; bottom: var(--space-4); }

/* Text-only hero variant: use the full body container instead of an image column. */
.hero--text .hero__inner--text { display: block; text-align: left; overflow-wrap: anywhere; }
.hero.hero--text .hero__content,
.hero.hero--text h1,
.hero.hero--text .hero__intro,
.hero.hero--text .dac-access-hero__inner > p:last-child { max-width: none; }
.hero--text .hero__content { width: 100%; }
.hero--text > .hero__shape { display: none; }

/* Cards, reading regions and panels. */
.offer-card, .module-card, .haven-feature, .faq-item, .resource-list, .curriculum-section, .psp-programs {
	border: 1px solid var(--border-subtle); border-radius: var(--radius-md); background: var(--surface-card); box-shadow: var(--shadow-card);
}
.offer-card { min-height: 0; }
.offer-card__image-wrap, .about-cards .offer-card__image-wrap, .haven-resources .offer-card__image-wrap { height: auto; aspect-ratio: 16 / 9; }
.offer-card__body, .about-cards .offer-card__body, .haven-resources .offer-card__body, .module-card, .haven-feature { padding: var(--space-5); min-height: 0; }
.site-main .offer-card h3, .site-main .module-card__title, .site-main .haven-feature h3 { font-size: var(--text-h4); line-height: 1.3; }
.offer-card .eyebrow { margin-bottom: var(--space-3); }
.offer-card__body > p:not(.eyebrow), .about-cards .offer-card__body > p:not(.eyebrow), .haven-resources .offer-card__body > p:not(.eyebrow), .module-card__description, .haven-feature p {
	font: var(--fw-regular) var(--text-sm)/1.6 var(--font-serif); color: var(--text-body);
}
.offers__grid, .module-grid, .haven-features__grid, .pillars__grid { gap: var(--space-5); }
.pillar-card, .help-cta__bar, .haven-percuro, .haven-cta__inner, .haven-cta__card, .haven-testimonial, .contact-form-card, .dac-access-card, .account-panel {
	border-radius: var(--radius-lg); box-shadow: var(--shadow-card);
}
.mission, .pillar-card--mission, .haven-percuro, .haven-cta__inner, .haven-testimonial { background: var(--surface-accent-soft); color: var(--text-strong); }
.mission { min-height: 0; }
.mission__content { max-width: var(--container-text); padding: var(--space-8); }
.mission__content > p:not(.eyebrow), .about-intro__body p, .haven-intro__col p, .haven-percuro p:not(.eyebrow), .haven-cta__body, .training-modules__intro p, .module-content p, .module-content ul, .terms-content p, .entry-content {
	font: var(--fw-regular) var(--text-base)/var(--lh-relaxed) var(--font-serif); color: var(--text-body);
}
.training-modules__intro, .module-content, .training-disclaimer > .container { max-width: var(--container-text); }
.psp-page .training-disclaimer > .container { max-width: var(--container); }
.training-disclaimer p { font-family: var(--font-serif); font-size: var(--text-sm); }
.psp-finder h2 { text-transform: none; color: var(--text-strong); }
.psp-area__heading h2 { overflow-wrap: anywhere; }
.psp-program__name { font: var(--fw-medium) var(--text-base)/var(--lh-normal) var(--font-ui); }
.psp-program__links a, .psp-program__links span { font: var(--fw-medium) var(--text-sm)/var(--lh-normal) var(--font-ui); }
.psp-search-status { font-size: var(--text-sm); }
.terms-content > .container { max-width: var(--container); }
.terms-content p { font-size: var(--text-base); }
.terms-content { overflow-wrap: anywhere; }
.pillar-card { padding: var(--space-6); min-height: 0; }
.pillar-card--vision { background: var(--surface-inverse); }
.site-main .pillar-card--vision .eyebrow { color: var(--text-accent-on-dark); }
.site-main .pillar-card--vision h2, .site-main .pillar-card--vision h3 { color: var(--text-on-dark); }
.help-cta__bar, .haven-cta__card { background: var(--surface-card); padding: var(--space-6); }
.help-cta .help-cta__bar { background: var(--surface-accent-soft); box-shadow: none; }
.help-cta .help-cta__bar > .button { margin-inline-start: auto; flex-shrink: 0; }
.haven-percuro, .haven-cta__inner, .haven-testimonial { padding: var(--space-6); box-shadow: none; }
.haven-cta__contact-label { font: var(--fw-semibold) var(--text-sm)/var(--lh-normal) var(--font-ui); color: var(--text-accent); }
.haven-cta__contact-body a { font: var(--fw-medium) var(--text-base)/var(--lh-normal) var(--font-ui); }
.haven-cta__contact-body a:hover { color: var(--text-accent); }
.haven-testimonial__quote p { font-size: var(--text-h3); }
.hero__visual-badge { font: var(--fw-medium) var(--text-caption)/var(--lh-normal) var(--font-ui); }
.help-cta__icon, .haven-icon, .resource-category__icon { width: 40px; height: 40px; border-radius: var(--radius-sm); background: var(--action-primary); color: var(--text-on-dark); }
.help-cta__icon img { filter: brightness(0) invert(1); }
.training-modules__intro a, .module-sidebar__list li, .module-content__intro strong { color: var(--text-strong); }
.module-card__badge { background: var(--surface-accent-soft); color: var(--text-accent); font: var(--fw-bold) var(--text-base)/var(--lh-normal) var(--font-ui); }
.module-status__badge { background: var(--surface-neutral-tint); color: var(--text-body); border-radius: var(--radius-pill); padding: var(--space-1) var(--space-3); font: var(--fw-medium) var(--text-caption)/var(--lh-normal) var(--font-ui); }
.module-status__value, .module-sidebar__list, .curriculum-section__bar, .curriculum-section__meta, .curriculum-section__topics { font-family: var(--font-ui); }
.module-status__value { font-size: var(--text-h5); }
.training-meta__license, .training-meta__sponsor, .curriculum-section__bar, .curriculum-section__meta { font-size: var(--text-xs); }
.training-meta__license, .training-meta__sponsor { font-family: var(--font-ui); line-height: 1.4; color: var(--text-muted); }

/* Native controls retain their existing expanded relationships. */
.resource-category__toggle, .curriculum-section__toggle, .psp-area__toggle, .haven-testimonial__nav {
	flex: 0 0 var(--target-size); width: var(--target-size); height: var(--target-size); min-width: var(--target-size); min-height: var(--target-size); border-radius: var(--radius-pill);
}
.resource-collapse-all, .module-curriculum__collapse-all, .psp-collapse-all { min-height: var(--target-size); padding: var(--space-2) var(--space-4); border: 1px solid var(--border-strong); border-radius: var(--radius-pill); color: var(--text-strong); background: transparent; font: var(--fw-medium) var(--text-sm)/var(--lh-normal) var(--font-ui); }
.resource-category__toggle:hover, .curriculum-section__toggle:hover, .psp-area__toggle:hover, .resource-collapse-all:hover, .module-curriculum__collapse-all:hover, .psp-collapse-all:hover { background: var(--surface-accent-soft); }
.faq-item__toggle { padding: var(--space-5); font: var(--fw-medium) var(--text-base)/var(--lh-normal) var(--font-ui); color: var(--text-strong); min-height: var(--target-size); }
.faq-item__toggle[aria-expanded="true"] { color: var(--text-strong); }
.faq-item__answer { padding: 0 var(--space-5) var(--space-5); font: var(--fw-regular) var(--text-base)/var(--lh-relaxed) var(--font-serif); color: var(--text-body); }
.faq-item__answer a { color: var(--text-link); }
.faq-item__toggle:focus-visible, .resource-item:focus-visible { outline-offset: calc(-1 * var(--space-1)); }
.resource-category__heading, .curriculum-section__heading { gap: var(--space-3); }
.resource-category__heading h2 { min-width: 0; overflow-wrap: anywhere; }
.resource-item { padding: var(--space-4) var(--space-5); border-color: var(--border-subtle); min-height: var(--target-size); }
.resource-item__title { font: var(--fw-medium) var(--text-base)/var(--lh-normal) var(--font-ui); }
.resource-item__url { color: var(--text-muted); font: var(--fw-regular) var(--text-sm)/var(--lh-normal) var(--font-serif); overflow-wrap: anywhere; }
.resource-nav__link svg, .resource-category__icon svg, .resource-item__arrow { fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.resource-category__icon svg, .resource-item__arrow { width: var(--text-h4); height: var(--text-h4); flex-shrink: 0; }
.resource-item__arrow { color: var(--text-link); }
.resource-nav__link { min-height: var(--target-size); border: 1px solid transparent; border-radius: var(--radius-sm); font: var(--fw-medium) var(--text-sm)/var(--lh-normal) var(--font-ui); }
.resource-nav__link.is-active, .resource-nav__link[aria-current="location"] { background: var(--surface-selected); color: var(--text-strong); border-color: var(--border-strong); box-shadow: inset 3px 0 var(--action-primary); }
.resource-nav__link:hover, .resource-item:hover { background: var(--surface-band); color: var(--text-strong); }
.curriculum-section__heading, .curriculum-section__topics { padding: var(--space-4) var(--space-5); }
.site-main .curriculum-section__heading h3 { font-size: var(--text-h3); font-weight: var(--fw-bold); }
.curriculum-section__topics li { font-size: var(--text-sm); border-color: var(--border-subtle); }
.haven-testimonial__dots { gap: 0; }
.haven-testimonial__dot, .haven-testimonial__dot.is-active { display: grid; place-items: center; width: var(--target-size); height: var(--target-size); background: transparent; flex: 0 0 var(--target-size); }
.haven-testimonial__dot::before { content: ''; width: var(--space-2); height: var(--space-2); border-radius: var(--radius-pill); background: var(--border-strong); }
.haven-testimonial__dot.is-active::before { width: var(--space-5); background: var(--text-accent); }
.haven-testimonial__nav:hover { background: var(--action-secondary-hover); }

/* Form styling is shared by Contact, Login/Register and Account. */
.contact-form-card, .dac-access-card, .account-panel { padding: var(--space-6); background: var(--surface-card); border: 1px solid var(--border-subtle); }
.dac-access-card h2::after { display: none; }
.dac-access-card h2 { padding-bottom: 0; }
.dac-access-forms__intro { font: var(--fw-regular) var(--text-base)/var(--lh-relaxed) var(--font-serif); color: var(--text-body); }
.dac-access-grid__or { font-family: var(--font-ui); }
.dac-auth-form__field { margin-bottom: var(--space-5); }
.dac-auth-form__row { gap: var(--space-4); }
.dac-auth-form label:not(.dac-auth-form__check) { margin-bottom: var(--space-2); color: var(--text-strong); font: var(--fw-semibold) var(--text-sm)/1.3 var(--font-ui); }
.dac-auth-form input[type="text"], .dac-auth-form input[type="email"], .dac-auth-form input[type="password"], .dac-auth-form input[type="tel"], .dac-auth-form select, .dac-auth-form textarea {
	min-height: var(--field-height); border: 1px solid var(--border-strong); border-radius: var(--radius-sm); background: var(--surface-card); color: var(--text-strong); font: var(--fw-regular) var(--text-base)/var(--lh-normal) var(--font-ui); padding: var(--space-3) var(--space-4); box-shadow: none;
}
.dac-auth-form input:hover, .dac-auth-form select:hover, .dac-auth-form textarea:hover { border-color: var(--text-muted); }
.dac-auth-form input:focus, .dac-auth-form select:focus, .dac-auth-form textarea:focus { border-color: var(--focus-ring); box-shadow: var(--shadow-focus); outline: none; }
.dac-auth-form input[aria-invalid="true"], .dac-auth-form select[aria-invalid="true"], .dac-auth-form textarea[aria-invalid="true"] { border-color: var(--status-danger); }
.dac-auth-form__password { position: relative; }
.js .dac-auth-form__password input { padding-inline-end: calc(var(--space-8) + var(--space-3)); }
.js .dac-auth-form__password input::-ms-reveal { display: none; }
.dac-auth-form__password-toggle {
	position: absolute; inset-block: 2px; inset-inline-end: 2px; min-width: var(--space-8); min-height: var(--target-size);
	padding: 0 var(--space-3); border: 0; border-radius: calc(var(--radius-sm) - 2px); background: transparent; color: var(--text-link);
	font: var(--fw-medium) var(--text-sm)/var(--lh-normal) var(--font-ui); cursor: pointer;
}
.dac-auth-form__password-toggle:hover { background: var(--surface-accent-soft); }
.dac-auth-form__password-toggle:focus-visible { outline-offset: -3px; }
.dac-auth-form__help, .dac-access-card__note { color: var(--text-muted); font: var(--fw-regular) var(--text-xs)/1.6 var(--font-serif); }
.dac-verification .dac-access-card > .dac-auth-form__help { margin-bottom: var(--space-4); }
.dac-access-card--register > .dac-auth-form__help { margin-bottom: var(--space-5); }
#dac-register-email-help, #dac-password-help { font-family: var(--font-ui); }
.dac-auth-form__field-error { color: var(--status-danger); font: var(--fw-medium) var(--text-xs)/var(--lh-normal) var(--font-ui); margin-top: var(--space-2); }
.dac-auth-form__check { min-height: var(--target-size); padding-block: var(--space-2); font: var(--fw-regular) var(--text-sm)/var(--lh-normal) var(--font-ui); color: var(--text-strong); }
.dac-auth-form__check input { accent-color: var(--action-secondary); }
.dac-auth-form__links { font: var(--fw-medium) var(--text-sm)/var(--lh-normal) var(--font-ui); }
.dac-auth-form__links a { display: inline-flex; align-items: center; min-height: var(--target-size); }
.dac-auth-notice { border-radius: var(--radius-sm); padding: var(--space-4); font: var(--fw-regular) var(--text-sm)/1.6 var(--font-serif); }
.dac-auth-notice--error { color: var(--status-danger); border-color: var(--status-danger); background: var(--surface-selected); }
.dac-auth-notice--success { color: var(--status-success); border-color: var(--status-success); background: var(--status-success-tint); }
/* Standalone forms keep the combined login page's card width and shared styles. */
.dac-access-grid--recovery, .dac-access-grid--register { grid-template-columns: minmax(0, 1fr); justify-items: center; }
.dac-access-card--recovery, .dac-access-grid--register .dac-access-card { width: 100%; overflow-wrap: anywhere; }
.dac-access-card--recovery .button { max-width: 100%; white-space: normal; text-align: center; }
@media (min-width: 761px) {
	.dac-access-card--recovery, .dac-access-grid--register .dac-access-card { width: calc((100% - 42px - 2.5rem) / 2); }
}
.account-section { background: var(--surface-band); padding-block: var(--section-y); }
.account-section__inner { max-width: var(--container-text); }
.account-hero .hero__intro { margin-bottom: 0; }
.account-identity { display: flex; align-items: center; gap: var(--space-5); padding-bottom: var(--space-6); margin-bottom: var(--space-6); border-bottom: 1px solid var(--border-subtle); }
.account-identity__avatar { display: grid; place-items: center; flex: 0 0 var(--space-8); width: var(--space-8); height: var(--space-8); border-radius: var(--radius-pill); background: var(--surface-inverse); color: var(--text-on-dark); font: var(--fw-bold) var(--text-h4)/var(--lh-snug) var(--font-ui); }
.account-identity__details { min-width: 0; overflow-wrap: anywhere; }
.account-identity__name { margin: 0; color: var(--text-strong); font: var(--fw-bold) var(--text-h3)/var(--lh-snug) var(--font-ui); }
.account-identity__role { margin: var(--space-1) 0 0; color: var(--text-muted); font: var(--fw-regular) var(--text-sm)/var(--lh-normal) var(--font-ui); }
.dac-auth-form__actions--profile { justify-content: flex-end; padding-top: var(--space-5); border-top: 1px solid var(--border-subtle); gap: var(--space-3); }
.dac-auth-form__actions--profile .button { margin: 0; }

/* Shared footer; its navy surface and structure are preserved. */
.site-footer { padding-block: var(--section-y) var(--space-7); }
.site-footer__inner { gap: var(--space-6); }
.site-footer h2 { font: var(--fw-medium) var(--text-sm)/var(--lh-normal) var(--font-ui); color: var(--text-accent-on-dark); }
.site-footer a { font-family: var(--font-ui); font-size: var(--text-base); color: var(--text-footer-link); }
.site-footer a.button--light { color: var(--text-strong); }
.site-footer a:hover { color: var(--text-accent-on-dark); }
.site-footer .site-footer__tagline { color: var(--text-accent-on-dark); font-family: var(--font-ui); font-weight: var(--fw-medium); }
.site-footer p { font-size: var(--text-sm); }
.site-footer__bottom { margin-top: var(--space-8); padding-top: var(--space-6); border-top: 1px solid var(--border-on-dark); }
.site-footer__bottom-inner { display: flex; justify-content: space-between; gap: var(--space-5); }
.site-footer .site-footer__copyright, .site-footer .site-footer__support { margin: 0; font: var(--fw-regular) var(--text-caption)/1.4 var(--font-ui); }
.site-footer__member p { font-family: var(--font-ui); }
.site-footer__member a { text-decoration: none; }
.site-footer__member ul { margin-bottom: var(--space-4); }

/* Unassigned templates gain reading layout without a new hero tier. */
.content-page { padding-block: var(--section-y); }
.content-page > .container { max-width: var(--container-text); }
.content-page .entry-content { width: 100%; }
.search-result { padding-block: var(--space-6); border-bottom: 1px solid var(--border-subtle); }
.search-form { display: flex; flex-wrap: wrap; align-items: end; gap: var(--space-3); }
.search-form__field { flex: 1 1 240px; min-width: 0; }
.search-form label { color: var(--text-strong); font: var(--fw-semibold) var(--text-sm)/1.3 var(--font-ui); }
.search-form .search-field { margin-top: var(--space-2); }
.search-form input[type="search"] { display: block; width: 100%; height: var(--field-height); min-height: var(--field-height); padding: var(--space-2) var(--space-4); border: 1px solid var(--border-strong); border-radius: var(--radius-sm); background: var(--surface-card); color: var(--text-strong); font: var(--fw-regular) var(--text-base)/var(--lh-normal) var(--font-ui); }
.search-form input[type="search"]:focus { border-color: var(--focus-ring); box-shadow: var(--shadow-focus); outline: none; }
.search-form .search-submit { min-height: var(--target-size); }

/* Explicit clear controls stay consistent across browsers and input methods. */
.search-field { position: relative; }
.search-form .search-field--clearable input[type="search"],
.psp-search.search-field--clearable { padding-inline-end: calc(var(--target-size) + var(--space-3)); }
.search-field--clearable input[type="search"]::-webkit-search-cancel-button,
.search-field--clearable input[type="search"]::-webkit-search-decoration { -webkit-appearance: none; appearance: none; display: none; }
.search-clear { position: absolute; inset-inline-end: var(--space-1); top: 50%; transform: translateY(-50%); display: grid; place-items: center; width: var(--target-size); height: var(--target-size); padding: 0; border: 0; border-radius: var(--radius-pill); background: transparent; color: var(--text-strong); cursor: pointer; }
.search-clear[hidden] { display: none; }
.search-clear:hover { background: var(--surface-accent-soft); }
.search-clear:focus-visible { outline-offset: -3px; }
.search-clear svg { fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; pointer-events: none; }

@media (min-width: 994px) {
	:root { --gutter: 64px; }
	.hero h1, .content-page h1 { font-size: var(--text-h1); }
	.hero .hero__inner, .hero .contact-hero__inner, .hero .faq-hero__inner, .hero .resource-hero__inner { padding-block: var(--hero-y); }
	.hero .hero__inner:not(.hero__inner--text) { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: var(--space-7); }
	.hero .hero__intro, .hero .psp-hero__lead, .hero .dac-access-hero__inner > p:last-child { font-size: var(--text-lead); }
	.offers, .about-intro, .haven-intro, .training-modules, .resource-directory, .faq-questions, .dac-access-forms, .module-overview, .psp-finder, .psp-directory { padding-block: var(--section-y); }
	.about-cards, .pillars, .help-cta, .mission-section, .haven-features, .haven-cta, .haven-resources, .haven-testimonials, .module-curriculum { padding-block: 0 var(--section-y); }
}

@media (max-width: 1120px) and (min-width: 994px) {
	.site-header__inner, .site-nav__list { gap: var(--space-3); }
	/* Keep Drug Access Canada together in the narrower About hero column. */
	.about-hero h1 { font-size: clamp(44px, 4.4vw, var(--text-h1)); }
}
@media (max-width: 993px) {
	.site-header__inner { grid-template-columns: minmax(0, 1fr) auto; gap: var(--space-2); }
	.site-header__inner > .site-header__login { display: none; }
	.menu-toggle { grid-column: 2; }
	.js .site-nav { display: flex; flex-direction: column; overflow-y: auto; overscroll-behavior: contain; transition: none; }
	/* The logo and close control remain above the independently scrolling menu. */
	.js.mobile-nav-open { min-height: 100%; overflow: hidden; }
	.js .nav-open .site-header { position: fixed; inset: 0; z-index: 100000; height: 100vh; height: 100dvh; border: 0; }
	.js .nav-open .site-header__inner { height: 100%; grid-template-rows: var(--nav-height) minmax(0, 1fr); row-gap: 0; }
	.js .nav-open .site-nav { position: static; grid-row: 2; height: 100%; min-height: 0; padding: var(--space-5) 0 max(var(--space-5), env(safe-area-inset-bottom)); transform: none; transition: none; }
	.site-nav__list { flex-shrink: 0; gap: 0; margin-bottom: var(--space-5); }
	.site-nav a:focus-visible { outline-offset: -3px; }
	.site-nav__list > li > a { padding-block: var(--space-4); font-size: var(--text-h4); white-space: normal; }
	/* Submenu visibility/pointer overrides must not reactivate a closed mobile menu. */
	.js body:not(.nav-open) .site-nav .sub-menu { visibility: hidden; pointer-events: none; }
	.site-nav .sub-menu { min-width: 0; margin: 0 0 var(--space-2); padding: 0 0 0 var(--space-5); border: 0; border-radius: 0; background: transparent; box-shadow: none; }
	.site-nav .sub-menu a { padding-inline: 0; color: var(--text-on-dark); white-space: normal; }
	.site-nav .sub-menu a:is(:hover, :focus-visible) { color: var(--text-accent-on-dark); }
	.site-nav .sub-menu a[aria-current="page"], .site-nav .sub-menu .current-menu-item > a { text-decoration-color: var(--text-accent-on-dark); }
	.site-nav__account { display: flex; flex: 0 0 auto; flex-direction: column; gap: var(--space-3); margin-top: auto; padding-top: var(--space-5); border-top: 1px solid var(--border-on-dark); }
	.site-nav__profile { display: flex; align-items: center; min-height: var(--target-size); color: var(--text-on-dark); font-size: var(--text-h4); text-decoration: none; }
	.site-nav__profile:is(:hover, :focus-visible) { color: var(--text-accent-on-dark); }
	.site-nav__profile[aria-current="page"] { text-decoration: underline; text-underline-offset: var(--space-2); }
	.hero .hero__visual { width: calc(100% - 2 * var(--space-4)); margin-inline: var(--space-4); flex-shrink: 0; }
	/* Leave room for the media decoration above stacked images, including its motion. */
	.hero .hero__inner:not(.hero__inner--text) { row-gap: var(--space-7); }
	.hero .hero__inner--text { padding-block: var(--space-7); }
	.hero .resource-hero__inner, .hero .faq-hero__inner { text-align: left; }
	.faq-hero > .hero__shape { display: none; }
	.mission__content { padding: var(--space-6); }
	.haven-testimonial__shape--periwinkle { display: none; }
	.haven-testimonial__quote p { font-size: var(--text-h4); }
}
@media (max-width: 680px) {
	/* Keep page titles on two deliberate lines at phone widths. */
	.hero h1, .content-page h1 { font-size: clamp(1.625rem, 9.5vw, 2.375rem); line-height: var(--lh-tight); }
	.hero h1.hero__title--long { font-size: clamp(1.5rem, 8vw, 2.375rem); }
	.mobile-heading-break { display: initial; }
	.contact-form-card, .dac-access-card, .account-panel { padding: var(--space-5); }
	.site-footer__bottom-inner { flex-direction: column; gap: var(--space-3); }
	.mission__shape--red { display: none; }
	.haven-testimonial__controls { gap: var(--space-1); flex-wrap: wrap; }
	.curriculum-section__heading { flex-wrap: wrap; }
	.curriculum-section__heading h3 { flex: 1 1 60%; }
	.curriculum-section__meta { margin-left: 0; }
	.curriculum-section__toggle { margin-left: auto; }
	.curriculum-section__bar { flex-wrap: wrap; gap: var(--space-2); }
}
@media (max-width: 360px) {
	.site-header__brand img { width: 100px; }
}
@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after { scroll-behavior: auto !important; transition-duration: 0.01ms !important; animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; }
	.button:hover { transform: none !important; }
}
/* Resource pages without category navigation retain the full content width. */
.resource-directory__inner.resource-directory__inner--full {
	grid-template-columns: minmax(0, 1fr);
}

.dac-contact-consent {
	display: flex;
	align-items: flex-start;
	gap: var(--space-3);
	margin-top: var(--space-4);
}
.dac-contact-consent input[type="checkbox"] {
	flex: 0 0 20px;
	width: 20px;
	height: 20px;
	min-height: 0;
	margin-top: 3px;
	accent-color: var(--color-coral);
}
.dac-auth-form .dac-contact-consent label:not(.dac-auth-form__check) {
	font-size: var(--text-sm);
	font-weight: 400;
	line-height: 1.5;
}
