/*
 * Shared feature Harmony/WCAG contract
 *
 * Loaded after feature-owned styles by AssetManager. These rules ensure that
 * feature packages remain readable when administrators choose very light,
 * dark, saturated, or mid-tone Harmony colors.
 */

:where(
  .pag-root,
  .pc-calculator,
  .lic-container,
  .compare-gifts-container,
  .resources-list-container,
  .contact-form-container,
  .ss-modal,
  .tip-of-week-container
) {
  --feature-focus-inner: #fff;
  --feature-focus-outer: #0f172a;
}

:where(
  .pag-root,
  .pc-calculator,
  .lic-container,
  .compare-gifts-container,
  .resources-list-container,
  .contact-form-container,
  .ss-modal,
  .tip-of-week-container
) :focus-visible {
  outline: 2px solid var(--feature-focus-inner) !important;
  outline-offset: 2px;
  box-shadow: 0 0 0 4px var(--feature-focus-outer) !important;
}

/* Plan-a-Gift */
.pag-splash__cta,
.pag-btn--primary,
.pag-chat__results .results-cta-buttons .btn-primary,
.pag-chat__results .pag-error-fallback-ctas .btn-primary {
  background: var(--btn-primary-bg, var(--primary)) !important;
  color: var(--btn-primary-text, var(--text-on-primary)) !important;
  border: 2px solid var(--btn-primary-text, var(--text-on-primary)) !important;
}
.pag-splash__cta:hover,
.pag-btn--primary:hover,
.pag-chat__results .results-cta-buttons .btn-primary:hover,
.pag-chat__results .pag-error-fallback-ctas .btn-primary:hover {
  background: var(--btn-primary-hover-bg, var(--primary-dark)) !important;
  color: var(--btn-primary-hover-text, var(--text-on-primary-dark)) !important;
  border-color: var(--btn-primary-hover-text, var(--text-on-primary-dark)) !important;
}
.pag-splash__cta:active,
.pag-btn--primary:active,
.pag-chat__results .results-cta-buttons .btn-primary:active,
.pag-chat__results .pag-error-fallback-ctas .btn-primary:active {
  background: var(--btn-primary-active-bg, var(--primary-dark)) !important;
  color: var(--btn-primary-active-text, var(--text-on-primary-dark)) !important;
  border-color: var(--btn-primary-active-text, var(--text-on-primary-dark)) !important;
}
.pag-btn--ghost,
.pag-chat__edit-btn,
.pag-chat__fallback-links a,
.pag-chat__results .learn-more-btn {
  color: var(--primary-fg, var(--text)) !important;
  border-color: currentColor;
}
.pag-splash__icon,
.pag-chat__avatar--bot,
.pag-chat__results .gift-recommendation-badge--primary {
  background: var(--primary) !important;
  color: var(--text-on-primary) !important;
}

/* Personal calculators */
.pc-btn--primary {
  background: var(--btn-primary-bg, var(--primary)) !important;
  color: var(--btn-primary-text, var(--text-on-primary)) !important;
  border: 2px solid var(--btn-primary-text, var(--text-on-primary)) !important;
  filter: none !important;
}
.pc-btn--primary:hover {
  background: var(--btn-primary-hover-bg, var(--primary-dark)) !important;
  color: var(--btn-primary-hover-text, var(--text-on-primary-dark)) !important;
  border-color: var(--btn-primary-hover-text, var(--text-on-primary-dark)) !important;
  filter: none !important;
}
.pc-btn--primary:active {
  background: var(--btn-primary-active-bg, var(--primary-dark)) !important;
  color: var(--btn-primary-active-text, var(--text-on-primary-dark)) !important;
  border-color: var(--btn-primary-active-text, var(--text-on-primary-dark)) !important;
}
.pc-btn--outline,
.pc-btn--ghost,
.pc-calculator__back {
  color: var(--primary-fg, var(--text)) !important;
  border-color: currentColor;
}
.pc-bar-label {
  color: #fff !important;
  background: rgba(15, 23, 42, .82);
  border-radius: 3px;
}

/* Legacy impact calculator */
.lic-tab--active,
.lic-btn-primary,
.lic-btn-calculate,
.lic-container .lic-cta-bar .lic-btn-primary,
.lic-container .lic-btn-calculate {
  background: var(--btn-primary-bg, var(--primary)) !important;
  color: var(--btn-primary-text, var(--text-on-primary)) !important;
  border-color: var(--btn-primary-text, var(--text-on-primary)) !important;
}
.lic-btn-primary:hover,
.lic-btn-calculate:hover,
.lic-container .lic-cta-bar .lic-btn-primary:hover,
.lic-container .lic-btn-calculate:hover {
  background: var(--btn-primary-hover-bg, var(--primary-dark)) !important;
  color: var(--btn-primary-hover-text, var(--text-on-primary-dark)) !important;
  border-color: var(--btn-primary-hover-text, var(--text-on-primary-dark)) !important;
}
.lic-btn-primary:active,
.lic-btn-calculate:active,
.lic-container .lic-btn-calculate:active {
  background: var(--btn-primary-active-bg, var(--primary-dark)) !important;
  color: var(--btn-primary-active-text, var(--text-on-primary-dark)) !important;
  border-color: var(--btn-primary-active-text, var(--text-on-primary-dark)) !important;
}
.lic-btn-secondary,
.lic-btn-outline,
.lic-learn-more-link,
.lic-note-toggle {
  color: var(--primary-fg, var(--text)) !important;
  border-color: currentColor;
}
.lic-col-pct--cost {
  color: #475569 !important;
}

/* Compare Gifts and simple contact form */
.compare-gifts-container .btn-primary,
.contact-form-container .btn-submit {
  background: var(--btn-primary-bg, var(--primary)) !important;
  color: var(--btn-primary-text, var(--text-on-primary)) !important;
  border: 2px solid var(--btn-primary-text, var(--text-on-primary)) !important;
}
.compare-gifts-container .btn-primary:hover,
.contact-form-container .btn-submit:hover {
  background: var(--btn-primary-hover-bg, var(--primary-dark)) !important;
  color: var(--btn-primary-hover-text, var(--text-on-primary-dark)) !important;
  border-color: var(--btn-primary-hover-text, var(--text-on-primary-dark)) !important;
}
.comparison-table thead {
  background: var(--primary) !important;
  color: var(--text-on-primary) !important;
}
.compare-gifts-container .gift-checkbox input[type="checkbox"]:checked + span {
  color: var(--primary-fg, var(--text)) !important;
}
.compare-gifts-container .gift-checkbox:has(input:checked) {
  border-color: var(--primary-fg, var(--text)) !important;
}

/* Resources list */
.view-btn.active,
.type-count,
.resource-expand-btn {
  background: var(--btn-primary-bg, var(--primary)) !important;
  color: var(--btn-primary-text, var(--text-on-primary)) !important;
  border-color: var(--btn-primary-text, var(--text-on-primary)) !important;
}
.resource-expand-btn:hover {
  background: var(--btn-primary-hover-bg, var(--primary-dark)) !important;
  color: var(--btn-primary-hover-text, var(--text-on-primary-dark)) !important;
  border-color: var(--btn-primary-hover-text, var(--text-on-primary-dark)) !important;
}
.resource-expand-btn[aria-expanded="true"] {
  background: var(--btn-secondary-bg, var(--secondary)) !important;
  color: var(--btn-secondary-text, var(--text-on-secondary)) !important;
  border-color: var(--btn-secondary-text, var(--text-on-secondary)) !important;
}
.resource-type-badge {
  color: var(--primary-fg, var(--text)) !important;
}
.resource-category {
  background: var(--accent) !important;
  color: var(--text-on-accent) !important;
}

/* Site search */
.ss-modal__group-icon,
.ss-modal__empty-icon,
.ss-modal__brand-name,
.ss-modal__result-arrow,
.ss-modal__result-link-more {
  color: var(--primary-fg, var(--text)) !important;
}
.ss-modal__cta-btn--primary {
  background: var(--btn-primary-bg, var(--primary)) !important;
  color: var(--btn-primary-text, var(--text-on-primary)) !important;
  border: 2px solid var(--btn-primary-text, var(--text-on-primary)) !important;
}
.ss-modal__cta-btn--primary:hover,
.ss-modal__cta-btn--primary:active {
  background: var(--btn-primary-hover-bg, var(--primary-dark)) !important;
  color: var(--btn-primary-hover-text, var(--text-on-primary-dark)) !important;
  border-color: var(--btn-primary-hover-text, var(--text-on-primary-dark)) !important;
}
.nav-search-trigger:focus-visible {
  outline: 2px solid #fff !important;
  outline-offset: 2px;
  box-shadow: 0 0 0 4px #0f172a !important;
}

/* Tip of the week: avoid text over a two-color gradient. */
.tip-of-week-container {
  background: var(--primary-dark, var(--primary)) !important;
  color: var(--text-on-primary-dark, var(--text-on-primary)) !important;
}
.tip-of-week-container :is(h1, h2, h3, h4, p, li, strong, .tip-title, .tip-link, .tip-content a) {
  color: var(--text-on-primary-dark, var(--text-on-primary)) !important;
}
