/* HAOLLA v1.34.5 — cross-site contrast hardening
   Final cascade layer. It only locks text contrast on known light/dark surfaces. */
:root{
  --v1345-ink:#0b1d39;
  --v1345-body:#40536f;
  --v1345-muted:#5c6d85;
  --v1345-on-dark:#f7fbff;
  --v1345-on-dark-soft:#d5e3f3;
}

/* ---------- Learning Results: light-card readability ---------- */
#main.learningResultsV1344 .lrSection,
#main.learningResultsV1344 .lrStory,
#main.learningResultsV1344 .lrGalleryCard,
#main.learningResultsV1344 .lrLongCard,
#main.learningResultsV1344 .lrDisclosure{
  color:var(--v1345-ink)!important;
}
#main.learningResultsV1344 .lrSectionHead h2,
#main.learningResultsV1344 .lrStory h3,
#main.learningResultsV1344 .lrGalleryCard b,
#main.learningResultsV1344 .lrLongCard h3{
  color:var(--v1345-ink)!important;
  opacity:1!important;
  text-shadow:none!important;
  filter:none!important;
}
#main.learningResultsV1344 .lrSectionHead p,
#main.learningResultsV1344 .lrLongCard p,
#main.learningResultsV1344 .lrGalleryCard span,
#main.learningResultsV1344 .lrPrivacy,
#main.learningResultsV1344 .lrDisclosure{
  color:var(--v1345-body)!important;
  opacity:1!important;
}
#main.learningResultsV1344 .lrTimeline,
#main.learningResultsV1344 .lrEvidenceHead{
  color:#52647e!important;
  opacity:1!important;
}
#main.learningResultsV1344 .lrPoints li{
  color:#263750!important;
  opacity:1!important;
}
#main.learningResultsV1344 .lrPill{
  color:#17213a!important;
  opacity:1!important;
}

#main.learningResultsV1344 [data-results-intent="true"]{
  background:#f5f8fc!important;
  color:var(--v1345-ink)!important;
}
#main.learningResultsV1344 [data-results-intent="true"] .lrSectionKicker{color:#1f5fb7!important;opacity:1!important}
#main.learningResultsV1344 [data-results-intent="true"] .lrSectionHead h2{color:#0b1d39!important;opacity:1!important;text-shadow:none!important;filter:none!important}
#main.learningResultsV1344 [data-results-intent="true"] .lrSectionHead p{color:#40536f!important;opacity:1!important}
#main.learningResultsV1344 [data-results-intent="true"] .lrStat{background:#ffffff!important;border:1px solid #d9e3ef!important;color:#0b1d39!important;opacity:1!important;box-shadow:0 10px 28px rgba(20,42,78,.055)!important}
#main.learningResultsV1344 [data-results-intent="true"] .lrStat b{color:#0b1d39!important;opacity:1!important;text-shadow:none!important;filter:none!important}
#main.learningResultsV1344 [data-results-intent="true"] .lrStat span{color:#40536f!important;opacity:1!important;text-shadow:none!important;filter:none!important}
#main.learningResultsV1344 [data-results-intent="true"] .lrBtn.secondary,
#main.learningResultsV1344 [data-results-intent="true"] .lrBtn.secondary:link,
#main.learningResultsV1344 [data-results-intent="true"] .lrBtn.secondary:visited{color:#17325f!important;background:#ffffff!important;border-color:#c7d5e6!important;opacity:1!important;text-shadow:none!important;filter:none!important;box-shadow:0 8px 22px rgba(20,42,78,.045)!important}
#main.learningResultsV1344 [data-results-intent="true"] .lrBtn.secondary:hover,
#main.learningResultsV1344 [data-results-intent="true"] .lrBtn.secondary:focus-visible{color:#0b1d39!important;background:#eef4fb!important;border-color:#aebfd5!important}
#main.learningResultsV1344 [data-results-intent="true"] .lrBtn.primary{color:#07142e!important;opacity:1!important}

#main.learningResultsV1344 .lrHero,
#main.learningResultsV1344 .lrTrust,
#main.learningResultsV1344 .lrCtaBand{color:var(--v1345-on-dark)!important}
#main.learningResultsV1344 .lrHero h1,
#main.learningResultsV1344 .lrTrust h2,
#main.learningResultsV1344 .lrTrust h3,
#main.learningResultsV1344 .lrCtaBand h1,
#main.learningResultsV1344 .lrCtaBand h2,
#main.learningResultsV1344 .lrCtaBand h3,
#main.learningResultsV1344 .lrCtaBand b,
#main.learningResultsV1344 .lrCtaBand strong{color:var(--v1345-on-dark)!important;opacity:1!important}
#main.learningResultsV1344 .lrHeroLead,
#main.learningResultsV1344 .lrTrust p,
#main.learningResultsV1344 .lrCtaBand p{color:var(--v1345-on-dark-soft)!important;opacity:1!important}

/* ---------- Legacy light sections ---------- */
.lightSection,
.proofProtocol,
.v122Paper,
.v1263FounderCopy,
.v1263VisualCard,
.v1263ProofVisual figure,
.v1263Credential{color:var(--v1345-ink)}
.lightSection .sectionHead h1,
.lightSection .sectionHead h2,
.lightSection .sectionHead h3,
.proofProtocol h1,
.proofProtocol h2,
.proofProtocol h3,
.v122Paper h1,.v122Paper h2,.v122Paper h3,
.v1263FounderCopy h1,.v1263FounderCopy h2,.v1263FounderCopy h3,
.v1263ProofCopy h1,.v1263ProofCopy h2,.v1263ProofCopy h3{color:var(--v1345-ink);opacity:1;text-shadow:none}
.lightSection .sectionHead p,
.proofProtocol p,
.v122Paper p,
.v1263FounderCopy p,
.v1263ProofCopy p{color:var(--v1345-body);opacity:1}

/* Broad light-surface recovery for legacy content blocks.
   Several pages reuse components originally authored for the navy theme inside
   white/frosted sections. Lock complete text palettes so inherited white text
   cannot disappear on pale backgrounds. */
.lightSection :where(h1,h2,h3,h4,b,strong,.sectionLabel,.v1263EvidenceKicker,.v1263FounderRole,.checkItem span){
  color:var(--v1345-ink)!important;opacity:1!important;text-shadow:none!important;filter:none!important;
}
.lightSection :where(p,li,small,span):not(.primaryBtn):not(.ghostBtn):not(.softBtn){
  color:var(--v1345-body)!important;opacity:1!important;text-shadow:none!important;filter:none!important;
}
.lightSection .checkItem i{color:#0b6d56!important;opacity:1!important}
.lightSection :where(.workflowCard,.methodCard,.audienceCard,.offerCard,.trustMetric,.proofItem,.quickStart){
  color:var(--v1345-ink)!important;
}
.lightSection :where(.workflowCard,.methodCard,.audienceCard,.offerCard,.trustMetric,.proofItem,.quickStart) :where(h2,h3,h4,b,strong){
  color:var(--v1345-ink)!important;opacity:1!important;
}
.lightSection :where(.workflowCard,.methodCard,.audienceCard,.offerCard,.trustMetric,.proofItem,.quickStart) :where(p,li,span,small){
  color:var(--v1345-body)!important;opacity:1!important;
}

/* Explicit pale custom sections used on Vision and related long-form pages. */
.familyFutureV1,.crossCurricularDensityV1,.haollaScienceEvidence,.socialImpactTeaserV1{
  color:var(--v1345-ink)!important;
}
.familyFutureV1 :where(h1,h2,h3,h4,b,strong),
.crossCurricularDensityV1 :where(h1,h2,h3,h4,b,strong),
.haollaScienceEvidence :where(h1,h2,h3,h4,b,strong),
.socialImpactTeaserV1 :where(h1,h2,h3,h4,b,strong){
  color:var(--v1345-ink)!important;opacity:1!important;text-shadow:none!important;filter:none!important;
}
.familyFutureV1 :where(p,li,span,small),
.crossCurricularDensityV1 :where(p,li,span,small),
.haollaScienceEvidence :where(p,li,span,small),
.socialImpactTeaserV1 :where(p,li,span,small){
  color:var(--v1345-body)!important;opacity:1!important;text-shadow:none!important;filter:none!important;
}
.familyFutureV1__note,.crossCurricularFlowV1,.haollaScienceEvidence .scienceFlow{
  color:var(--v1345-on-dark)!important;
}
.familyFutureV1__note :where(h1,h2,h3,h4,b,strong,p,li,span,small),
.crossCurricularFlowV1 :where(h1,h2,h3,h4,b,strong,p,li,span,small),
.haollaScienceEvidence .scienceFlow :where(h1,h2,h3,h4,b,strong,p,li,span,small){
  color:var(--v1345-on-dark)!important;opacity:1!important;
}

/* ---------- Revenue / SEO light surfaces ---------- */
.r1290Section.white > .r1290Wrap > .r1290SectionHead h2,
.r1290Section.tint > .r1290Wrap > .r1290SectionHead h2,
.r1290ProblemCard h3,
.r1290FitGrid article h3,
.r1290Price:not(.featured) h3,
.r1290Price:not(.featured) .price,
.r1290Faq summary,
.r1290HubCard h2,
.r1290CaseMini h3,
.r1300Fact .value,
.r1300Action h3,
.r1300Comparison th,
.r1300Comparison td{color:var(--v1345-ink)!important;opacity:1!important;text-shadow:none!important;filter:none!important}
.r1290ProblemCard p,
.r1290FitGrid article p,
.r1290Price:not(.featured) p,
.r1290Price:not(.featured) li,
.r1290Faq details p,
.r1290HubCard p,
.r1290CaseMini p,
.r1300Fact p,
.r1300Action p,
.r1300Sources p,
.r1300Sources li{color:var(--v1345-body)!important;opacity:1!important}
.r1290Disclosure,.r1300Sources,.r1300BuzzItem{color:var(--v1345-body)!important;opacity:1!important}

/* ---------- School guides / hub light surfaces ---------- */
body.schoolGuideV1330 .sgSection.white,
body.schoolGuideV1330 .sgSection.tint,
body.schoolHubV1330 .sgSection.white,
body.schoolHubV1330 .sgSection.tint,
.sgCard,.sgConcern,.sgGrade,.sgSource,.sgFaq details,.sgSchoolCard,.sgDisclaimer{color:var(--v1345-ink)}
.sgSection.white .sgSectionHead h2,
.sgSection.tint .sgSectionHead h2,
.sgCard h3,.sgConcern h3,.sgSource h3,.sgSchoolCard h3,
.sgFaq summary,.sgGroupTitle h2,.sgTipBox h2{color:var(--v1345-ink)!important;opacity:1!important;text-shadow:none!important}
.sgSection.white .sgSectionHead p,
.sgSection.tint .sgSectionHead p,
.sgCard p,.sgConcern p,.sgGrade p,.sgSource p,.sgSchoolCard p,
.sgFaq p,.sgDisclaimer{color:var(--v1345-body)!important;opacity:1!important}

/* ---------- Light forms ---------- */
.r1290LeadForm,.sgForm{color:var(--v1345-ink)!important}
.r1290LeadForm label,.sgForm label{color:#304966!important;opacity:1!important}
.r1290LeadForm input,.r1290LeadForm select,.r1290LeadForm textarea,
.sgForm input,.sgForm textarea{color:#10213d!important;background:#f7faff!important;opacity:1!important}
.r1290LeadForm input::placeholder,.r1290LeadForm textarea::placeholder,
.sgForm input::placeholder,.sgForm textarea::placeholder{color:#687b94!important;opacity:1!important}

/* ---------- Dark-surface safety locks ---------- */
.r1290Hero,.r1290HubHero,.r1290Lead,.r1290Section.dark,.r1290Price.featured,
.r1300Road,.r1290MapNode,.r1290MapCore,
.sgHero,.sgSection.dark,.sgStep,.sgService,.sgConsultBox,.sgHubBanner,
.darkCard,.darkPanel,.darkSurface,.navyCard,
.productShell,.engineStage,.demoInput,.demoOutput,.languageCard,.modalCard{color:var(--v1345-on-dark)!important}
.r1290Hero h1,.r1290HubHero h1,.r1290Lead h1,.r1290Lead h2,.r1290Lead h3,
.r1290Section.dark h1,.r1290Section.dark h2,.r1290Section.dark h3,
.r1290Price.featured h2,.r1290Price.featured h3,.r1290Price.featured .price,
.r1300Road h2,.r1300Road h3,
.sgHero h1,.sgHero h2,.sgHero h3,.sgSection.dark h1,.sgSection.dark h2,.sgSection.dark h3,
.sgStep h3,.sgService h2,.sgService h3,.sgConsultBox h2,.sgConsultBox h3,.sgHubBanner h2,
.darkCard h1,.darkCard h2,.darkCard h3,.darkPanel h1,.darkPanel h2,.darkPanel h3,
.darkSurface h1,.darkSurface h2,.darkSurface h3,.navyCard h1,.navyCard h2,.navyCard h3{color:var(--v1345-on-dark)!important;opacity:1!important;text-shadow:none!important}
.r1290Hero p,.r1290Lead p,.r1290Lead li,.r1290Section.dark p,.r1290Section.dark li,
.r1290Price.featured p,.r1290Price.featured li,.r1300Road p,
.sgHero p,.sgSection.dark p,.sgSection.dark li,.sgStep p,.sgService p,.sgService li,
.sgConsultBox p,.sgConsultBox li,.sgHubBanner p,
.darkCard p,.darkCard li,.darkPanel p,.darkPanel li,.darkSurface p,.darkSurface li,.navyCard p,.navyCard li{color:var(--v1345-on-dark-soft)!important;opacity:1!important}

.siteHeader .brand,.siteHeader .brandWord,.siteHeader .desktopNav a,.siteHeader .langBtn,.siteHeader .menuBtn,.siteHeader .mobileNav a{color:#edf4ff}
.siteHeader .primaryBtn{color:#101328!important}
footer .brand,footer .brand span,footer .footerCol b{color:#f7fbff!important;opacity:1!important}
footer .footerBrand p,footer .footerCol a,footer .footerBottom{color:#b2c1d6!important;opacity:1!important}

/* ---------- 2026-09-15 page-level contrast recovery ----------
   Fix dark-on-dark leaks caused by transparent generic sections inheriting the
   global navy body background. These selectors are intentionally page-scoped. */
body:has(main [data-v1263="institutions-visual"]) main,
body:has(main[data-intent="teacher-ai-feedback"]) main{
  background:#f7fafc!important;
  color:var(--v1345-ink)!important;
}

body:has(main [data-v1263="institutions-visual"]) main>.section:not(.lightSection):not(.haollaPolicySection),
body:has(main[data-intent="teacher-ai-feedback"]) main>.section:not(.lightSection):not(.alt):not(.haollaPolicySection){
  background:#ffffff!important;
  color:var(--v1345-ink)!important;
}
body:has(main[data-intent="teacher-ai-feedback"]) main>.section.alt{
  background:#eef4f7!important;
  color:var(--v1345-ink)!important;
}

body:has(main [data-v1263="institutions-visual"]) main>.section:not(.lightSection) :where(h1,h2,h3,h4,b,strong,.sectionLabel),
body:has(main[data-intent="teacher-ai-feedback"]) main>.section:not(.lightSection) :where(h1,h2,h3,h4,b,strong,.sectionLabel){
  color:var(--v1345-ink)!important;
  opacity:1!important;
  text-shadow:none!important;
  filter:none!important;
}
body:has(main [data-v1263="institutions-visual"]) main>.section:not(.lightSection) :where(p,li,small,span):not(.primaryBtn):not(.ghostBtn):not(.softBtn),
body:has(main[data-intent="teacher-ai-feedback"]) main>.section:not(.lightSection) :where(p,li,small,span):not(.primaryBtn):not(.ghostBtn):not(.softBtn){
  color:var(--v1345-body)!important;
  opacity:1!important;
  text-shadow:none!important;
  filter:none!important;
}

/* Evidence bridge sits between normal content sections. Keep the surrounding
   canvas light so it reads as one continuous page rather than a card inside
   thick navy bars. */
body:has(main[data-intent="teacher-ai-feedback"]) main>.haollaEvidenceBridgeV1{
  background:#f5f8fb!important;
  border-color:#dce5ef!important;
  color:var(--v1345-ink)!important;
}
body:has(main[data-intent="teacher-ai-feedback"]) main>.haollaEvidenceBridgeV1 :where(h1,h2,h3,b,strong){color:var(--v1345-ink)!important}
body:has(main[data-intent="teacher-ai-feedback"]) main>.haollaEvidenceBridgeV1 :where(p,small){color:var(--v1345-body)!important}

/* Long-form pages already have strong contextual CTAs. Remove the oversized
   floating social block here; keep Learning OS and consultation launchers. */
body:has(main [data-v1263="institutions-visual"]) .socialDock,
body:has(main[data-intent="teacher-ai-feedback"]) .socialDock{display:none!important}
