/**
 * Course Explorer – form-js Viewer Style Overrides
 *
 * These styles override the default form-js appearance to match
 * the Course Explorer design system (CE custom properties).
 * Loaded AFTER form-js.css and course-explorer-public.css.
 */

/* ============================================================
   1. Container & Layout
   ============================================================ */
.ce-wrap .ce-formjs-container {
  font-family: var(--ce-font);
  color: var(--ce-text);
}

.ce-wrap .ce-card--formjs {
  max-width: 780px;
  margin: 16px auto 0;
  padding: clamp(28px, 4vw, 48px);
  border: 1px solid var(--ce-border);
  box-shadow:
    0 1px 3px rgba(15, 23, 42, 0.04),
    0 6px 24px rgba(15, 23, 42, 0.06);
  border-radius: var(--ce-radius-lg, 8px);
  background: #fff;
}

.ce-wrap .ce-formjs-container .fjs-container {
  padding: 0 !important;
  font-family: var(--ce-font) !important;
}

.ce-wrap .ce-formjs-container .fjs-layout-row {
  display: grid !important;
  grid-template-columns: repeat(16, minmax(0, 1fr)) !important;
  width: 100%;
  gap: 12px;
  align-items: flex-start;
}

.ce-wrap .ce-formjs-container .fjs-columns {
  width: 100%;
  gap: 12px;
  align-items: flex-start;
}

.ce-wrap .ce-formjs-container .fjs-layout-column {
  grid-column: span 16;
  min-width: 0;
  width: 100%;
  max-width: 100%;
  flex: none !important;
  padding-left: 0 !important;
  padding-right: 0 !important;
  box-sizing: border-box;
}

.ce-wrap .ce-formjs-container .fjs-layout-column.cds--col-lg-1 {
  grid-column: span 1;
}

.ce-wrap .ce-formjs-container .fjs-layout-column.cds--col-lg-2 {
  grid-column: span 2;
}

.ce-wrap .ce-formjs-container .fjs-layout-column.cds--col-lg-3 {
  grid-column: span 3;
}

.ce-wrap .ce-formjs-container .fjs-layout-column.cds--col-lg-4 {
  grid-column: span 4;
}

.ce-wrap .ce-formjs-container .fjs-layout-column.cds--col-lg-5 {
  grid-column: span 5;
}

.ce-wrap .ce-formjs-container .fjs-layout-column.cds--col-lg-6 {
  grid-column: span 6;
}

.ce-wrap .ce-formjs-container .fjs-layout-column.cds--col-lg-7 {
  grid-column: span 7;
}

.ce-wrap .ce-formjs-container .fjs-layout-column.cds--col-lg-8 {
  grid-column: span 8;
}

.ce-wrap .ce-formjs-container .fjs-layout-column.cds--col-lg-9 {
  grid-column: span 9;
}

.ce-wrap .ce-formjs-container .fjs-layout-column.cds--col-lg-10 {
  grid-column: span 10;
}

.ce-wrap .ce-formjs-container .fjs-layout-column.cds--col-lg-11 {
  grid-column: span 11;
}

.ce-wrap .ce-formjs-container .fjs-layout-column.cds--col-lg-12 {
  grid-column: span 12;
}

.ce-wrap .ce-formjs-container .fjs-layout-column.cds--col-lg-13 {
  grid-column: span 13;
}

.ce-wrap .ce-formjs-container .fjs-layout-column.cds--col-lg-14 {
  grid-column: span 14;
}

.ce-wrap .ce-formjs-container .fjs-layout-column.cds--col-lg-15 {
  grid-column: span 15;
}

.ce-wrap .ce-formjs-container .fjs-layout-column.cds--col-lg-16 {
  grid-column: span 16;
}

.ce-wrap .ce-formjs-container .fjs-element,
.ce-wrap .ce-formjs-container .fjs-form-field {
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
}

.ce-wrap .ce-formjs-container .fjs-vertical-layout {
  gap: 0;
}

/* Portal forms should feel native inside the dashboard panel, not like a nested card. */
.ce-wrap .ce-portal__panel .ce-formjs-container {
  padding: 2px 0 0;
}

.ce-wrap .ce-portal__panel .ce-formjs-container .fjs-layout-row {
  gap: 14px;
}

.ce-wrap .ce-portal__panel .ce-formjs-container .fjs-form-field {
  margin-bottom: 14px !important;
}

.ce-wrap .ce-portal__panel .ce-formjs-container .fjs-form-field:last-child {
  margin-bottom: 0 !important;
}

.ce-wrap .ce-portal__panel .ce-formjs-container .fjs-form-field-description {
  margin-top: 6px !important;
  max-width: 62ch;
}

.ce-wrap .ce-portal__panel .ce-formjs-container .fjs-form-field-text {
  color: var(--ce-text);
}

.ce-wrap .ce-portal__panel .ce-formjs-container .fjs-separator hr {
  margin: 20px 0 24px !important;
}

.ce-wrap .ce-formjs-container .fjs-form-field-grouplike,
.ce-wrap .ce-formjs-container .fjs-form-field-grouplike.fjs-outlined {
  margin: 6px 0 0 !important;
  padding: 18px 20px 12px !important;
  border: 1px solid var(--ce-border) !important;
  border-radius: var(--ce-radius-lg, var(--ce-radius, 8px)) !important;
  outline: none !important;
  background: #fff !important;
  box-sizing: border-box !important;
}

.ce-wrap .ce-formjs-container .fjs-form-field-grouplike > .cds--grid,
.ce-wrap .ce-formjs-container .fjs-form-field-grouplike .cds--grid {
  padding-left: 0 !important;
  padding-right: 0 !important;
}

.ce-wrap .ce-formjs-container .ce-address-block.ce-address-block--plain {
  margin: 0 !important;
  padding: 0 !important;
  border: 0 !important;
  border-radius: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
}

.ce-wrap .ce-formjs-container .ce-address-block.ce-address-block--hide-title > .fjs-form-field-label {
  display: none !important;
}

.ce-wrap .ce-formjs-container .ce-address-block.ce-address-block--plain > .fjs-children {
  padding: 0 !important;
}

.ce-wrap .ce-formjs-container .ce-address-block .fjs-layout-row {
  margin-left: 0 !important;
  margin-right: 0 !important;
  gap: 12px !important;
}

.ce-wrap .ce-portal__panel .ce-formjs-container .fjs-form-field-button,
.ce-wrap .ce-portal__panel .ce-formjs-container .fjs-button[type="submit"] {
  display: none !important;
}

.ce-wrap .ce-register-form .ce-formjs-container .fjs-form-field-button,
.ce-wrap .ce-register-form .ce-formjs-container .fjs-button[type="submit"] {
  display: none !important;
}

/* ============================================================
   2. Labels
   ============================================================ */
.ce-wrap .ce-formjs-container .fjs-form-field-label {
  font-size: 0.875rem !important;
  font-weight: 600 !important;
  color: var(--ce-text) !important;
  margin-bottom: 4px !important;
  font-family: var(--ce-font) !important;
  line-height: 1.35 !important;
}

.ce-wrap .ce-formjs-container .fjs-form-field-label .fjs-asterix {
  color: var(--ce-error) !important;
  margin-left: 3px !important;
}

/* ============================================================
   3. Inputs, Selects, Textareas
   ============================================================ */
.ce-wrap .ce-formjs-container .fjs-input,
.ce-wrap .ce-formjs-container .fjs-textarea,
.ce-wrap .ce-formjs-container .fjs-select {
  background: var(--ce-bg-subtle, #f8f9fa) !important;
  background-color: var(--ce-bg-subtle, #f8f9fa) !important;
  border: 1px solid var(--ce-border) !important;
  border-radius: var(--ce-radius) !important;
  min-height: 50px !important;
  padding: 12px 14px !important;
  font-size: 0.938rem !important;
  font-family: var(--ce-font) !important;
  color: var(--ce-text) !important;
  line-height: 1.5 !important;
  width: 100% !important;
  max-width: 100% !important;
  height: 50px !important;
  box-shadow: none !important;
  transition:
    border-color 200ms ease,
    box-shadow 200ms ease,
    background-color 200ms ease !important;
  box-sizing: border-box !important;
}

.ce-wrap .ce-formjs-container .fjs-select-anchor,
.ce-wrap .ce-formjs-container .fjs-select-display,
.ce-wrap .ce-formjs-container .fjs-taglist {
  width: 100% !important;
}

.ce-wrap .ce-formjs-container .fjs-select-anchor {
  display: block !important;
}

.ce-wrap .ce-formjs-container .fjs-select-hidden-input {
  position: absolute !important;
  width: 1px !important;
  min-width: 1px !important;
  max-width: 1px !important;
  height: 1px !important;
  min-height: 1px !important;
  padding: 0 !important;
  margin: 0 !important;
  border: 0 !important;
  opacity: 0 !important;
  overflow: hidden !important;
  pointer-events: none !important;
  clip-path: inset(50%) !important;
  white-space: nowrap !important;
}

.ce-wrap .ce-formjs-container .fjs-select-display,
.ce-wrap .ce-formjs-container .fjs-taglist-input-container input,
.ce-wrap .ce-formjs-container .fjs-dropdownlist-search input {
  background: var(--ce-bg-subtle, #f8f9fa) !important;
  border: 1px solid var(--ce-border) !important;
  border-radius: var(--ce-radius) !important;
  min-height: 50px !important;
  padding: 12px 14px !important;
  font-size: 0.938rem !important;
  font-family: var(--ce-font) !important;
  color: var(--ce-text) !important;
  display: flex !important;
  align-items: center !important;
  box-sizing: border-box !important;
  transition:
    border-color 200ms ease,
    box-shadow 200ms ease !important;
}

/* Select-display inside input-group: border comes from the group wrapper */
.ce-wrap .ce-formjs-container .fjs-input-group .fjs-select-display {
  border: none !important;
  border-radius: inherit !important;
  min-height: 48px !important;
  height: 48px !important;
  background: transparent !important;
  justify-content: space-between !important;
  gap: 8px !important;
  overflow: hidden !important;
  white-space: nowrap !important;
  text-overflow: ellipsis !important;
}

.ce-wrap .ce-formjs-container .fjs-select-display.fjs-select-placeholder {
  color: #94a3b8 !important;
}

/* Focus state */
.ce-wrap .ce-formjs-container .fjs-input:focus,
.ce-wrap .ce-formjs-container .fjs-textarea:focus,
.ce-wrap .ce-formjs-container .fjs-select:focus {
  outline: none !important;
  border-color: var(--ce-primary) !important;
  box-shadow: 0 0 0 3px var(--ce-primary-light) !important;
  background: #fff !important;
  background-color: #fff !important;
}

.ce-wrap .ce-formjs-container .fjs-input-group:focus-within {
  border-color: var(--ce-primary) !important;
  box-shadow: 0 0 0 3px var(--ce-primary-light) !important;
}

/* Input group */
.ce-wrap .ce-formjs-container .fjs-input-group {
  border: 1px solid var(--ce-border) !important;
  border-radius: var(--ce-radius) !important;
  overflow: visible !important;
  position: relative !important;
  background: var(--ce-bg-subtle, #f8f9fa) !important;
  min-height: 50px !important;
  height: 50px !important;
  display: flex !important;
  align-items: stretch !important;
  transition:
    border-color 200ms ease,
    box-shadow 200ms ease !important;
}

.ce-wrap .ce-formjs-container .fjs-form-field-select .fjs-input-group:hover {
  border-color: var(--ce-primary) !important;
}

.ce-wrap .ce-formjs-container .fjs-form-field-select .fjs-input-group {
  display: grid !important;
  grid-template-columns: minmax(0, 1fr) auto auto !important;
  align-items: center !important;
}

.ce-wrap .ce-formjs-container .fjs-form-field-select[data-ce-required="true"] .fjs-input-group {
  grid-template-columns: minmax(0, 1fr) auto !important;
}

.ce-wrap .ce-formjs-container .fjs-input-group .fjs-input {
  border: none !important;
  border-radius: inherit !important;
  box-shadow: none !important;
  background: transparent !important;
  min-height: 48px !important;
  height: 48px !important;
}

.ce-wrap .ce-formjs-container .fjs-input-group .fjs-input[readonly] {
  cursor: default !important;
}

.ce-wrap .ce-formjs-container .fjs-input-group .fjs-input-adornment {
  border-color: var(--ce-border) !important;
  color: var(--ce-text-secondary) !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  padding: 0 10px !important;
}

.ce-wrap .ce-formjs-container .fjs-input-group .fjs-select-arrow {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  align-self: center !important;
  height: 100% !important;
  min-height: 48px !important;
  padding: 0 12px 0 8px !important;
  color: var(--ce-text-secondary) !important;
  transition:
    color 200ms ease,
    transform 200ms ease !important;
}

.ce-wrap .ce-formjs-container .fjs-form-field-select .fjs-select-display {
  width: auto !important;
  min-width: 0 !important;
  flex: 1 1 auto !important;
}

.ce-wrap .ce-formjs-container .fjs-form-field-select .fjs-select-cross,
.ce-wrap .ce-formjs-container .fjs-form-field-select .fjs-select-arrow {
  width: 18px !important;
  min-width: 18px !important;
  max-width: 18px !important;
  flex: 0 0 18px !important;
}

.ce-wrap .ce-formjs-container .fjs-input-group > .fjs-select-cross {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  align-self: stretch !important;
  height: 48px !important;
  min-height: 48px !important;
  margin-left: -4px !important;
  margin-top: 0 !important;
  line-height: 1 !important;
  transform: none !important;
  cursor: pointer !important;
}

.ce-wrap .ce-formjs-container .fjs-form-field-select[data-ce-required="true"] .fjs-input-group > .fjs-select-cross {
  display: none !important;
}

.ce-wrap .ce-formjs-container .fjs-input-group > .fjs-select-cross svg {
  display: block !important;
  margin: auto !important;
  transform: translateY(4px) !important;
}

.ce-wrap .ce-formjs-container .fjs-form-field-select .fjs-select-hidden-input {
  display: block !important;
  position: absolute !important;
  top: 0 !important;
  left: 0 !important;
  width: 1px !important;
  min-width: 1px !important;
  max-width: 1px !important;
  height: 1px !important;
  min-height: 1px !important;
  max-height: 1px !important;
}

.ce-wrap .ce-formjs-container .fjs-input-group .fjs-select-arrow svg {
  display: block !important;
  width: 14px !important;
  min-width: 14px !important;
  max-width: 14px !important;
  height: 14px !important;
  max-height: 14px !important;
  flex: 0 0 14px !important;
  margin: auto !important;
  transform: translateY(4px) !important;
  transition: none !important;
}

.ce-wrap .ce-formjs-container .fjs-input-group .fjs-select-cross svg,
.ce-wrap .ce-formjs-container .fjs-form-field-datetime .fjs-input-adornment svg {
  display: block !important;
  width: 16px !important;
  min-width: 16px !important;
  max-width: 16px !important;
  height: 16px !important;
  max-height: 16px !important;
  flex: 0 0 16px !important;
}

/* Placeholder */
.ce-wrap .ce-formjs-container .fjs-input::placeholder,
.ce-wrap .ce-formjs-container .fjs-textarea::placeholder {
  color: #94a3b8 !important;
  opacity: 1 !important;
}

/* ============================================================
   4. Checkboxes & Radios
   ============================================================ */
.ce-wrap .ce-formjs-container .fjs-input[type="checkbox"],
.ce-wrap .ce-formjs-container .fjs-input[type="radio"] {
  width: 18px !important;
  min-width: 18px !important;
  height: 25px !important;
  min-height: 25px !important;
  padding: 0 !important;
  margin: 0 8px 0 0 !important;
  accent-color: var(--ce-primary) !important;
  cursor: pointer !important;
  flex-shrink: 0 !important;
}

.ce-wrap .ce-formjs-container .fjs-form-field-checkbox .fjs-form-field-label,
.ce-wrap .ce-formjs-container .fjs-form-field-checklist .fjs-inline-label .fjs-form-field-label,
.ce-wrap .ce-formjs-container .fjs-form-field-radio .fjs-inline-label .fjs-form-field-label {
  cursor: pointer !important;
  font-weight: 400 !important;
  font-size: 0.875rem !important;
  color: var(--ce-text) !important;
  line-height: 1.5 !important;
}

.ce-wrap .ce-formjs-container .ce-consent-legal-link {
  color: var(--ce-primary) !important;
  font-weight: 600 !important;
  text-decoration: underline !important;
  text-underline-offset: 2px !important;
}

.ce-wrap .ce-formjs-container .ce-consent-label-content {
  display: inline !important;
}

.ce-wrap .ce-formjs-container .ce-consent-legal-link:hover,
.ce-wrap .ce-formjs-container .ce-consent-legal-link:focus {
  color: var(--ce-primary-dark, var(--ce-primary)) !important;
}

.ce-wrap .ce-formjs-container .ce-consent-field {
  margin-top: 0.25rem !important;
}

.ce-wrap .ce-formjs-container .fjs-form-field-checklist .fjs-inline-label,
.ce-wrap .ce-formjs-container .ce-consent-field .fjs-inline-label,
.ce-wrap .ce-formjs-container .ce-consent-field .fjs-checkbox-group {
  align-items: flex-start !important;
  gap: 0.75rem !important;
  width: 100% !important;
  min-width: 0 !important;
  overflow: visible !important;
}

.ce-wrap .ce-formjs-container .fjs-form-field-radio .fjs-inline-label {
  align-items: center !important;
  gap: 0.75rem !important;
  width: 100% !important;
  min-width: 0 !important;
  overflow: visible !important;
}

.ce-wrap .ce-formjs-container .fjs-form-field-radio .fjs-radio {
  margin-bottom: 4px !important;
}

.ce-wrap .ce-formjs-container .fjs-form-field-radio .fjs-radio:last-child {
  margin-bottom: 0 !important;
}

.ce-wrap .ce-formjs-container .ce-consent-field .fjs-input[type="checkbox"] {
  width: 18px !important;
  min-width: 18px !important;
  height: 18px !important;
  min-height: 18px !important;
  margin: 2px 0 0 !important;
  border-radius: 4px !important;
}

.ce-wrap .ce-formjs-container .fjs-form-field-checklist .fjs-inline-label .fjs-form-field-label,
.ce-wrap .ce-formjs-container .fjs-form-field-radio .fjs-inline-label .fjs-form-field-label,
.ce-wrap .ce-formjs-container .ce-consent-field .fjs-inline-label .fjs-form-field-label {
  display: block !important;
  flex: 1 1 auto !important;
  min-width: 0 !important;
  margin-bottom: 0 !important;
  white-space: normal !important;
  overflow: visible !important;
  text-overflow: clip !important;
  overflow-wrap: anywhere !important;
  word-break: break-word !important;
}

.ce-wrap .ce-formjs-container .ce-consent-field .fjs-form-field-label {
  color: var(--ce-text) !important;
  font-size: 0.9375rem !important;
  line-height: 1.45 !important;
}

/* ============================================================
   5. Validation Errors
   ============================================================ */
.ce-wrap .ce-formjs-container .fjs-has-errors .fjs-input,
.ce-wrap .ce-formjs-container .fjs-has-errors .fjs-textarea,
.ce-wrap .ce-formjs-container .fjs-has-errors .fjs-select,
.ce-wrap .ce-formjs-container .fjs-has-errors .fjs-taglist,
.ce-wrap .ce-formjs-container .fjs-has-errors .fjs-input-group,
.ce-wrap .ce-formjs-container .hasErrors .fjs-input,
.ce-wrap .ce-formjs-container .hasErrors .fjs-textarea,
.ce-wrap .ce-formjs-container .hasErrors .fjs-select,
.ce-wrap .ce-formjs-container .hasErrors .fjs-taglist,
.ce-wrap .ce-formjs-container .hasErrors .fjs-input-group {
  border-color: var(--ce-error) !important;
  background: #fff !important;
}

.ce-wrap .ce-formjs-container .fjs-has-errors .fjs-input-group::after,
.ce-wrap .ce-formjs-container .hasErrors .fjs-input-group::after {
  content: "" !important;
  position: absolute !important;
  inset: -1px !important;
  border: 1px solid var(--ce-error) !important;
  border-radius: inherit !important;
  pointer-events: none !important;
  z-index: 2 !important;
}

/* Inside input-group with errors: only the group gets the red border */
.ce-wrap .ce-formjs-container .fjs-has-errors .fjs-input-group .fjs-select-display,
.ce-wrap .ce-formjs-container .hasErrors .fjs-input-group .fjs-select-display {
  border: none !important;
  background: transparent !important;
}

.ce-wrap .ce-formjs-container .fjs-has-errors .fjs-input-group .fjs-input-adornment,
.ce-wrap .ce-formjs-container .hasErrors .fjs-input-group .fjs-input-adornment {
  border-color: var(--ce-error) !important;
}

.ce-wrap .ce-formjs-container .fjs-has-errors .fjs-input:focus,
.ce-wrap .ce-formjs-container .fjs-has-errors .fjs-textarea:focus,
.ce-wrap .ce-formjs-container .fjs-has-errors .fjs-select:focus,
.ce-wrap .ce-formjs-container .hasErrors .fjs-input:focus,
.ce-wrap .ce-formjs-container .hasErrors .fjs-textarea:focus,
.ce-wrap .ce-formjs-container .hasErrors .fjs-select:focus {
  box-shadow: 0 0 0 3px var(--ce-error-light) !important;
}

.ce-wrap .ce-formjs-container .fjs-has-errors .fjs-input-group:focus-within,
.ce-wrap .ce-formjs-container .hasErrors .fjs-input-group:focus-within {
  box-shadow: 0 0 0 3px var(--ce-error-light) !important;
}

.ce-wrap .ce-formjs-container .fjs-form-field-error {
  color: var(--ce-error, #dc2626) !important;
  font-size: 0.813rem !important;
  font-weight: 600 !important;
  margin-top: 4px !important;
  line-height: 1.35 !important;
}

.ce-wrap .ce-formjs-container .fjs-form-field-error ul,
.ce-wrap .ce-formjs-container .fjs-form-field-error li {
  color: inherit !important;
  list-style: none !important;
  margin: 0 !important;
  padding: 0 !important;
}

/* ============================================================
   6. Description / Hint Text
   ============================================================ */
.ce-wrap .ce-formjs-container .fjs-form-field-description {
  color: var(--ce-text-secondary) !important;
  font-size: 0.813rem !important;
  margin-top: 3px !important;
  line-height: 1.35 !important;
}

/* ============================================================
   7. Form Field Spacing
   ============================================================ */
.ce-wrap .ce-formjs-container .fjs-form-field {
  margin-bottom: 8px !important;
}

/* ============================================================
   8. Text / HTML blocks
   ============================================================ */
.ce-wrap .ce-formjs-container .fjs-form-field-text {
  font-size: 0.875rem;
  color: var(--ce-text-secondary);
  line-height: 1.6;
}

.ce-wrap .ce-formjs-container .fjs-form-field-text a {
  color: var(--ce-primary);
  text-decoration: underline;
}

/* ============================================================
   9. Separator / Spacer
   ============================================================ */
.ce-wrap .ce-formjs-container .fjs-separator hr {
  border: none !important;
  height: 1px !important;
  background: var(--ce-border) !important;
  margin: 28px 0 !important;
}

/* ============================================================
   10. Actions area & Loading state
   ============================================================ */
.ce-wrap .ce-formjs-actions {
  margin-top: 8px;
}

.ce-wrap .ce-formjs-loading {
  text-align: center;
  color: var(--ce-text-secondary);
  padding: 48px 0;
  font-size: 0.938rem;
}

/* ============================================================
   11. Taglist / Multi-select
   ============================================================ */
.ce-wrap .ce-formjs-container .fjs-taglist {
  display: flex !important;
  align-items: center !important;
  flex-wrap: wrap !important;
  border: 1px solid var(--ce-border) !important;
  border-radius: var(--ce-radius) !important;
  background: var(--ce-bg-subtle, #f8f9fa) !important;
  min-height: 50px !important;
  margin: 0 !important;
  padding: 6px !important;
  gap: 6px !important;
  transition:
    border-color 200ms ease,
    box-shadow 200ms ease,
    background-color 200ms ease !important;
}

.ce-wrap .ce-formjs-container .fjs-taglist:hover {
  border-color: var(--ce-primary) !important;
}

.ce-wrap .ce-formjs-container .fjs-taglist:focus-within {
  border-color: var(--ce-primary) !important;
  box-shadow: 0 0 0 3px var(--ce-primary-light) !important;
  background: #fff !important;
}

.ce-wrap .ce-formjs-container .fjs-taglist .fjs-taglist-tags {
  display: flex !important;
  align-items: center !important;
  flex-wrap: wrap !important;
  gap: 6px !important;
  flex: 0 1 auto !important;
}

.ce-wrap .ce-formjs-container .fjs-taglist-tag {
  display: inline-flex !important;
  align-items: center !important;
  max-width: 100% !important;
  background: color-mix(in srgb, var(--ce-primary-light) 78%, #fff) !important;
  color: var(--ce-primary) !important;
  border: 1px solid color-mix(in srgb, var(--ce-primary) 14%, transparent) !important;
  border-radius: calc(var(--ce-radius) - 2px) !important;
  font-size: 0.813rem !important;
  font-weight: 500 !important;
  overflow: hidden !important;
}

.ce-wrap .ce-formjs-container .fjs-taglist-tag .fjs-taglist-tag-label {
  padding: 7px 8px 7px 12px !important;
  line-height: 1.2 !important;
  white-space: nowrap !important;
}

.ce-wrap .ce-formjs-container .fjs-taglist-tag .fjs-taglist-tag-remove {
  width: 28px !important;
  min-width: 28px !important;
  height: 28px !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  padding: 0 !important;
  border: none !important;
  border-left: 1px solid color-mix(in srgb, var(--ce-primary) 12%, transparent) !important;
  background: transparent !important;
  line-height: 1 !important;
}

.ce-wrap .ce-formjs-container .fjs-taglist-tag .fjs-taglist-tag-remove > svg {
  margin: 0 !important;
  width: 12px !important;
  height: 12px !important;
  opacity: 0.7 !important;
  color: currentColor !important;
}

.ce-wrap .ce-formjs-container .fjs-taglist-tag .fjs-taglist-tag-remove:hover,
.ce-wrap .ce-formjs-container .fjs-taglist-tag .fjs-taglist-tag-remove:focus-visible {
  background: color-mix(in srgb, var(--ce-primary) 10%, transparent) !important;
}

.ce-wrap .ce-formjs-container .fjs-taglist-tag .fjs-taglist-tag-remove:hover > svg,
.ce-wrap .ce-formjs-container .fjs-taglist-tag .fjs-taglist-tag-remove:focus-visible > svg {
  opacity: 1 !important;
}

.ce-wrap .ce-formjs-container .fjs-taglist .fjs-taglist-input {
  flex: 1 1 8rem !important;
  min-width: 8rem !important;
  max-width: 100% !important;
  min-height: 36px !important;
  height: 36px !important;
  margin: 0 !important;
  padding: 0 10px !important;
  border: none !important;
  border-radius: calc(var(--ce-radius) - 4px) !important;
  background: transparent !important;
  box-shadow: none !important;
  font-size: 0.938rem !important;
  font-family: var(--ce-font) !important;
  color: var(--ce-text) !important;
  outline: none !important;
}

.ce-wrap .ce-formjs-container .fjs-taglist .fjs-taglist-input::placeholder {
  color: #94a3b8 !important;
}

.ce-wrap .ce-formjs-container .fjs-taglist.fjs-disabled,
.ce-wrap .ce-formjs-container .fjs-taglist.fjs-readonly {
  background: var(--ce-bg-subtle, #f8f9fa) !important;
}

.ce-wrap .ce-formjs-container .fjs-taglist.fjs-disabled .fjs-taglist-tag,
.ce-wrap .ce-formjs-container .fjs-taglist.fjs-readonly .fjs-taglist-tag {
  opacity: 0.75 !important;
}

/* ============================================================
   12. Dropdown / Searchable Select
   ============================================================ */
.ce-wrap .ce-formjs-container .fjs-dropdownlist {
  border: 1px solid var(--ce-border) !important;
  border-radius: var(--ce-radius) !important;
  box-shadow: 0 8px 24px rgba(15, 23, 42, 0.12) !important;
  background: #fff !important;
  overflow-x: hidden !important;
  overflow-y: auto !important;
  scrollbar-width: thin;
  scrollbar-color: color-mix(in srgb, var(--ce-text-secondary) 35%, transparent) transparent;
  top: calc(100% + 6px) !important;
  left: 0 !important;
  right: auto !important;
  min-width: 100% !important;
  width: max-content !important;
  max-width: min(28rem, calc(100vw - 24px)) !important;
  max-height: min(280px, 40vh) !important;
  margin-top: 0 !important;
  padding: 4px !important;
  z-index: 1001 !important;
}

.ce-wrap .ce-formjs-container .fjs-dropdownlist::-webkit-scrollbar {
  width: 7px;
}

.ce-wrap .ce-formjs-container .fjs-dropdownlist::-webkit-scrollbar-track {
  background: transparent;
}

.ce-wrap .ce-formjs-container .fjs-dropdownlist::-webkit-scrollbar-thumb {
  background: color-mix(in srgb, var(--ce-text-secondary) 32%, transparent);
  border-radius: 999px;
  border: 2px solid transparent;
  background-clip: padding-box;
}

.ce-wrap .ce-formjs-container .fjs-dropdownlist::-webkit-scrollbar-thumb:hover {
  background: color-mix(in srgb, var(--ce-text-secondary) 48%, transparent);
  border-radius: 999px;
  border: 2px solid transparent;
  background-clip: padding-box;
}

.ce-wrap .ce-formjs-container .fjs-dropdownlist .fjs-dropdownlist-empty {
  padding: 8px 10px !important;
  color: var(--ce-text-secondary) !important;
}

.ce-wrap .ce-formjs-container .fjs-select-anchor[data-ce-dropdown-x="end"] .fjs-dropdownlist,
.ce-wrap .ce-formjs-container .fjs-taglist-anchor[data-ce-dropdown-x="end"] .fjs-dropdownlist {
  left: auto !important;
  right: 0 !important;
}

.ce-wrap .ce-formjs-container .fjs-select-anchor[data-ce-dropdown-y="up"] .fjs-dropdownlist,
.ce-wrap .ce-formjs-container .fjs-taglist-anchor[data-ce-dropdown-y="up"] .fjs-dropdownlist {
  top: auto !important;
  bottom: calc(100% + 6px) !important;
}

.ce-wrap .ce-formjs-container .fjs-dropdownlist .fjs-dropdownlist-item {
  position: relative !important;
  display: flex !important;
  align-items: center !important;
  gap: 8px !important;
  min-height: 38px !important;
  padding: 8px 10px 8px 32px !important;
  font-size: 0.9rem !important;
  font-family: var(--ce-font) !important;
  color: var(--ce-text) !important;
  border: none !important;
  border-radius: calc(var(--ce-radius) - 2px) !important;
  transition:
    background 120ms ease,
    color 120ms ease !important;
}

.ce-wrap .ce-formjs-container .fjs-dropdownlist .fjs-dropdownlist-item::before {
  content: "" !important;
  position: absolute !important;
  left: 10px !important;
  top: 50% !important;
  width: 14px !important;
  height: 14px !important;
  transform: translateY(-50%) !important;
  opacity: 0 !important;
  background: currentColor !important;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='black' d='M6.2 11.2 3.5 8.5l-.9.9 3.6 3.6 7.2-7.2-.9-.9z'/%3E%3C/svg%3E")
    center / contain no-repeat !important;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='black' d='M6.2 11.2 3.5 8.5l-.9.9 3.6 3.6 7.2-7.2-.9-.9z'/%3E%3C/svg%3E")
    center / contain no-repeat !important;
}

.ce-wrap .ce-formjs-container .fjs-dropdownlist .fjs-dropdownlist-item:hover,
.ce-wrap .ce-formjs-container .fjs-dropdownlist .fjs-dropdownlist-item.fjs-dropdownlist-item-active,
.ce-wrap .ce-formjs-container .fjs-dropdownlist .fjs-dropdownlist-item.focused {
  background: var(--ce-primary-light) !important;
  color: var(--ce-primary) !important;
}

.ce-wrap .ce-formjs-container .fjs-dropdownlist .fjs-dropdownlist-item.fjs-dropdownlist-item-active {
  font-weight: 600 !important;
}

.ce-wrap .ce-formjs-container .fjs-dropdownlist .fjs-dropdownlist-item.fjs-dropdownlist-item-active::before {
  opacity: 1 !important;
}

/* ============================================================
   13. Hide form-js branding
   ============================================================ */
.ce-wrap .ce-formjs-container .fjs-powered-by {
  display: none !important;
}

/* ============================================================
   14. Buttons inside form-js
   ============================================================ */
.ce-wrap .ce-formjs-container .fjs-button {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  padding: 12px 24px !important;
  font-size: 0.938rem !important;
  font-weight: 600 !important;
  line-height: 1.5 !important;
  border: none !important;
  border-radius: var(--ce-radius-btn) !important;
  cursor: pointer !important;
  font-family: var(--ce-font) !important;
  background: var(--ce-primary) !important;
  color: #fff !important;
  text-shadow: none !important;
  box-shadow: none !important;
  transition:
    background 200ms ease,
    transform 100ms ease !important;
  width: 100% !important;
  min-height: 48px !important;
  margin-top: 8px !important;
}

.ce-wrap .ce-formjs-container .fjs-button:hover {
  background: var(--ce-primary-hover) !important;
}

.ce-wrap .ce-formjs-container .fjs-button:active {
  transform: translateY(1px) !important;
}

/* ============================================================
   15. Submit button (injected by course-explorer-formjs.js)
   ============================================================ */
.ce-wrap .ce-formjs-submit {
  min-height: 48px !important;
}

/* ============================================================
   15b. Login nav link (below form)
   ============================================================ */
.ce-wrap .ce-formjs-container ~ .ce-nav,
.ce-wrap .ce-formjs-container .ce-nav {
  margin-top: 28px !important;
  padding-top: 20px !important;
}

@media (max-width: 767px) {
  .ce-wrap .ce-card--formjs {
    padding: 22px 18px;
    border-radius: var(--ce-radius-lg, 8px);
    margin-left: 8px;
    margin-right: 8px;
  }

  .ce-wrap .ce-formjs-container .fjs-layout-row {
    grid-template-columns: minmax(0, 1fr) !important;
    gap: 0;
  }

  .ce-wrap .ce-formjs-container .fjs-columns {
    gap: 0;
  }

  .ce-wrap .ce-formjs-container .fjs-layout-column[class*="cds--col-lg-"] {
    grid-column: span 1;
  }

  .ce-wrap .ce-formjs-container .fjs-form-field {
    margin-bottom: 8px !important;
  }

  .ce-wrap .ce-portal__panel .ce-formjs-container .fjs-layout-row {
    gap: 0;
  }

  .ce-wrap .ce-portal__panel .ce-formjs-container .fjs-form-field {
    margin-bottom: 12px !important;
  }
}

/* ============================================================
   16. Flatpickr Calendar Overrides
   ============================================================ */
.ce-wrap .ce-formjs-container .fjs-form-field-datetime .flatpickr-wrapper {
  overflow: visible !important;
  min-height: 100% !important;
  align-items: stretch !important;
  border-radius: inherit !important;
  position: relative !important;
  width: 100% !important;
}

.ce-wrap .ce-formjs-container .fjs-form-field-datetime .fjs-input-group {
  display: flex !important;
  align-items: stretch !important;
  overflow: visible !important;
}

.ce-wrap .ce-formjs-container .fjs-form-field-datetime .fjs-datepicker {
  position: relative !important;
  flex: 1 1 auto !important;
  min-width: 0 !important;
  width: 100% !important;
}

.ce-wrap .ce-formjs-container .fjs-form-field-datetime .flatpickr-wrapper .fjs-input,
.ce-wrap .ce-formjs-container .fjs-form-field-datetime .flatpickr-wrapper .fjs-input-adornment {
  height: 100% !important;
  min-height: 100% !important;
}

.ce-wrap .ce-formjs-container .fjs-form-field-datetime .flatpickr-calendar {
  background: #fff !important;
  border: 1px solid var(--ce-border) !important;
  box-shadow: 0 8px 24px rgba(15, 23, 42, 0.12) !important;
  border-radius: var(--ce-radius-lg, 8px) !important;
  font-family: var(--ce-font) !important;
  overflow: hidden !important;
  position: absolute !important;
  top: calc(100% + 8px) !important;
  left: 0 !important;
  width: 307px !important;
  min-width: 307px !important;
  max-width: min(calc(100vw - 32px), 307px) !important;
  height: auto !important;
  display: none !important;
}

.ce-wrap .ce-formjs-container .fjs-form-field-datetime .flatpickr-calendar.open,
.ce-wrap .ce-formjs-container .fjs-form-field-datetime .flatpickr-calendar.static.open {
  display: block !important;
  z-index: 1000 !important;
}

.ce-wrap .ce-formjs-container .fjs-form-field-datetime .flatpickr-calendar.static {
  top: calc(100% + 8px) !important;
}

.ce-wrap .ce-formjs-container .fjs-form-field-datetime .flatpickr-months {
  position: relative !important;
  padding: 8px 40px 0 !important;
  height: 52px !important;
}

.ce-wrap .ce-formjs-container .fjs-form-field-datetime .flatpickr-months .flatpickr-month {
  background: #fff !important;
  color: var(--ce-text) !important;
  fill: var(--ce-text) !important;
  height: 44px !important;
  overflow: visible !important;
}

.ce-wrap .ce-formjs-container .fjs-form-field-datetime .flatpickr-current-month {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 6px !important;
  height: 44px !important;
  line-height: 1.2 !important;
  left: 0 !important;
  width: auto !important;
  max-width: calc(100% - 80px) !important;
  margin: 0 auto !important;
  padding: 0 !important;
}

.ce-wrap .ce-formjs-container .fjs-form-field-datetime .flatpickr-current-month .flatpickr-monthDropdown-months {
  appearance: none !important;
  -webkit-appearance: none !important;
  background: transparent !important;
  border: 0 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  color: var(--ce-text) !important;
  font-weight: 600 !important;
  height: auto !important;
  line-height: 1.4 !important;
  margin: 0 !important;
  min-height: 0 !important;
  min-width: 0 !important;
  width: auto !important;
  max-width: 8rem !important;
  padding: 0 2px !important;
  display: inline-block !important;
  flex: 0 1 auto !important;
}

.ce-wrap
  .ce-formjs-container
  .fjs-form-field-datetime
  .flatpickr-current-month
  .flatpickr-monthDropdown-months
  .flatpickr-monthDropdown-month {
  background-color: #fff !important;
}

.ce-wrap .ce-formjs-container .fjs-form-field-datetime .flatpickr-current-month .numInputWrapper {
  display: inline-flex !important;
  align-items: center !important;
  width: 4.5ch !important;
  height: auto !important;
  position: relative !important;
  overflow: hidden !important;
  flex: 0 0 auto !important;
}

.ce-wrap .ce-formjs-container .fjs-form-field-datetime .flatpickr-current-month .numInputWrapper span {
  width: 14px !important;
  min-width: 14px !important;
  height: 50% !important;
  padding: 0 !important;
  border: 0 !important;
}

.ce-wrap .ce-formjs-container .fjs-form-field-datetime .flatpickr-current-month .numInputWrapper span.arrowUp,
.ce-wrap .ce-formjs-container .fjs-form-field-datetime .flatpickr-current-month .numInputWrapper span.arrowDown {
  right: 0 !important;
}

.ce-wrap .ce-formjs-container .fjs-form-field-datetime .flatpickr-current-month .numInputWrapper span svg {
  width: 10px !important;
  min-width: 10px !important;
  max-width: 10px !important;
  height: 10px !important;
  max-height: 10px !important;
}

.ce-wrap .ce-formjs-container .fjs-form-field-datetime .flatpickr-current-month input.cur-year {
  appearance: none !important;
  -webkit-appearance: none !important;
  background: transparent !important;
  border: 0 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  color: var(--ce-text) !important;
  font-weight: 600 !important;
  height: auto !important;
  line-height: 1.4 !important;
  margin: 0 !important;
  padding: 0 !important;
  width: 100% !important;
  min-height: 0 !important;
  min-width: 0 !important;
  display: inline-block !important;
  text-align: center !important;
}

.ce-wrap .ce-formjs-container .fjs-form-field-datetime .flatpickr-current-month .flatpickr-monthDropdown-months:hover,
.ce-wrap .ce-formjs-container .fjs-form-field-datetime .flatpickr-current-month .flatpickr-monthDropdown-months:focus,
.ce-wrap .ce-formjs-container .fjs-form-field-datetime .flatpickr-current-month input.cur-year:hover,
.ce-wrap .ce-formjs-container .fjs-form-field-datetime .flatpickr-current-month input.cur-year:focus {
  background: transparent !important;
  box-shadow: none !important;
}

.ce-wrap .flatpickr-weekdays {
  background: #fff !important;
}

.ce-wrap .ce-formjs-container .fjs-form-field-datetime .flatpickr-weekdays,
.ce-wrap .ce-formjs-container .fjs-form-field-datetime .flatpickr-days,
.ce-wrap .ce-formjs-container .fjs-form-field-datetime .flatpickr-weekdaycontainer,
.ce-wrap .ce-formjs-container .fjs-form-field-datetime .flatpickr-rContainer,
.ce-wrap .ce-formjs-container .fjs-form-field-datetime .flatpickr-innerContainer,
.ce-wrap .ce-formjs-container .fjs-form-field-datetime .dayContainer {
  box-sizing: border-box !important;
  width: 100% !important;
  min-width: 100% !important;
  max-width: 100% !important;
}

.ce-wrap .ce-formjs-container .fjs-form-field-datetime .flatpickr-innerContainer,
.ce-wrap .ce-formjs-container .fjs-form-field-datetime .flatpickr-rContainer {
  padding: 0 !important;
}

.ce-wrap .ce-formjs-container .fjs-form-field-datetime .flatpickr-weekdays,
.ce-wrap .ce-formjs-container .fjs-form-field-datetime .flatpickr-days {
  padding-left: 0 !important;
  padding-right: 0 !important;
}

.ce-wrap .ce-formjs-container .fjs-form-field-datetime .dayContainer {
  justify-content: space-between !important;
  padding: 0 0 8px !important;
  border-bottom-left-radius: inherit !important;
  border-bottom-right-radius: inherit !important;
}

.ce-wrap .ce-formjs-container .fjs-form-field-datetime .flatpickr-weekdaycontainer {
  padding: 0 0 6px !important;
}

.ce-wrap span.flatpickr-weekday {
  background: #fff !important;
  color: var(--ce-text-secondary) !important;
  font-weight: 600 !important;
}

.ce-wrap .ce-formjs-container .fjs-form-field-datetime .flatpickr-months .flatpickr-prev-month,
.ce-wrap .ce-formjs-container .fjs-form-field-datetime .flatpickr-months .flatpickr-next-month {
  color: var(--ce-text) !important;
  fill: var(--ce-text) !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  position: absolute !important;
  width: 36px !important;
  height: 36px !important;
  padding: 0 !important;
  border-radius: 999px !important;
  top: 8px !important;
}

.ce-wrap .ce-formjs-container .fjs-form-field-datetime .flatpickr-months .flatpickr-prev-month {
  left: 4px !important;
}

.ce-wrap .ce-formjs-container .fjs-form-field-datetime .flatpickr-months .flatpickr-next-month {
  right: 4px !important;
}

.ce-wrap .ce-formjs-container .fjs-form-field-datetime .flatpickr-months .flatpickr-prev-month svg,
.ce-wrap .ce-formjs-container .fjs-form-field-datetime .flatpickr-months .flatpickr-next-month svg {
  display: block !important;
  width: 14px !important;
  min-width: 14px !important;
  max-width: 14px !important;
  height: 14px !important;
  max-height: 14px !important;
}

.ce-wrap .ce-formjs-container .fjs-form-field-datetime .flatpickr-months .flatpickr-prev-month:hover svg,
.ce-wrap .ce-formjs-container .fjs-form-field-datetime .flatpickr-months .flatpickr-next-month:hover svg {
  fill: var(--ce-primary) !important;
}

.ce-wrap .flatpickr-day.selected,
.ce-wrap .flatpickr-day.selected:hover,
.ce-wrap .flatpickr-day.selected:focus {
  background: var(--ce-primary) !important;
  border-color: var(--ce-primary) !important;
  color: #fff !important;
}

.ce-wrap .flatpickr-day.today {
  border-color: var(--ce-primary) !important;
}

.ce-wrap .flatpickr-day:hover {
  background: var(--ce-primary-light) !important;
  border-color: var(--ce-primary-light) !important;
}

.ce-wrap .flatpickr-calendar.arrowTop:before,
.ce-wrap .flatpickr-calendar.arrowTop:after {
  border-bottom-color: #fff !important;
}
