/* NXS Learning, ra: the unit frame (generated by integrations/openedx/theme/build.mjs; do not edit).
 * Foundry UI/UX kit tokens (vendor/foundry), dark unless the learner chose light. Self-hosted; no outside host. */
@font-face { font-family: "IBM Plex Sans"; font-style: normal; font-weight: 400; font-display: swap; src: local("IBM Plex Sans"), local("IBMPlexSans"), url("/nexus-brand/_shared/fonts/ibm-plex-sans-cyrillic-400-normal.woff2") format("woff2"); unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; }
@font-face { font-family: "IBM Plex Sans"; font-style: normal; font-weight: 500; font-display: swap; src: local("IBM Plex Sans Medium"), local("IBMPlexSans-Medium"), url("/nexus-brand/_shared/fonts/ibm-plex-sans-cyrillic-500-normal.woff2") format("woff2"); unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; }
@font-face { font-family: "IBM Plex Sans"; font-style: normal; font-weight: 600; font-display: swap; src: local("IBM Plex Sans SemiBold"), local("IBMPlexSans-SemiBold"), url("/nexus-brand/_shared/fonts/ibm-plex-sans-cyrillic-600-normal.woff2") format("woff2"); unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; }
@font-face { font-family: "Vazirmatn"; font-style: normal; font-weight: 400; font-display: swap; src: url("/nexus-brand/_shared/fonts/vazirmatn-arabic-400-normal.woff2") format("woff2"); size-adjust: 100%; unicode-range: U+0600-06FF, U+0750-077F, U+0870-088E, U+0890-0891, U+0897-08E1, U+08E3-08FF, U+200C-200E, U+2010-2011, U+204F, U+2E41, U+FB50-FDFF, U+FE70-FE74, U+FE76-FEFC, U+102E0-102FB, U+10E60-10E7E, U+10EC2-10EC4, U+10EFC-10EFF, U+1EE00-1EE03, U+1EE05-1EE1F, U+1EE21-1EE22, U+1EE24, U+1EE27, U+1EE29-1EE32, U+1EE34-1EE37, U+1EE39, U+1EE3B, U+1EE42, U+1EE47, U+1EE49, U+1EE4B, U+1EE4D-1EE4F, U+1EE51-1EE52, U+1EE54, U+1EE57, U+1EE59, U+1EE5B, U+1EE5D, U+1EE5F, U+1EE61-1EE62, U+1EE64, U+1EE67-1EE6A, U+1EE6C-1EE72, U+1EE74-1EE77, U+1EE79-1EE7C, U+1EE7E, U+1EE80-1EE89, U+1EE8B-1EE9B, U+1EEA1-1EEA3, U+1EEA5-1EEA9, U+1EEAB-1EEBB, U+1EEF0-1EEF1; }
@font-face { font-family: "Vazirmatn"; font-style: normal; font-weight: 500; font-display: swap; src: url("/nexus-brand/_shared/fonts/vazirmatn-arabic-500-normal.woff2") format("woff2"); size-adjust: 100%; unicode-range: U+0600-06FF, U+0750-077F, U+0870-088E, U+0890-0891, U+0897-08E1, U+08E3-08FF, U+200C-200E, U+2010-2011, U+204F, U+2E41, U+FB50-FDFF, U+FE70-FE74, U+FE76-FEFC, U+102E0-102FB, U+10E60-10E7E, U+10EC2-10EC4, U+10EFC-10EFF, U+1EE00-1EE03, U+1EE05-1EE1F, U+1EE21-1EE22, U+1EE24, U+1EE27, U+1EE29-1EE32, U+1EE34-1EE37, U+1EE39, U+1EE3B, U+1EE42, U+1EE47, U+1EE49, U+1EE4B, U+1EE4D-1EE4F, U+1EE51-1EE52, U+1EE54, U+1EE57, U+1EE59, U+1EE5B, U+1EE5D, U+1EE5F, U+1EE61-1EE62, U+1EE64, U+1EE67-1EE6A, U+1EE6C-1EE72, U+1EE74-1EE77, U+1EE79-1EE7C, U+1EE7E, U+1EE80-1EE89, U+1EE8B-1EE9B, U+1EEA1-1EEA3, U+1EEA5-1EEA9, U+1EEAB-1EEBB, U+1EEF0-1EEF1; }
@font-face { font-family: "IBM Plex Sans Devanagari"; font-style: normal; font-weight: 400; font-display: swap; src: url("/nexus-brand/_shared/fonts/ibm-plex-sans-devanagari-devanagari-400-normal.woff2") format("woff2"); unicode-range: U+0900-097F, U+1CD0-1CF9, U+200C-200D, U+20A8, U+20B9, U+20F0, U+25CC, U+A830-A839, U+A8E0-A8FF, U+11B00-11B09; }
@font-face { font-family: "IBM Plex Sans Devanagari"; font-style: normal; font-weight: 500; font-display: swap; src: url("/nexus-brand/_shared/fonts/ibm-plex-sans-devanagari-devanagari-500-normal.woff2") format("woff2"); unicode-range: U+0900-097F, U+1CD0-1CF9, U+200C-200D, U+20A8, U+20B9, U+20F0, U+25CC, U+A830-A839, U+A8E0-A8FF, U+11B00-11B09; }
@font-face { font-family: "IBM Plex Sans"; font-style: normal; font-weight: 400; font-display: swap; src: local("IBM Plex Sans"), local("IBMPlexSans"), url("/nexus-brand/_shared/fonts/ibm-plex-sans-latin1-400-normal.woff2") format("woff2"); unicode-range: U+0000, U+000D, U+0020-007E, U+00A0-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2013-2014, U+2018-201A, U+201C-201E, U+2020-2022, U+2026, U+2030, U+2039-203A, U+2044, U+20AC, U+2122, U+2212, U+FB01-FB02; }
@font-face { font-family: "IBM Plex Sans"; font-style: normal; font-weight: 400; font-display: swap; src: local("IBM Plex Sans"), local("IBMPlexSans"), url("/nexus-brand/_shared/fonts/ibm-plex-sans-latin2-400-normal.woff2") format("woff2"); unicode-range: U+0100-0101, U+0104-0130, U+0132-0151, U+0154-017F, U+018F, U+0192, U+01A0-01A1, U+01AF-01B0, U+01FA-01FF, U+0218-021B, U+0237, U+0259, U+1E80-1E85, U+1E9E, U+20A1, U+20A4, U+20A6, U+20A8-20AA, U+20AD-20AE, U+20B1-20B2, U+20B4-20B5, U+20B8-20BA, U+20BD, U+20BF; }
@font-face { font-family: "IBM Plex Sans"; font-style: normal; font-weight: 400; font-display: swap; src: local("IBM Plex Sans"), local("IBMPlexSans"), url("/nexus-brand/_shared/fonts/ibm-plex-sans-pi-400-normal.woff2") format("woff2"); unicode-range: U+0E3F, U+2000-200D, U+2015, U+2028-2029, U+202F, U+2032-2033, U+2070, U+2074-2079, U+2080-2089, U+2113, U+2116, U+2126, U+212E, U+2150-2151, U+2153-215E, U+2190-2199, U+21A9-21AA, U+21B0-21B3, U+21B6-21B7, U+21BA-21BB, U+21C4, U+21C6, U+2202, U+2206, U+220F, U+2211, U+2215, U+221A, U+221E, U+222B, U+2248, U+2260, U+2264-2265, U+25CA, U+2713, U+274C, U+2B0E-2B11, U+ECE0, U+EFCC, U+FEFF, U+FFFD; }
@font-face { font-family: "IBM Plex Sans"; font-style: normal; font-weight: 500; font-display: swap; src: local("IBM Plex Sans Medium"), local("IBMPlexSans-Medium"), url("/nexus-brand/_shared/fonts/ibm-plex-sans-latin1-500-normal.woff2") format("woff2"); unicode-range: U+0000, U+000D, U+0020-007E, U+00A0-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2013-2014, U+2018-201A, U+201C-201E, U+2020-2022, U+2026, U+2030, U+2039-203A, U+2044, U+20AC, U+2122, U+2212, U+FB01-FB02; }
@font-face { font-family: "IBM Plex Sans"; font-style: normal; font-weight: 500; font-display: swap; src: local("IBM Plex Sans Medium"), local("IBMPlexSans-Medium"), url("/nexus-brand/_shared/fonts/ibm-plex-sans-latin2-500-normal.woff2") format("woff2"); unicode-range: U+0100-0101, U+0104-0130, U+0132-0151, U+0154-017F, U+018F, U+0192, U+01A0-01A1, U+01AF-01B0, U+01FA-01FF, U+0218-021B, U+0237, U+0259, U+1E80-1E85, U+1E9E, U+20A1, U+20A4, U+20A6, U+20A8-20AA, U+20AD-20AE, U+20B1-20B2, U+20B4-20B5, U+20B8-20BA, U+20BD, U+20BF; }
@font-face { font-family: "IBM Plex Sans"; font-style: normal; font-weight: 500; font-display: swap; src: local("IBM Plex Sans Medium"), local("IBMPlexSans-Medium"), url("/nexus-brand/_shared/fonts/ibm-plex-sans-pi-500-normal.woff2") format("woff2"); unicode-range: U+0E3F, U+2000-200D, U+2015, U+2028-2029, U+202F, U+2032-2033, U+2070, U+2074-2079, U+2080-2089, U+2113, U+2116, U+2126, U+212E, U+2150-2151, U+2153-215E, U+2190-2199, U+21A9-21AA, U+21B0-21B3, U+21B6-21B7, U+21BA-21BB, U+21C4, U+21C6, U+2202, U+2206, U+220F, U+2211, U+2215, U+221A, U+221E, U+222B, U+2248, U+2260, U+2264-2265, U+25CA, U+2713, U+274C, U+2B0E-2B11, U+ECE0, U+EFCC, U+FEFF, U+FFFD; }
@font-face { font-family: "IBM Plex Sans"; font-style: normal; font-weight: 600; font-display: swap; src: local("IBM Plex Sans SemiBold"), local("IBMPlexSans-SemiBold"), url("/nexus-brand/_shared/fonts/ibm-plex-sans-latin1-600-normal.woff2") format("woff2"); unicode-range: U+0000, U+000D, U+0020-007E, U+00A0-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2013-2014, U+2018-201A, U+201C-201E, U+2020-2022, U+2026, U+2030, U+2039-203A, U+2044, U+20AC, U+2122, U+2212, U+FB01-FB02; }
@font-face { font-family: "IBM Plex Sans"; font-style: normal; font-weight: 600; font-display: swap; src: local("IBM Plex Sans SemiBold"), local("IBMPlexSans-SemiBold"), url("/nexus-brand/_shared/fonts/ibm-plex-sans-latin2-600-normal.woff2") format("woff2"); unicode-range: U+0100-0101, U+0104-0130, U+0132-0151, U+0154-017F, U+018F, U+0192, U+01A0-01A1, U+01AF-01B0, U+01FA-01FF, U+0218-021B, U+0237, U+0259, U+1E80-1E85, U+1E9E, U+20A1, U+20A4, U+20A6, U+20A8-20AA, U+20AD-20AE, U+20B1-20B2, U+20B4-20B5, U+20B8-20BA, U+20BD, U+20BF; }
@font-face { font-family: "IBM Plex Sans"; font-style: normal; font-weight: 600; font-display: swap; src: local("IBM Plex Sans SemiBold"), local("IBMPlexSans-SemiBold"), url("/nexus-brand/_shared/fonts/ibm-plex-sans-pi-600-normal.woff2") format("woff2"); unicode-range: U+0E3F, U+2000-200D, U+2015, U+2028-2029, U+202F, U+2032-2033, U+2070, U+2074-2079, U+2080-2089, U+2113, U+2116, U+2126, U+212E, U+2150-2151, U+2153-215E, U+2190-2199, U+21A9-21AA, U+21B0-21B3, U+21B6-21B7, U+21BA-21BB, U+21C4, U+21C6, U+2202, U+2206, U+220F, U+2211, U+2215, U+221A, U+221E, U+222B, U+2248, U+2260, U+2264-2265, U+25CA, U+2713, U+274C, U+2B0E-2B11, U+ECE0, U+EFCC, U+FEFF, U+FFFD; }
@font-face { font-family: "IBM Plex Mono"; font-style: normal; font-weight: 400; font-display: swap; src: local("IBM Plex Mono"), local("IBMPlexMono"), url("/nexus-brand/_shared/fonts/ibm-plex-mono-cyrillic-400-normal.woff2") format("woff2"); unicode-range: U+0400-045F, U+0462-0463, U+046A-046B, U+0472-0475, U+0490-04C2, U+04CF-04D9, U+04DC-04E9, U+04EE-04F9, U+0524-0525; }
@font-face { font-family: "IBM Plex Mono"; font-style: normal; font-weight: 400; font-display: swap; src: local("IBM Plex Mono"), local("IBMPlexMono"), url("/nexus-brand/_shared/fonts/ibm-plex-mono-latin1-400-normal.woff2") format("woff2"); unicode-range: U+0020-007E, U+00A0-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2013-2014, U+2018-201A, U+201C-201E, U+2020-2022, U+2026, U+2030, U+2039-203A, U+2044, U+20AC, U+2122, U+2212, U+FB01-FB02; }
@font-face { font-family: "IBM Plex Mono"; font-style: normal; font-weight: 400; font-display: swap; src: local("IBM Plex Mono"), local("IBMPlexMono"), url("/nexus-brand/_shared/fonts/ibm-plex-mono-latin2-400-normal.woff2") format("woff2"); unicode-range: U+0100-0101, U+0104-0130, U+0132-0151, U+0154-017F, U+018F, U+0192, U+01A0-01A1, U+01AF-01B0, U+01FA-01FF, U+0218-021B, U+0237, U+0259, U+1E80-1E85, U+1E9E, U+20A1, U+20A4, U+20A6, U+20A8-20AA, U+20AD-20AE, U+20B1-20B2, U+20B4-20B5, U+20B8-20BA, U+20BD, U+20BF; }
@font-face { font-family: "IBM Plex Mono"; font-style: normal; font-weight: 400; font-display: swap; src: local("IBM Plex Mono"), local("IBMPlexMono"), url("/nexus-brand/_shared/fonts/ibm-plex-mono-pi-400-normal.woff2") format("woff2"); unicode-range: U+03C0, U+0E3F, U+2000-200D, U+2010-2012, U+2015, U+2028-2029, U+202F, U+2032-2033, U+203E, U+205F, U+2070, U+2074-2079, U+2080-2089, U+2113, U+2116, U+2126, U+212E, U+2150-2151, U+2153-215E, U+2190-2199, U+21A9-21AA, U+21B0-21B3, U+21B6-21B7, U+21BA-21BB, U+21C4, U+21C6, U+2202, U+2206, U+220F, U+2211, U+2215, U+2219-221A, U+221E, U+222B, U+2236, U+2248, U+2260, U+2264-2265, U+2400-2421, U+2500-259F, U+25CA, U+2713, U+274C, U+2B0E-2B11, U+3000, U+FEFF, U+FFFD; }
@font-face { font-family: "IBM Plex Mono"; font-style: normal; font-weight: 500; font-display: swap; src: local("IBM Plex Mono Medium"), local("IBMPlexMono-Medium"), url("/nexus-brand/_shared/fonts/ibm-plex-mono-cyrillic-500-normal.woff2") format("woff2"); unicode-range: U+0400-045F, U+0462-0463, U+046A-046B, U+0472-0475, U+0490-04C2, U+04CF-04D9, U+04DC-04E9, U+04EE-04F9, U+0524-0525; }
@font-face { font-family: "IBM Plex Mono"; font-style: normal; font-weight: 500; font-display: swap; src: local("IBM Plex Mono Medium"), local("IBMPlexMono-Medium"), url("/nexus-brand/_shared/fonts/ibm-plex-mono-latin1-500-normal.woff2") format("woff2"); unicode-range: U+0020-007E, U+00A0-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2013-2014, U+2018-201A, U+201C-201E, U+2020-2022, U+2026, U+2030, U+2039-203A, U+2044, U+20AC, U+2122, U+2212, U+FB01-FB02; }
@font-face { font-family: "IBM Plex Mono"; font-style: normal; font-weight: 500; font-display: swap; src: local("IBM Plex Mono Medium"), local("IBMPlexMono-Medium"), url("/nexus-brand/_shared/fonts/ibm-plex-mono-latin2-500-normal.woff2") format("woff2"); unicode-range: U+0100-0101, U+0104-0130, U+0132-0151, U+0154-017F, U+018F, U+0192, U+01A0-01A1, U+01AF-01B0, U+01FA-01FF, U+0218-021B, U+0237, U+0259, U+1E80-1E85, U+1E9E, U+20A1, U+20A4, U+20A6, U+20A8-20AA, U+20AD-20AE, U+20B1-20B2, U+20B4-20B5, U+20B8-20BA, U+20BD, U+20BF; }
@font-face { font-family: "IBM Plex Mono"; font-style: normal; font-weight: 500; font-display: swap; src: local("IBM Plex Mono Medium"), local("IBMPlexMono-Medium"), url("/nexus-brand/_shared/fonts/ibm-plex-mono-pi-500-normal.woff2") format("woff2"); unicode-range: U+03C0, U+0E3F, U+2000-200D, U+2010-2012, U+2015, U+2028-2029, U+202F, U+2032-2033, U+203E, U+205F, U+2070, U+2074-2079, U+2080-2089, U+2113, U+2116, U+2126, U+212E, U+2150-2151, U+2153-215E, U+2190-2199, U+21A9-21AA, U+21B0-21B3, U+21B6-21B7, U+21BA-21BB, U+21C4, U+21C6, U+2202, U+2206, U+220F, U+2211, U+2215, U+2219-221A, U+221E, U+222B, U+2236, U+2248, U+2260, U+2264-2265, U+2400-2421, U+2500-259F, U+25CA, U+2713, U+274C, U+2B0E-2B11, U+3000, U+FEFF, U+FFFD; }
:root, html[data-theme="dark"] {
  --nx-font-sans: "IBM Plex Sans Variable", "IBM Plex Sans", Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --nx-font-mono: "IBM Plex Mono", "SFMono-Regular", Consolas, "Liberation Mono", monospace;
  --nx-bg-canvas: #000000;
  --nx-bg-surface: #0a0a0a;
  --nx-bg-elevated: #111111;
  --nx-bg-overlay: rgba(0, 0, 0, 0.88);
  --nx-bg-muted: #141414;
  --nx-bg-hover: #1a1a1a;
  --nx-bg-pressed: #222222;
  --nx-border-hairline: rgba(255, 255, 255, 0.1);
  --nx-border-hairline-strong: rgba(255, 255, 255, 0.2);
  --nx-border-subtle: #1a1a1a;
  --nx-border-default: #262626;
  --nx-border-strong: #3a3a3a;
  --nx-text-primary: #ffffff;
  --nx-text-primary-rgb: 255 255 255;
  --nx-system-accent: var(--nx-text-primary);
  --nx-system-accent-2: var(--nx-text-secondary);
  --nx-system-accent-rgb: var(--nx-text-primary-rgb);
  --nx-text-secondary: #d4d4d4;
  --nx-text-muted: #a3a3a3;
  --nx-text-disabled: #8c8c8c;
  --nx-accent: #8ab4f8;
  --nx-accent-strong: #a8c7fa;
  --nx-accent-soft: rgba(138, 180, 248, 0.12);
  --nx-accent-glow: rgba(138, 180, 248, 0.24);
  --nx-primary-bg: #ffffff;
  --nx-primary-hover: #e5e5e5;
  --nx-primary-active: #d4d4d4;
  --nx-primary-ink: #000000;
  --nx-info: #78d9ec;
  --nx-info-soft: rgba(120, 217, 236, 0.12);
  --nx-positive: #81c995;
  --nx-positive-soft: rgba(129, 201, 149, 0.12);
  --nx-caution: #fdd663;
  --nx-caution-soft: rgba(253, 214, 99, 0.12);
  --nx-critical: #f28b82;
  --nx-critical-soft: rgba(242, 139, 130, 0.12);
  --nx-quantum: #c58af9;
  --nx-quantum-soft: rgba(197, 138, 249, 0.12);
  --nx-focus: #8ab4f8;
  --nx-scene-accent: #ff5a52;
  --nx-scene-accent-soft: rgba(255, 90, 82, 0.14);
  --nx-shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.8);
  --nx-shadow-md: 0 4px 16px -2px rgba(0, 0, 0, 0.8), 0 0 0 1px rgba(255, 255, 255, 0.05);
  --nx-shadow-lg: 0 16px 36px -4px rgba(0, 0, 0, 0.9), 0 0 0 1px rgba(255, 255, 255, 0.07);
  --nx-shadow-glow: 0 0 24px -4px rgba(138, 180, 248, 0.2);
  --nx-glass-blur: 16px;
  --nx-space-1: 0.25rem;
  --nx-space-2: 0.5rem;
  --nx-space-3: 0.75rem;
  --nx-space-4: 1rem;
  --nx-space-5: 1.25rem;
  --nx-space-6: 1.5rem;
  --nx-space-8: 2rem;
  --nx-space-10: 2.5rem;
  --nx-space-12: 3rem;
  --nx-radius-chip: 4px;
  --nx-radius-xs: 4px;
  --nx-radius-sm: 5px;
  --nx-radius-md: 5px;
  --nx-radius-lg: 5px;
  --nx-radius-xl: 5px;
  --nx-text-xs: 0.75rem;
  --nx-text-sm: 0.875rem;
  --nx-text-md: 1rem;
  --nx-text-lg: 1.125rem;
  --nx-text-xl: 1.375rem;
  --nx-text-2xl: 1.75rem;
  --nx-leading-tight: 1.2;
  --nx-leading-normal: 1.5;
  --nx-header-height: 3.5rem;
  --nx-context-height: 3rem;
  --nx-mode-height: 2.875rem;
  --nx-nav-width: 17.5rem;
  --nx-nav-compact-width: 4.5rem;
  --nx-inspector-width: 22rem;
  --nx-evidence-height: 2.25rem;
  --nx-z-base: 0;
  --nx-z-sticky: 20;
  --nx-z-overlay: 50;
  --nx-z-dialog: 70;
  --nx-z-toast: 90;
  --nx-motion-fast: 120ms;
  --nx-motion-base: 180ms;
  --nx-ease-standard: cubic-bezier(0.2, 0, 0, 1);
  --nx-paper: var(--nx-bg-canvas);
  --nx-surface: var(--nx-bg-surface);
  --nx-elevated: var(--nx-bg-elevated);
  --nx-muted: var(--nx-bg-muted);
  --nx-hover: var(--nx-bg-hover);
  --nx-ink: var(--nx-text-primary);
  --nx-ink2: var(--nx-text-secondary);
  --nx-ink3: var(--nx-text-muted);
  --nx-line: var(--nx-border-hairline);
  --nx-line-strong: var(--nx-border-hairline-strong);
  --nx-link: var(--nx-accent);
  --nx-btn-bg: var(--nx-primary-bg);
  --nx-btn-ink: var(--nx-primary-ink);
  --nx-btn-hover: var(--nx-primary-hover);
  --nx-btn-hover-ink: var(--nx-primary-ink);
  --nx-btn-active: var(--nx-primary-active);
  --nx-btn-active-ink: var(--nx-primary-ink);
  --nx-ok: var(--nx-positive);
  --nx-bad: var(--nx-critical);
  --nx-warn: var(--nx-caution);
  --nx-sans: var(--nx-font-sans);
  --nx-mono: var(--nx-font-mono);
  --nx-r: var(--nx-radius-sm);
  --nx-r-chip: var(--nx-radius-chip);
  --nx-s1: 4px; --nx-s2: 8px; --nx-s3: 12px; --nx-s4: 16px; --nx-s5: 24px; --nx-s6: 32px; --nx-s7: 48px;
  --nx-bar-h: 56px; --nx-container: 1280px;
  --nx-holder: "Risk Academy";
  --nx-service: "NXS Learning";
  --nx-year: "2026";
  --nx-wordmark: "Risk Academy";
  color-scheme: dark;
}
html[data-theme="light"] {
  --nx-font-sans: "IBM Plex Sans Variable", "IBM Plex Sans", Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --nx-font-mono: "IBM Plex Mono", "SFMono-Regular", Consolas, "Liberation Mono", monospace;
  --nx-bg-canvas: #ffffff;
  --nx-bg-surface: #ffffff;
  --nx-bg-elevated: #fafafa;
  --nx-bg-overlay: rgba(255, 255, 255, 0.92);
  --nx-bg-muted: #f4f4f5;
  --nx-bg-hover: #ededed;
  --nx-bg-pressed: #e0e0e0;
  --nx-border-hairline: rgba(0, 0, 0, 0.1);
  --nx-border-hairline-strong: rgba(0, 0, 0, 0.2);
  --nx-border-subtle: #e8e8e8;
  --nx-border-default: #d4d4d4;
  --nx-border-strong: #a3a3a3;
  --nx-text-primary: #000000;
  --nx-text-primary-rgb: 0 0 0;
  --nx-system-accent: var(--nx-text-primary);
  --nx-system-accent-2: var(--nx-text-secondary);
  --nx-system-accent-rgb: var(--nx-text-primary-rgb);
  --nx-text-secondary: #262626;
  --nx-text-muted: #525252;
  --nx-text-disabled: #5e5e5e;
  --nx-accent: #1a73e8;
  --nx-accent-strong: #1557b0;
  --nx-accent-soft: rgba(26, 115, 232, 0.1);
  --nx-accent-glow: rgba(26, 115, 232, 0.2);
  --nx-primary-bg: #000000;
  --nx-primary-hover: #262626;
  --nx-primary-active: #404040;
  --nx-primary-ink: #ffffff;
  --nx-info: #0b7285;
  --nx-info-soft: rgba(11, 114, 133, 0.08);
  --nx-positive: #1e7e46;
  --nx-positive-soft: rgba(30, 126, 70, 0.08);
  --nx-caution: #b45309;
  --nx-caution-soft: rgba(180, 83, 9, 0.08);
  --nx-critical: #c62828;
  --nx-critical-soft: rgba(198, 40, 40, 0.08);
  --nx-quantum: #6d28d9;
  --nx-quantum-soft: rgba(109, 40, 217, 0.08);
  --nx-focus: #1a73e8;
  --nx-scene-accent: #d0021b;
  --nx-scene-accent-soft: rgba(208, 2, 27, 0.08);
  --nx-shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.06);
  --nx-shadow-md: 0 6px 16px -2px rgba(0, 0, 0, 0.08), 0 0 0 1px rgba(0, 0, 0, 0.04);
  --nx-shadow-lg: 0 16px 32px -4px rgba(0, 0, 0, 0.12), 0 0 0 1px rgba(0, 0, 0, 0.05);
  --nx-shadow-glow: 0 0 20px -2px rgba(26, 115, 232, 0.15);
  --nx-glass-blur: 16px;
  color-scheme: light;
}
/* NXS Learning: the unit inside the WordPress learning room (docs/academy/ADR-ONE-LEARNING-SURFACE.md). The room prints
 * the course chrome; the frame shows only the unit: lesson text (course-kit blocks), problems, open answers, drag and
 * drop, video. Composed from the Foundry UI/UX kit (docs/design/NEXUS_FOUNDRY_UI_UX_KIT.md, binding): tokens only,
 * hairline structure, weight and space for hierarchy, status by a 6px dot plus words, one inverted primary per view,
 * 5px controls and 4px chips, mono eyebrows. Course-kit blocks carry inline styles that read the same --nx-* tokens, so
 * they render exactly as in the room. tutor/plugins/nexus_theme.py links this sheet into every /xblock/ page and sets
 * <html data-theme> (the stored choice, dark when none) and data-nx-embed="room" inside the room. Logical properties only.
 */

/* ------------------------------------------------------------------ base */
html, body {
  background: var(--nx-bg-canvas) !important;
  color: var(--nx-text-secondary) !important;
  font-family: var(--nx-font-sans) !important;
  font-size: 16px;
  line-height: 1.7;
  -webkit-font-smoothing: antialiased;
}
html[data-nx-embed="room"], html[data-nx-embed="room"] body { background: transparent !important; }
html[data-nx-embed="room"] body { margin: 0 !important; padding: 0 !important; }
body, .xblock, .xblock *:not(code):not(pre):not(kbd):not(samp):not(.fa):not([class^="fa-"]):not([class*=" fa-"]):not([class*="icon"]):not(mjx-container):not(mjx-container *):not(.MathJax):not(.MathJax *) {
  font-family: var(--nx-font-sans) !important;
}
code, pre, kbd, samp { font-family: var(--nx-font-mono) !important; font-size: 0.875em; }
pre { background: var(--nx-bg-muted); border: 1px solid var(--nx-border-hairline); border-radius: var(--nx-radius-sm); padding: var(--nx-space-3) var(--nx-space-4); overflow: auto; }
.xblock h1, .xblock h2, .xblock h3, .xblock h4, .hd, .hd-2, .hd-3, .problem-header {
  color: var(--nx-text-primary) !important;
  font-weight: 500 !important;
  letter-spacing: -0.02em !important;
  line-height: 1.3 !important;
  text-transform: none !important;
}
a, .xblock a { color: var(--nx-accent) !important; text-underline-offset: 3px; }
a:hover { text-decoration-thickness: 2px; }
hr { border: 0; border-block-start: 1px solid var(--nx-border-hairline); margin-block: var(--nx-space-8); }
img, video, svg { max-width: 100%; height: auto; }
:focus-visible { outline: 2px solid var(--nx-focus) !important; outline-offset: 2px; box-shadow: none !important; }
::selection { background: var(--nx-accent-soft); color: var(--nx-text-primary); }

/* The vertical: the room's reading column; no card, no title (the room prints it). */
.vert-mod, .vert, .xblock-student_view-vertical { background: transparent !important; border: 0 !important; box-shadow: none !important; padding: 0 !important; }
.xblock-student_view-vertical > h2.unit-title, .vert-mod > h2.unit-title { display: none !important; }
.vert-mod > .vert { margin: 0 0 var(--nx-space-12) 0 !important; }
.vert-mod > .vert + .vert { padding-block-start: var(--nx-space-12) !important; border-block-start: 1px solid var(--nx-border-hairline) !important; }
html[data-nx-embed="room"] .bookmark-button-wrapper, html[data-nx-embed="room"] .bookmark-button,
html[data-nx-embed="room"] .sequence-nav, html[data-nx-embed="room"] .unit-navigation,
html[data-nx-embed="room"] .wrapper-footer, html[data-nx-embed="room"] header.global-header { display: none !important; }

/* Eyebrow (kit 5.6): mono 11px, 0.16em, caps, muted. */
.problems-wrapper .problem-progress, .openassessment .step__status, .openassessment .step__deadline,
.xblock--drag-and-drop .zone .zone-name, .problem .action .submission-feedback {
  font-family: var(--nx-font-mono) !important;
  font-size: 11px !important;
  font-weight: 500 !important;
  letter-spacing: 0.16em !important;
  text-transform: uppercase !important;
  color: var(--nx-text-muted) !important;
}

/* ------------------------------------------------------------------ buttons (kit 5.1) */
.xblock button, .xblock .btn, .xblock input[type="button"], .xblock input[type="submit"], .xblock .action-button {
  font-family: var(--nx-font-sans) !important;
  font-size: 14px !important;
  font-weight: 500 !important;
  min-height: 36px;
  padding: 0 var(--nx-space-4) !important;
  border-radius: var(--nx-radius-sm) !important;
  border: 1px solid var(--nx-border-hairline-strong) !important;
  background: transparent !important;
  background-image: none !important;
  color: var(--nx-text-primary) !important;
  box-shadow: none !important;
  text-shadow: none !important;
  text-transform: none !important;
  letter-spacing: 0 !important;
  cursor: pointer;
  transition: background-color var(--nx-motion-fast) var(--nx-ease-standard), border-color var(--nx-motion-fast) var(--nx-ease-standard);
}
.xblock button:hover:not(:disabled), .xblock .btn:hover:not(:disabled) { background: var(--nx-bg-hover) !important; }
.xblock button:disabled, .xblock .btn:disabled, .xblock button.is-disabled { color: var(--nx-text-disabled) !important; border-color: var(--nx-border-hairline) !important; cursor: not-allowed; }
/* The one primary per view: check an answer, submit a response, check a drag and drop. Inverted. */
.problem .action .submit, .problem .submit.btn-brand, .xblock .btn-brand, .xblock .btn-primary,
.openassessment .action--submit, .xblock--drag-and-drop .submit-answer-button {
  background: var(--nx-primary-bg) !important;
  border-color: var(--nx-primary-bg) !important;
  color: var(--nx-primary-ink) !important;
  min-height: 44px;
  padding: 0 var(--nx-space-6) !important;
}
.problem .action .submit:hover:not(:disabled), .xblock .btn-brand:hover:not(:disabled), .openassessment .action--submit:hover:not(:disabled), .xblock--drag-and-drop .submit-answer-button:hover:not(:disabled) {
  background: var(--nx-primary-hover) !important; border-color: var(--nx-primary-hover) !important;
}
.problem .action .submit:active, .openassessment .action--submit:active { background: var(--nx-primary-active) !important; }
/* Secondary actions as ghost (text) buttons. */
.problem .problem-action-btn, .problem .show, .problem .reset, .problem .save, .openassessment .action--save {
  border-color: transparent !important; color: var(--nx-text-secondary) !important;
}
.problem .problem-action-btn:hover, .openassessment .action--save:hover { color: var(--nx-text-primary) !important; }

/* ------------------------------------------------------------------ fields (kit 5.4) */
.xblock input[type="text"], .xblock input[type="number"], .xblock input[type="email"], .xblock input:not([type]), .xblock textarea, .xblock select {
  font-family: var(--nx-font-sans) !important;
  font-size: 16px !important;
  color: var(--nx-text-primary) !important;
  background: var(--nx-bg-surface) !important;
  border: 1px solid var(--nx-border-hairline-strong) !important;
  border-radius: var(--nx-radius-sm) !important;
  min-height: 44px;
  padding: var(--nx-space-2) var(--nx-space-3) !important;
  box-shadow: none !important;
}
.xblock input:focus, .xblock textarea:focus, .xblock select:focus { border-color: var(--nx-accent) !important; box-shadow: 0 0 0 3px var(--nx-accent-soft) !important; outline: none !important; }
.xblock textarea { min-height: 12rem; line-height: 1.6; inline-size: 100%; box-sizing: border-box; resize: vertical; }

/* ------------------------------------------------------------------ quiz (capa): the question card */
.problems-wrapper { margin: 0 !important; }
.problems-wrapper .problem {
  background: var(--nx-bg-surface) !important;
  border: 1px solid var(--nx-border-hairline) !important;
  border-radius: var(--nx-radius-sm) !important;
  padding: var(--nx-space-6) !important;
  color: var(--nx-text-secondary);
}
.problems-wrapper .problem-header { font-size: 20px !important; margin: 0 0 var(--nx-space-2) 0 !important; }
.problems-wrapper .problem-progress { display: block; margin: 0 0 var(--nx-space-5) 0 !important; }
.problem .wrapper-problem-response, .problem fieldset { border: 0; padding: 0; margin: 0 0 var(--nx-space-4) 0; min-inline-size: 0; }
.problem legend, .problem .question-description { color: var(--nx-text-primary); font-weight: 500; margin: 0 0 var(--nx-space-3) 0; padding: 0; font-size: 16px; }
/* Answers: full-row hit area, 56px, hairline-strong; selected = text-primary border on the accent soft fill. */
.problem .choicegroup label, .problem .choicetextgroup label, .problem .option-list label {
  position: relative;
  display: flex !important;
  align-items: center;
  gap: var(--nx-space-3);
  min-height: 56px;
  margin: 0 0 var(--nx-space-2) 0 !important;
  padding: var(--nx-space-3) var(--nx-space-4) !important;
  background: var(--nx-bg-canvas) !important;
  border: 1px solid var(--nx-border-hairline-strong) !important;
  border-radius: var(--nx-radius-sm) !important;
  color: var(--nx-text-primary) !important;
  font-size: 16px !important;
  line-height: 1.45;
  cursor: pointer;
  transition: background-color var(--nx-motion-fast) var(--nx-ease-standard), border-color var(--nx-motion-fast) var(--nx-ease-standard);
}
.problem .choicegroup label:hover { background: var(--nx-bg-hover) !important; }
.problem .choicegroup label:has(input:checked) { border-color: var(--nx-text-primary) !important; background: var(--nx-accent-soft) !important; }
.problem .choicegroup label:has(input:focus-visible) { outline: 2px solid var(--nx-focus); outline-offset: 2px; }
/* Custom radio and check: 18px, hairline-strong ring; checked = text-primary ring with a text-primary centre. */
.problem .choicegroup input[type="radio"], .problem .choicegroup input[type="checkbox"], .xblock input[type="radio"], .xblock input[type="checkbox"] {
  appearance: none; -webkit-appearance: none;
  flex: none; inline-size: 18px; block-size: 18px; margin: 0 !important;
  border: 1.5px solid var(--nx-border-hairline-strong); background: var(--nx-bg-surface);
  display: inline-grid; place-content: center; cursor: pointer;
}
.xblock input[type="radio"] { border-radius: 50%; }
.xblock input[type="checkbox"] { border-radius: 2px; }
.xblock input[type="radio"]:checked, .xblock input[type="checkbox"]:checked { border-color: var(--nx-text-primary); }
.xblock input[type="radio"]:checked::before { content: ""; inline-size: 8px; block-size: 8px; border-radius: 50%; background: var(--nx-text-primary); }
.xblock input[type="checkbox"]:checked::before {
  content: ""; inline-size: 10px; block-size: 6px; border-inline-start: 2px solid var(--nx-text-primary); border-block-end: 2px solid var(--nx-text-primary);
  transform: translateY(-1px) rotate(-45deg);
}
/* Result on the chosen answer: a 6px dot and a word in the state colour; the row itself stays neutral. */
.problem .choicegroup label.choicegroup_correct, .problem .choicegroup label.choicetextgroup_correct,
.problem .choicegroup label.choicegroup_incorrect, .problem .choicegroup label.choicetextgroup_incorrect {
  border-color: var(--nx-text-primary) !important; background: var(--nx-bg-canvas) !important;
}
.problem .choicegroup label.choicegroup_correct::after, .problem .choicegroup label.choicegroup_incorrect::after { display: none !important; }
.problem .status, .problem .status-icon { color: var(--nx-text-muted); }
.problem .status { display: inline-flex !important; align-items: center; gap: var(--nx-space-2); margin-inline-start: auto; font-size: 14px !important; font-weight: 500; white-space: nowrap; }
.problem .status::before { content: ""; inline-size: 6px; block-size: 6px; border-radius: 50%; background: currentColor; flex: none; }
.problem .status.correct, .problem .correct .status-icon { color: var(--nx-positive) !important; }
.problem .status.incorrect, .problem .incorrect .status-icon { color: var(--nx-critical) !important; }
.problem .status.unanswered, .problem .status.unsubmitted { color: var(--nx-text-muted) !important; }
.problem .status .sr, .problem .status-icon .sr { position: absolute; clip: rect(0 0 0 0); width: 1px; height: 1px; overflow: hidden; }
/* Actions: one primary (Check), ghost Show answer and Reset, attempts as meta under the row. */
.problem .action {
  display: flex; flex-wrap: wrap; align-items: center; gap: var(--nx-space-2) var(--nx-space-3);
  margin-block-start: var(--nx-space-5); padding-block-start: var(--nx-space-5); border-block-start: 1px solid var(--nx-border-hairline);
}
.problem .action .submit-attempt-container { display: flex; flex-wrap: wrap; align-items: center; gap: var(--nx-space-3); }
.problem .action .submission-feedback { flex-basis: 100%; letter-spacing: 0.08em !important; text-transform: none !important; font-size: 12px !important; }
.problem .problem-action-buttons-wrapper { display: flex; gap: var(--nx-space-1); margin: 0; margin-inline-start: auto; }
/* Feedback and hints: banner (kit 5.7): elevated surface, hairline-strong border, tone only on the border and the dot. */
.notification, .problem .notification, .problem .hint-text, .problem .solution-span > span, .problem .detailed-solution, .problem .feedback-hint-text {
  position: relative;
  background: var(--nx-bg-elevated) !important;
  color: var(--nx-text-secondary) !important;
  border: 1px solid var(--nx-border-hairline-strong) !important;
  border-radius: var(--nx-radius-sm) !important;
  box-shadow: none !important;
  padding: var(--nx-space-4) var(--nx-space-5) !important;
  margin-block-start: var(--nx-space-4) !important;
  font-size: 15px;
}
.notification .notification-message, .notification .icon { color: var(--nx-text-primary) !important; }
.notification .icon { display: none !important; }
.notification .notification-message { display: inline-flex; align-items: center; gap: var(--nx-space-2); font-weight: 500; }
.notification .notification-message::before { content: ""; inline-size: 6px; block-size: 6px; border-radius: 50%; background: var(--nx-text-muted); flex: none; }
.notification.success, .notification.correct { border-color: color-mix(in srgb, var(--nx-positive) 55%, transparent) !important; }
.notification.success .notification-message::before, .notification.correct .notification-message::before { background: var(--nx-positive); }
.notification.error, .notification.incorrect { border-color: color-mix(in srgb, var(--nx-critical) 55%, transparent) !important; }
.notification.error .notification-message::before, .notification.incorrect .notification-message::before { background: var(--nx-critical); }
.notification.warning .notification-message::before { background: var(--nx-caution); }
.problem .detailed-solution > p:first-child, .problem .hint-label {
  font-family: var(--nx-font-mono) !important; font-size: 11px; letter-spacing: 0.16em; text-transform: uppercase; color: var(--nx-text-muted); margin: 0 0 var(--nx-space-2);
}
.problem .capa_inputtype.textline input, .problem .inputtype input { max-inline-size: 24rem; }

/* ------------------------------------------------------------------ open answer (ORA2): steps as one card each */
.openassessment, .openassessment__steps, .openassessment .wrapper--step { background: transparent !important; color: var(--nx-text-secondary) !important; border: 0 !important; box-shadow: none !important; }
.openassessment__steps { list-style: none !important; margin: 0 !important; padding: 0 !important; counter-reset: nx-step; display: grid; gap: var(--nx-space-3); }
.openassessment .step {
  list-style: none !important; margin: 0 !important; padding: 0 !important; counter-increment: nx-step;
  border: 1px solid var(--nx-border-hairline) !important; border-radius: var(--nx-radius-sm) !important;
  background: var(--nx-bg-surface) !important; overflow: hidden;
}
.openassessment .step::marker { content: none; }
.openassessment .step__header { background: transparent !important; border: 0 !important; margin: 0 !important; }
.openassessment .step__title {
  display: flex !important; flex-wrap: wrap; align-items: center; gap: var(--nx-space-2) var(--nx-space-4);
  margin: 0 !important; padding: var(--nx-space-4) var(--nx-space-5) !important; font-size: 16px !important;
  background: transparent !important; color: var(--nx-text-primary) !important;
}
.openassessment .step__label { font-weight: 500; }
.openassessment .step__label::before { content: counter(nx-step, decimal-leading-zero); font-family: var(--nx-font-mono) !important; font-size: 11px; letter-spacing: 0.16em; color: var(--nx-text-muted); margin-inline-end: var(--nx-space-3); }
.openassessment .step__status { margin-inline-start: auto; display: inline-flex; align-items: center; gap: var(--nx-space-2); background: transparent !important; border: 0 !important; padding: 0 !important; }
.openassessment .step__status::before { content: ""; inline-size: 6px; block-size: 6px; border-radius: 50%; background: var(--nx-text-muted); }
.openassessment .step__status__label { position: absolute; clip: rect(0 0 0 0); width: 1px; height: 1px; overflow: hidden; }
.openassessment .is--in-progress .step__status::before, .openassessment .step--in-progress .step__status::before { background: var(--nx-accent); }
.openassessment .is--complete .step__status::before, .openassessment .step--complete .step__status::before { background: var(--nx-positive); }
.openassessment .is--complete .step__status, .openassessment .step--complete .step__status { color: var(--nx-positive) !important; }
.openassessment .step__content, .openassessment .step > div:not(.step__header) { padding: 0 var(--nx-space-5) var(--nx-space-5) !important; border-block-start: 1px solid var(--nx-border-hairline); padding-block-start: var(--nx-space-5) !important; }
.openassessment .prompt, .openassessment .submission__answer__part__prompt { color: var(--nx-text-primary); font-size: 16px; }
.openassessment .step__actions, .openassessment .list--actions { display: flex; flex-wrap: wrap; gap: var(--nx-space-3); justify-content: flex-end; margin-block-start: var(--nx-space-4) !important; padding: 0 !important; list-style: none; }
.openassessment .rubric__criterion, .openassessment .assessment__rubric__question { border: 1px solid var(--nx-border-hairline) !important; border-radius: var(--nx-radius-sm); padding: var(--nx-space-4) !important; margin-block-end: var(--nx-space-3) !important; }
.openassessment .question__answers .answer, .openassessment .rubric__criterion .answer {
  border: 1px solid var(--nx-border-hairline-strong) !important; border-radius: var(--nx-radius-sm) !important; padding: var(--nx-space-3) var(--nx-space-4) !important;
  margin-block-end: var(--nx-space-2) !important; background: var(--nx-bg-canvas) !important; min-height: 44px;
}
.openassessment .answer__points { font-family: var(--nx-font-mono) !important; font-size: 12px; color: var(--nx-text-muted) !important; }
.openassessment .message, .openassessment .message--complete, .openassessment .message--error, .openassessment .message--warning {
  background: var(--nx-bg-elevated) !important; color: var(--nx-text-secondary) !important; border: 1px solid var(--nx-border-hairline-strong) !important; border-radius: var(--nx-radius-sm) !important;
}
.openassessment .message--complete { border-color: color-mix(in srgb, var(--nx-positive) 55%, transparent) !important; }
.openassessment .message--error, .openassessment .message--warning { border-color: color-mix(in srgb, var(--nx-critical) 55%, transparent) !important; }

/* ------------------------------------------------------------------ drag and drop v2 */
.xblock--drag-and-drop, .xblock--drag-and-drop .themed-xblock { background: transparent !important; color: var(--nx-text-secondary) !important; }
.xblock--drag-and-drop .item-bank {
  display: flex; flex-wrap: wrap; gap: var(--nx-space-2); padding: var(--nx-space-4) !important;
  background: var(--nx-bg-surface) !important; border: 1px solid var(--nx-border-hairline) !important; border-radius: var(--nx-radius-sm) !important;
}
.xblock--drag-and-drop .option {
  display: inline-flex !important; align-items: center; gap: var(--nx-space-2);
  min-height: 44px; min-width: 44px; padding: var(--nx-space-2) var(--nx-space-4) !important; padding-inline-start: var(--nx-space-3) !important;
  background: var(--nx-bg-canvas) !important; color: var(--nx-text-primary) !important;
  border: 1px solid var(--nx-border-hairline-strong) !important; border-radius: var(--nx-radius-chip) !important;
  box-shadow: none !important; font-size: 15px !important; line-height: 1.4; cursor: grab;
  transition: border-color var(--nx-motion-fast) var(--nx-ease-standard), background-color var(--nx-motion-fast) var(--nx-ease-standard);
}
/* Grab handle: two columns of three 2px dots in the muted ink. */
.xblock--drag-and-drop .option::before {
  content: ""; flex: none; inline-size: 6px; block-size: 14px; opacity: 0.7;
  background-image: radial-gradient(circle, var(--nx-text-muted) 1px, transparent 1.2px); background-size: 4px 4px; background-position: 0 0;
}
.xblock--drag-and-drop .option:hover { background: var(--nx-bg-hover) !important; border-color: var(--nx-text-primary) !important; }
.xblock--drag-and-drop .option.grabbed, .xblock--drag-and-drop .option[aria-grabbed="true"] { border-color: var(--nx-text-primary) !important; background: var(--nx-accent-soft) !important; cursor: grabbing; }
.xblock--drag-and-drop .option.correct, .xblock--drag-and-drop .option.incorrect { border-color: var(--nx-text-primary) !important; }
.xblock--drag-and-drop .option.correct::after, .xblock--drag-and-drop .option.incorrect::after { content: ""; inline-size: 6px; block-size: 6px; border-radius: 50%; margin-inline-start: var(--nx-space-1); }
.xblock--drag-and-drop .option.correct::after { background: var(--nx-positive); }
.xblock--drag-and-drop .option.incorrect::after { background: var(--nx-critical); }
.xblock--drag-and-drop .target { display: grid; gap: var(--nx-space-3); padding: 0 !important; margin-block-start: var(--nx-space-4); background: transparent !important; border: 0 !important; }
.xblock--drag-and-drop .zone {
  min-height: 7rem; padding: var(--nx-space-4) !important;
  background: var(--nx-bg-surface) !important; border: 1px dashed var(--nx-border-hairline-strong) !important; border-radius: var(--nx-radius-sm) !important;
}
.xblock--drag-and-drop .zone .zone-name, .xblock--drag-and-drop .zone p { margin: 0 0 var(--nx-space-3) 0 !important; }
.xblock--drag-and-drop .zone.dropping, .xblock--drag-and-drop .zone:focus, .xblock--drag-and-drop .zone:focus-within { border-style: solid !important; border-color: var(--nx-accent) !important; background: var(--nx-accent-soft) !important; }
.xblock--drag-and-drop .feedback, .xblock--drag-and-drop .popup {
  margin-block-start: var(--nx-space-4); padding: var(--nx-space-4) var(--nx-space-5) !important;
  background: var(--nx-bg-elevated) !important; color: var(--nx-text-secondary) !important;
  border: 1px solid var(--nx-border-hairline-strong) !important; border-radius: var(--nx-radius-sm) !important; box-shadow: none !important;
}
.xblock--drag-and-drop .feedback .message, .xblock--drag-and-drop .popup .popup-content { color: var(--nx-text-primary) !important; }
.xblock--drag-and-drop .keyboard-help-button, .xblock--drag-and-drop .sidebar-buttons .btn-default { border-color: transparent !important; color: var(--nx-text-secondary) !important; }

/* ------------------------------------------------------------------ video */
.video, .xblock-student_view-video { background: transparent !important; }
.video .video-wrapper, .video .tc-wrapper { border-radius: var(--nx-radius-sm); overflow: hidden; border: 1px solid var(--nx-border-hairline); }
.video .subtitles, .video .wrapper-downloads, .video .wrapper-transcript-feedback { background: var(--nx-bg-surface) !important; color: var(--nx-text-secondary) !important; border-color: var(--nx-border-hairline) !important; }
.video .subtitles li.current { color: var(--nx-text-primary) !important; font-weight: 500; }

/* ------------------------------------------------------------------ lesson text (course-kit blocks carry their own inline styles on the same tokens) */
.xblock-student_view-html { max-inline-size: none; font-size: 16px; line-height: 1.7; }
.xblock-student_view-html :is(p, li) { color: var(--nx-text-secondary); }

/* ------------------------------------------------------------------ right to left and motion */
:lang(ar) body, :lang(fa) body, :lang(ckb) body, :lang(ur) body, :lang(azb) body, :lang(prs) body {
  --nx-font-sans: "IBM Plex Sans Arabic", "IBM Plex Sans", system-ui, sans-serif; line-height: 1.85;
}
[dir="rtl"] .problems-wrapper .problem-progress, [dir="rtl"] .openassessment .step__status, [dir="rtl"] .openassessment .step__label::before { letter-spacing: 0 !important; }
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: 0.01ms !important; transition-duration: 0.01ms !important; } }
@media print { html, body { background: #fff !important; color: #000 !important; } .problem .action, .xblock--drag-and-drop .sidebar-buttons { display: none !important; } }
