/* Context is inherited; a nested component can select its own family. */
:root { --oz-context-accent: var(--oz-color-primary); --oz-context-soft: var(--oz-color-surface); --oz-context-ink: var(--oz-color-ink); }
.oz-context-default { --oz-context-accent: var(--oz-color-primary); --oz-context-soft: var(--oz-color-surface); --oz-context-ink: var(--oz-color-ink); }
.oz-context-education { --oz-context-accent: var(--oz-color-education); --oz-context-soft: var(--oz-color-education-soft); --oz-context-ink: var(--oz-color-ink); }
.oz-context-primary { --oz-context-accent: var(--oz-color-primary-education); --oz-context-soft: var(--oz-color-primary-education-soft); --oz-context-ink: var(--oz-color-ink); }
.oz-context-secondary { --oz-context-accent: var(--oz-color-secondary-education); --oz-context-soft: var(--oz-color-secondary-education-soft); --oz-context-ink: var(--oz-color-ink); }
.oz-context-evo { --oz-context-accent: var(--oz-color-evo); --oz-context-soft: var(--oz-color-evo-soft); --oz-context-ink: var(--oz-color-ink); }
.oz-context-bit { --oz-context-accent: var(--oz-color-bit); --oz-context-soft: var(--oz-color-bit-soft); --oz-context-ink: var(--oz-color-ink); }
.oz-context-ari { --oz-context-accent: var(--oz-color-ari); --oz-context-soft: var(--oz-color-ari-soft); --oz-context-ink: var(--oz-color-ink); }
.oz-context-digital-literacy { --oz-context-accent: var(--oz-color-digital-literacy); --oz-context-soft: var(--oz-color-digital-literacy-soft); --oz-context-ink: var(--oz-color-ink); }
.oz-context-computational-thinking { --oz-context-accent: var(--oz-color-computational-thinking); --oz-context-soft: var(--oz-color-computational-thinking-soft); --oz-context-ink: var(--oz-color-ink); }
.oz-context-steam { --oz-context-accent: var(--oz-color-steam); --oz-context-soft: var(--oz-color-steam-soft); --oz-context-ink: var(--oz-color-ink); }
.oz-context-programming { --oz-context-accent: var(--oz-color-blockly); --oz-context-soft: var(--oz-color-blockly-soft); --oz-context-ink: var(--oz-color-ink); }
.oz-context-color-codes { --oz-context-accent: var(--oz-color-colorcodes); --oz-context-soft: var(--oz-color-colorcodes-soft); --oz-context-ink: var(--oz-color-ink); }
.oz-context-blockly { --oz-context-accent: var(--oz-color-blockly); --oz-context-soft: var(--oz-color-blockly-soft); --oz-context-ink: var(--oz-color-ink); }
.oz-context-python { --oz-context-accent: var(--oz-color-python); --oz-context-soft: var(--oz-color-python-soft); --oz-context-ink: var(--oz-color-ink); }

/* Brand buttons stay purple. Context changes surfaces, labels and route links. */
.oz-content-hero, .elementor-element.oz-rich-hero {
 background: linear-gradient(115deg, var(--oz-color-surface) 15%, var(--oz-context-soft));
 border: 1px solid var(--oz-color-border);
}
.oz-content-hero__eyebrow, .oz-detail__label p, .oz-content-hero [data-oz-content-field="eyebrow"] { color: var(--oz-context-accent); }
.oz-content-breadcrumbs [aria-current="page"] { color: var(--oz-context-accent); }
.oz-detail .oz-detail__feature, .e-con.oz-process-flow__step { border-top-color: var(--oz-color-border); }
.e-con.oz-detail--education { background: var(--oz-context-soft); color: var(--oz-context-ink); }
.oz-detail--education :is(h2,h3,p,.elementor-heading-title) { color: var(--oz-context-ink); }
.oz-detail--education .oz-detail__label p { color: var(--oz-context-accent); }
.oz-process-flow__step .oz-detail__label p { color: var(--oz-context-accent); }
body[class*="oz-context-"] .oz-site-header { border-bottom-color: var(--oz-color-border); }
body[class*="oz-context-"] .oz-site-header .current-menu-item:not(.oz-menu-item--featured) > a { color: var(--oz-context-accent); }

/* Destination cards communicate their context in text as well as color. */
.e-con:is(.oz-education-route,.oz-education-theme,.oz-context-route,.oz-home-choice,.oz-home-robot),
.oz-content-link-card[class*="oz-context-"] {
 background: var(--oz-context-soft);
 border: 1px solid var(--oz-color-border);
 color: var(--oz-context-ink);
}
.e-con.oz-education-theme { border-radius: var(--oz-radius-xl); }
/* Image cards own their media edges and separate text insets. */
.e-con.oz-education-theme:not(.oz-image-card) { padding: var(--oz-card-padding); }
.oz-content-link-card[class*="oz-context-"] h3,
.oz-content-link-card[class*="oz-context-"] .oz-robot-cards__link { color: var(--oz-context-accent); }
.oz-content-link-card[class*="oz-context-"] img { background: var(--oz-context-soft); }
.oz-method-card { background: var(--oz-context-soft); border: 1px solid var(--oz-color-border); }


/* Native Elementor composition: optional image/icon, text stack and links. */
.e-con.oz-context-route, article.oz-context-route { border-radius: var(--oz-radius-xl); gap: var(--oz-space-md); min-width: 0; }
.e-con.oz-context-route:not(.oz-image-card), article.oz-context-route:not(.oz-image-card) { padding: var(--oz-card-padding); }
.oz-context-route .elementor-widget-heading h3 { color: var(--oz-context-ink); font-size: var(--oz-font-size-route-title); }
.oz-context-route .elementor-widget-text-editor { color: var(--oz-context-ink); }
.oz-context-route .oz-detail__label p { color: var(--oz-context-accent); }
.oz-context-route > .elementor-widget-button:last-child { margin-top: auto; }
.oz-context-route .elementor-widget-icon { color: var(--oz-context-accent); }
.oz-context-route .elementor-widget-image img { aspect-ratio: 16/9; object-fit: cover; }
.oz-context-route .elementor-widget-image.oz-rich__contain img { object-fit: contain; }
.oz-content-page .oz-detail .oz-context-link .elementor-button,
.oz-context-link .elementor-button {
 display: inline-flex; align-items: center; min-height: 44px; max-width: 100%; padding: .5rem 0;
 color: var(--oz-context-accent); background: transparent; border: 0; border-radius: var(--oz-radius-pill);
 font-weight: var(--oz-font-weight-bold); text-align: start; white-space: normal;
 text-decoration: underline; text-underline-offset: .22em;
}
.oz-content-page .oz-detail .oz-context-link .elementor-button:hover,
.oz-context-link .elementor-button:hover { background: transparent; color: var(--oz-context-ink); }
.oz-context-link .elementor-button:focus-visible,
.oz-content-link-card[class*="oz-context-"]:focus-visible {
 outline: 3px solid var(--oz-context-accent); outline-offset: 4px;
}
.oz-context-route:focus-within { border-color: var(--oz-context-accent); }
.e-con.oz-context-route, .oz-content-link-card[class*="oz-context-"] { transition: transform .18s ease, border-color .18s ease; }
@media (hover:hover) {
 .e-con.oz-context-route:hover, .oz-content-link-card[class*="oz-context-"]:hover { transform: translateY(-2px); border-color: var(--oz-context-accent); }
}
@media (prefers-reduced-motion:reduce) {
 .e-con.oz-context-route, .oz-content-link-card[class*="oz-context-"] { transition: none; }
 .e-con.oz-context-route:hover, .oz-content-link-card[class*="oz-context-"]:hover { transform: none; }
}
.oz-content-hero .oz-eyebrow { color: var(--oz-context-accent); }
.oz-context-color-codes:is(.oz-method-card,.oz-rich__feature,.oz-context-route) { position: relative; }

.oz-education-theme .elementor-widget-image img { background: var(--oz-context-soft); }
.e-con.oz-home-route--education { background: var(--oz-context-soft); color: var(--oz-context-ink); }
.e-con.oz-home-slo__tag[class*="oz-context-"] { border: 1px solid rgb(255 255 255 / 18%); }
:is(.oz-home-robot,.oz-home-choice) .elementor-widget-heading:not(.oz-linked-card__cta) .elementor-heading-title { color: var(--oz-context-ink); }

.oz-context-support { --oz-context-accent: var(--oz-color-support); --oz-context-soft: var(--oz-color-support-soft); --oz-context-ink: var(--oz-color-ink); }

/* Quiet editorial variants; reusable for product families or content routes. */
.oz-context-route--quiet { background: var(--oz-context-soft); color: var(--oz-context-ink); border: 0; }
.oz-method-card--quiet { border: 0; background: var(--oz-context-soft); }
.oz-method-card--quiet.oz-context-color-codes::before { content: none; }
