/*
 * NOUN Student Portal 6.17.0 — Workspace Visibility, Dark Mode & Interaction States
 * Final private-workspace authority. Loaded after every retained Portal stylesheet.
 * Goals:
 * - explicit readable text/background pairs in both themes;
 * - conversion-critical CTA labels may never inherit an unreadable foreground;
 * - inline SVG icons remain visible through currentColor;
 * - service detail/checkout surfaces have complete dark-mode ownership;
 * - GST302 topic cards provide unmistakable category and selected states.
 */

/* ========================================================================== */
/* 1. Authoritative visibility tokens                                         */
/* ========================================================================== */
html[data-theme="light"] body.nsp-private-workspace #nsp-app.nsp{
  --nsp617-page:#f3f7f5;
  --nsp617-surface:#ffffff;
  --nsp617-surface-2:#edf4f0;
  --nsp617-surface-3:#e4eee9;
  --nsp617-text:#10231c;
  --nsp617-body:#263a32;
  --nsp617-muted:#52645d;
  --nsp617-border:#80968b;
  --nsp617-border-soft:#c7d4ce;
  --nsp617-link:#075f42;
  --nsp617-link-hover:#044a34;
  --nsp617-primary:#07583f;
  --nsp617-primary-hover:#054833;
  --nsp617-primary-text:#ffffff;
  --nsp617-secondary-bg:#ffffff;
  --nsp617-secondary-text:#174b37;
  --nsp617-disabled-bg:#dce8e1;
  --nsp617-disabled-text:#315848;
  --nsp617-focus:#1769aa;
  --nsp617-success-bg:#e5f5ec;
  --nsp617-success-text:#07583f;
  --nsp617-warning-bg:#fff4d6;
  --nsp617-warning-text:#6b4300;
  --nsp617-info-bg:#eaf3ff;
  --nsp617-info-text:#164e86;
  --nsp617-danger-bg:#fdebed;
  --nsp617-danger-text:#8b1d28;
  --nsp617-shadow:0 8px 24px rgba(16,35,28,.07);
}
html[data-theme="dark"] body.nsp-private-workspace #nsp-app.nsp{
  --nsp617-page:#07110e;
  --nsp617-surface:#0e1b17;
  --nsp617-surface-2:#13231d;
  --nsp617-surface-3:#1a3028;
  --nsp617-text:#f4fbf7;
  --nsp617-body:#d8e6df;
  --nsp617-muted:#b0c3ba;
  --nsp617-border:#557367;
  --nsp617-border-soft:#345046;
  --nsp617-link:#8ce9bb;
  --nsp617-link-hover:#b1f4d2;
  --nsp617-primary:#0a6849;
  --nsp617-primary-hover:#0d7955;
  --nsp617-primary-text:#ffffff;
  --nsp617-secondary-bg:#13231d;
  --nsp617-secondary-text:#e3f4ec;
  --nsp617-disabled-bg:#29463a;
  --nsp617-disabled-text:#d8e8e0;
  --nsp617-focus:#7bc7ff;
  --nsp617-success-bg:#133527;
  --nsp617-success-text:#9ce8bc;
  --nsp617-warning-bg:#3b2b0f;
  --nsp617-warning-text:#ffd98a;
  --nsp617-info-bg:#102d42;
  --nsp617-info-text:#abd9ff;
  --nsp617-danger-bg:#3c171b;
  --nsp617-danger-text:#ffb8bc;
  --nsp617-shadow:0 12px 30px rgba(0,0,0,.26);
}

/* ========================================================================== */
/* 2. Typography + SVG visibility across the complete private workspace       */
/* ========================================================================== */
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace{
  color:var(--nsp617-body)!important;
}
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace :where(h1,h2,h3,h4,h5,h6,legend,summary,dt,strong,b){
  color:var(--nsp617-text)!important;
  -webkit-text-fill-color:currentColor!important;
  opacity:1!important;
}
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace :where(p,li,dd,address,caption,figcaption,blockquote){
  color:var(--nsp617-body)!important;
  -webkit-text-fill-color:currentColor!important;
  opacity:1!important;
}
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace :where(small,.nsp-muted,.nsw-muted,.nsp-desc,.nsp-svc-field-help){
  color:var(--nsp617-muted)!important;
  -webkit-text-fill-color:currentColor!important;
  opacity:1!important;
}
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace :where(label){
  color:var(--nsp617-body)!important;
  -webkit-text-fill-color:currentColor!important;
  opacity:1!important;
}
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace :where(a){
  color:var(--nsp617-link)!important;
  -webkit-text-fill-color:currentColor!important;
  opacity:1!important;
}
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace :where(a:hover,a:focus-visible){color:var(--nsp617-link-hover)!important}

/* All plugin icons are currentColor icons. Keep their currentColor visible and
   never let retained opacity/text-fill rules fade them away. */
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace svg.nsp-ico,
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace :is(button,a,[role="button"]) svg{
  color:inherit!important;
  opacity:1!important;
  visibility:visible!important;
}
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace svg.nsp-ico :is(path,line,polyline,rect,circle,polygon,ellipse){
  vector-effect:non-scaling-stroke;
}

/* Common icon-only controls. */
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace :is(
  .nsw-icon-button,.nsw-save-service,.nsp-share-trigger.is-icon-only,
  .nsp-theme-btn,.nsp-user-btn,.nsp-share-close,.nsp-crop-close
){
  background:var(--nsp617-surface-2)!important;
  border-color:var(--nsp617-border)!important;
  color:var(--nsp617-link)!important;
  -webkit-text-fill-color:currentColor!important;
  opacity:1!important;
}
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace :is(
  .nsw-icon-button,.nsw-save-service,.nsp-share-trigger.is-icon-only,
  .nsp-theme-btn,.nsp-user-btn,.nsp-share-close,.nsp-crop-close
):hover{
  background:var(--nsp617-surface-3)!important;
  border-color:var(--nsp617-link)!important;
  color:var(--nsp617-link-hover)!important;
}

/* ========================================================================== */
/* 3. Final action-control authority                                          */
/* ========================================================================== */
/* Primary conversion actions: one consistent high-contrast pair. */
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace :is(
  .nsw-primary-button,.nsw-action-button,.nsp-btn-primary,.nsp-submit,
  .nsp-v62-primary,.nsp-v62-stage-next,.nsp-v62-order-form .nsp-svc-btn,
  .nsp-v62-order-form .nsp-svc-pay,.nsp-svc-order-pay,.nsp-cvnav-next,
  .nsp-cvnav-pay:not(:disabled),.nsp-tma-cta-primary,.nsp-tma-submit-btn,
  .nsp-v65-resume-notice a,.nsp-v65-resume-notice button,
  #nsp-bp-next,#nsp-bp-pay,#nsp-bp-bulk-pay
){
  background:var(--nsp617-primary)!important;
  border-color:var(--nsp617-primary)!important;
  color:var(--nsp617-primary-text)!important;
  -webkit-text-fill-color:var(--nsp617-primary-text)!important;
  opacity:1!important;
  filter:none!important;
  text-shadow:none!important;
  text-decoration:none!important;
}
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace :is(
  .nsw-primary-button,.nsw-action-button,.nsp-btn-primary,.nsp-submit,
  .nsp-v62-primary,.nsp-v62-stage-next,.nsp-v62-order-form .nsp-svc-btn,
  .nsp-v62-order-form .nsp-svc-pay,.nsp-svc-order-pay,.nsp-cvnav-next,
  .nsp-cvnav-pay:not(:disabled),.nsp-tma-cta-primary,.nsp-tma-submit-btn,
  .nsp-v65-resume-notice a,.nsp-v65-resume-notice button,
  #nsp-bp-next,#nsp-bp-pay,#nsp-bp-bulk-pay
) :is(span,strong,b,small,svg){
  color:inherit!important;
  -webkit-text-fill-color:currentColor!important;
  opacity:1!important;
}
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace :is(
  .nsw-primary-button,.nsw-action-button,.nsp-btn-primary,.nsp-submit,
  .nsp-v62-primary,.nsp-v62-stage-next,.nsp-v62-order-form .nsp-svc-btn,
  .nsp-v62-order-form .nsp-svc-pay,.nsp-svc-order-pay,.nsp-cvnav-next,
  .nsp-cvnav-pay:not(:disabled),.nsp-tma-cta-primary,.nsp-tma-submit-btn,
  .nsp-v65-resume-notice a,.nsp-v65-resume-notice button,
  #nsp-bp-next,#nsp-bp-pay,#nsp-bp-bulk-pay
):hover{
  background:var(--nsp617-primary-hover)!important;
  border-color:var(--nsp617-primary-hover)!important;
  color:#fff!important;
  -webkit-text-fill-color:#fff!important;
}

/* Secondary/back/share actions. */
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace :is(
  .nsw-secondary-button,.nsp-v62-secondary,.nsp-v62-stage-back,.nsp-cvnav-back,
  .nsp-cvadd,.nsp-cvprev-btn,.nsp-svc-attach-btn,.nsp-svc-reupload-btn,
  .nsp-checkout-orders-link,.nsp-checkout-share,.nsp-special-share,
  #nsp-bp-back,#nsp-bp-bulk-clear
){
  background:var(--nsp617-secondary-bg)!important;
  border-color:var(--nsp617-border)!important;
  color:var(--nsp617-secondary-text)!important;
  -webkit-text-fill-color:var(--nsp617-secondary-text)!important;
  opacity:1!important;
  filter:none!important;
  text-decoration:none!important;
}
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace :is(
  .nsw-secondary-button,.nsp-v62-secondary,.nsp-v62-stage-back,.nsp-cvnav-back,
  .nsp-cvadd,.nsp-cvprev-btn,.nsp-svc-attach-btn,.nsp-svc-reupload-btn,
  .nsp-checkout-orders-link,.nsp-checkout-share,.nsp-special-share,
  #nsp-bp-back,#nsp-bp-bulk-clear
) :is(span,strong,b,small,svg){color:inherit!important;-webkit-text-fill-color:currentColor!important;opacity:1!important}

/* Disabled controls are visibly disabled, never unreadable. */
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace :is(
  button:disabled,[aria-disabled="true"],input:disabled,select:disabled,textarea:disabled
){
  background:var(--nsp617-disabled-bg)!important;
  border-color:var(--nsp617-border)!important;
  color:var(--nsp617-disabled-text)!important;
  -webkit-text-fill-color:var(--nsp617-disabled-text)!important;
  opacity:1!important;
  filter:none!important;
  box-shadow:none!important;
}
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace :is(button:disabled,[aria-disabled="true"]) :is(span,strong,b,small,svg){
  color:inherit!important;-webkit-text-fill-color:currentColor!important;opacity:1!important
}

html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace :is(a,button,input,select,textarea,summary,[tabindex]):focus-visible{
  outline:3px solid var(--nsp617-focus)!important;
  outline-offset:3px!important;
}

/* ========================================================================== */
/* 4. Inputs, selects, tabs and generic cards                                 */
/* ========================================================================== */
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace :is(
  input:not([type="checkbox"]):not([type="radio"]),select,textarea
){
  background:var(--nsp617-surface)!important;
  border-color:var(--nsp617-border)!important;
  color:var(--nsp617-text)!important;
  -webkit-text-fill-color:var(--nsp617-text)!important;
  caret-color:var(--nsp617-text)!important;
  opacity:1!important;
}
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace :is(input,textarea)::placeholder{
  color:var(--nsp617-muted)!important;
  -webkit-text-fill-color:var(--nsp617-muted)!important;
  opacity:1!important;
}
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace :is(option,optgroup){
  background:var(--nsp617-surface)!important;
  color:var(--nsp617-text)!important;
}

/* Secondary tab/chip controls keep readable inactive and active states. */
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace :is(
  .nsw-service-tabs,.nsw-order-tabs,.nsw-study-tabs,.nsp-v62-stepper,.nsp-bp-tabs
) button:not(.is-active):not(.active):not(.is-complete){
  color:var(--nsp617-muted)!important;
  -webkit-text-fill-color:var(--nsp617-muted)!important;
  opacity:1!important;
}
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace :is(
  .nsw-service-tabs,.nsw-order-tabs,.nsw-study-tabs
) button.is-active,
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace .nsp-bp-tab.active{
  background:var(--nsp617-success-bg)!important;
  border-color:var(--nsp617-link)!important;
  color:var(--nsp617-success-text)!important;
  -webkit-text-fill-color:var(--nsp617-success-text)!important;
}

/* ========================================================================== */
/* 5. Services catalogue icon/action visibility                              */
/* ========================================================================== */
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace .nsw-service-card{
  color:var(--nsp617-body)!important;
}
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace .nsw-service-card :is(h3,strong){color:var(--nsp617-text)!important}
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace .nsw-service-card :is(p,li){color:var(--nsp617-body)!important}
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace .nsw-service-card .nsw-card-icon{
  background:var(--nsp617-surface-2)!important;
  color:var(--nsp617-link)!important;
}
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace .nsw-service-card .nsw-card-footer :is(a,button){
  background:var(--nsp617-primary)!important;
  border-color:var(--nsp617-primary)!important;
  color:#fff!important;
  -webkit-text-fill-color:#fff!important;
  opacity:1!important;
}
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace .nsw-service-card .nsw-card-footer :is(a,button) :is(span,strong,svg){color:inherit!important;-webkit-text-fill-color:currentColor!important}

/* ========================================================================== */
/* 6. Service-detail / checkout — full dark-mode ownership                    */
/* ========================================================================== */
/* Light and dark both use the Portal tokens instead of hard-coded retained
   #fff/#navy values. */
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace .nsp-checkout-clean{
  color:var(--nsp617-body)!important;
}
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace :is(
  .nsp-service-compact,.nsp-checkout-panel,.nsp-checkout-panel-head,
  .nsp-v62-form-root,.nsp-service-more,.nsp-service-more-content,
  .nsp-v62-selection,.nsp-v62-login-card,.nsp-v62-review-row,
  .nsp-service-intro,.nsp-service-section
){
  background:var(--nsp617-surface)!important;
  border-color:var(--nsp617-border-soft)!important;
  color:var(--nsp617-body)!important;
}
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace :is(
  .nsp-service-compact h1,.nsp-checkout-panel-head h2,.nsp-v62-stage-title h3,
  .nsp-v62-review-row strong,.nsp-service-more summary strong,.nsp-service-more h2,
  .nsp-service-more h3,.nsp-service-delivery-note strong,.nsp-v62-selection strong
){
  color:var(--nsp617-text)!important;
  -webkit-text-fill-color:currentColor!important;
}
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace :is(
  .nsp-service-compact p,.nsp-v62-stage-title p,.nsp-service-more p,
  .nsp-service-more summary small,.nsp-v62-review-row span,.nsp-v62-selection span,
  .nsp-v62-selection small,.nsp-svc-note
){
  color:var(--nsp617-muted)!important;
  -webkit-text-fill-color:currentColor!important;
}
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace .nsp-service-icon{
  background:var(--nsp617-success-bg)!important;
  color:var(--nsp617-success-text)!important;
}
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace .nsp-service-compact-facts>span{
  background:var(--nsp617-surface-2)!important;
  border-color:var(--nsp617-border)!important;
  color:var(--nsp617-body)!important;
}
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace .nsp-service-compact-facts strong{color:var(--nsp617-text)!important}
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace .nsp-service-compact-facts small{color:var(--nsp617-muted)!important}
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace .nsp-checkout-head-price{
  background:var(--nsp617-success-bg)!important;
  color:var(--nsp617-success-text)!important;
  -webkit-text-fill-color:currentColor!important;
}
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace .nsp-v62-stepper button{
  color:var(--nsp617-muted)!important;
  -webkit-text-fill-color:var(--nsp617-muted)!important;
  opacity:1!important;
}
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace .nsp-v62-stepper button:before{background:var(--nsp617-border-soft)!important}
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace .nsp-v62-stepper button:is(.is-active,.is-complete){
  color:var(--nsp617-link)!important;
  -webkit-text-fill-color:var(--nsp617-link)!important;
}
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace .nsp-v62-stepper button:is(.is-active,.is-complete):before{background:var(--nsp617-link)!important}
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace .nsp-v62-draft-note,
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace .nsp-v65-resume-notice{
  background:var(--nsp617-info-bg)!important;
  border-color:var(--nsp617-border)!important;
  color:var(--nsp617-info-text)!important;
}
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace .nsp-v65-resume-notice :is(strong,small){color:inherit!important;-webkit-text-fill-color:currentColor!important}
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace .nsp-service-more-toggle{
  background:var(--nsp617-success-bg)!important;
  color:var(--nsp617-success-text)!important;
}
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace .nsp-clean-list li{color:var(--nsp617-body)!important}
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace .nsp-service-more-grid,
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace .nsp-service-delivery-note,
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace .nsp-v62-review-row{border-color:var(--nsp617-border-soft)!important}

/* Responsive/mobile checkout bar must not reintroduce a white-only surface. */
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace .nsp-mobile-order-bar{
  background:var(--nsp617-surface)!important;
  border-color:var(--nsp617-border)!important;
  color:var(--nsp617-body)!important;
}
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace .nsp-mobile-order-bar :is(strong,span){color:var(--nsp617-text)!important}
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace .nsp-mobile-order-bar button{
  background:var(--nsp617-primary)!important;color:#fff!important;-webkit-text-fill-color:#fff!important
}

/* ========================================================================== */
/* 7. GST302 Business Plan topic cards and modal                             */
/* ========================================================================== */
#nsp-p-bplan .nsw-bp-topic-grid{gap:14px!important}
#nsp-p-bplan .nsw-bp-topic-card{
  --bp-accent:#2f7651;
  --bp-tint:#f5fbf7;
  position:relative!important;
  min-height:126px!important;
  padding:20px 20px 18px 22px!important;
  border:1px solid var(--nsp617-border-soft)!important;
  border-left:5px solid var(--bp-accent)!important;
  background:var(--bp-tint)!important;
  color:var(--nsp617-body)!important;
  overflow:hidden!important;
}
#nsp-p-bplan .nsw-bp-topic-card[data-area="agripreneur"]{--bp-accent:#2f7b4d;--bp-tint:#f1faf4}
#nsp-p-bplan .nsw-bp-topic-card[data-area="biotechnology"]{--bp-accent:#6c4fc5;--bp-tint:#f7f3ff}
#nsp-p-bplan .nsw-bp-topic-card[data-area="general-business"]{--bp-accent:#2c6cb0;--bp-tint:#f2f7fd}
#nsp-p-bplan .nsw-bp-topic-card[data-area="green-education"]{--bp-accent:#4d7b2a;--bp-tint:#f5faef}
#nsp-p-bplan .nsw-bp-topic-card[data-area="health"]{--bp-accent:#b14d66;--bp-tint:#fff4f6}
#nsp-p-bplan .nsw-bp-topic-card[data-area="ict"]{--bp-accent:#237985;--bp-tint:#f0fafb}
#nsp-p-bplan .nsw-bp-topic-copy small{
  color:var(--bp-accent)!important;
  -webkit-text-fill-color:currentColor!important;
  font-size:.74rem!important;
  font-weight:850!important;
  letter-spacing:.06em!important;
}
#nsp-p-bplan .nsw-bp-topic-copy strong{
  color:var(--nsp617-text)!important;
  -webkit-text-fill-color:currentColor!important;
  font-size:1.16rem!important;
  line-height:1.32!important;
  letter-spacing:-.012em!important;
  font-weight:820!important;
}
#nsp-p-bplan .nsw-bp-topic-action{
  align-self:flex-end!important;
  min-height:34px!important;
  padding:6px 9px!important;
  border-radius:9px!important;
  background:color-mix(in srgb,var(--bp-accent) 10%,transparent)!important;
  color:var(--bp-accent)!important;
  -webkit-text-fill-color:currentColor!important;
  font-weight:820!important;
}
#nsp-p-bplan .nsw-bp-topic-card:hover{
  border-color:var(--bp-accent)!important;
  border-left-color:var(--bp-accent)!important;
  box-shadow:0 9px 24px color-mix(in srgb,var(--bp-accent) 17%,transparent)!important;
}
#nsp-p-bplan .nsw-bp-topic-card.is-selected,
#nsp-p-bplan .nsw-bp-topic-card[aria-pressed="true"]{
  border:2px solid var(--bp-accent)!important;
  border-left-width:6px!important;
  background:color-mix(in srgb,var(--bp-accent) 12%,var(--nsp617-surface))!important;
  box-shadow:0 0 0 3px color-mix(in srgb,var(--bp-accent) 20%,transparent),0 10px 26px rgba(0,0,0,.08)!important;
}
#nsp-p-bplan .nsw-bp-topic-card.is-selected::after,
#nsp-p-bplan .nsw-bp-topic-card[aria-pressed="true"]::after{
  content:"✓";
  position:absolute;
  top:12px;
  right:12px;
  width:28px;
  height:28px;
  display:grid;
  place-items:center;
  border-radius:999px;
  background:var(--bp-accent);
  color:#fff;
  font-weight:900;
  box-shadow:0 3px 9px rgba(0,0,0,.15);
}
#nsp-p-bplan .nsw-bp-topic-card.is-selected .nsw-bp-topic-action,
#nsp-p-bplan .nsw-bp-topic-card[aria-pressed="true"] .nsw-bp-topic-action{
  background:var(--bp-accent)!important;
  color:#fff!important;
  -webkit-text-fill-color:#fff!important;
}
#nsp-p-bplan .nsw-bp-topic-card.is-selected .nsw-bp-topic-action svg,
#nsp-p-bplan .nsw-bp-topic-card[aria-pressed="true"] .nsw-bp-topic-action svg{display:none!important}

/* Bulk selection bar uses semantic Portal colours instead of a fixed blue bar. */
#nsp-p-bplan #nsp-bp-bulk-bar{
  background:var(--nsp617-info-bg)!important;
  border-color:var(--nsp617-focus)!important;
  color:var(--nsp617-info-text)!important;
}
#nsp-p-bplan #nsp-bp-bulk-bar>div{color:inherit!important}
#nsp-p-bplan #nsp-bp-bulk-count{
  background:var(--nsp617-primary)!important;
  color:#fff!important;
  -webkit-text-fill-color:#fff!important;
}
#nsp-p-bplan #nsp-bp-bulk-total{color:var(--nsp617-text)!important}
#nsp-p-bplan .nsp-bp-bulk-disc{background:var(--nsp617-success-bg)!important;color:var(--nsp617-success-text)!important}
#nsp-p-bplan .nsp-bp-bulk-toggle{
  background:var(--nsp617-secondary-bg)!important;
  border-color:var(--nsp617-link)!important;
  color:var(--nsp617-link)!important;
  -webkit-text-fill-color:currentColor!important;
}
#nsp-p-bplan .nsp-bp-bulk-toggle.is-active{
  background:var(--nsp617-danger-bg)!important;
  border-color:var(--nsp617-danger-text)!important;
  color:var(--nsp617-danger-text)!important;
}

/* Modal is a complete surface in either theme, including inline-styled legacy
   labels/summary copy. */
html[data-theme] body.nsp-private-workspace #nsp-bp-modal{
  background:var(--nsp617-surface)!important;
  border:1px solid var(--nsp617-border-soft)!important;
  color:var(--nsp617-body)!important;
}
html[data-theme] body.nsp-private-workspace #nsp-bp-modal :is(h2,h3,strong,label){color:var(--nsp617-text)!important;-webkit-text-fill-color:currentColor!important}
html[data-theme] body.nsp-private-workspace #nsp-bp-modal :is(p,small,span){opacity:1!important}
html[data-theme] body.nsp-private-workspace #nsp-bp-modal #nsp-bp-modal-close{
  background:var(--nsp617-surface-2)!important;
  color:var(--nsp617-text)!important;
  -webkit-text-fill-color:currentColor!important;
}
html[data-theme] body.nsp-private-workspace #nsp-bp-modal :is(input,select){
  background:var(--nsp617-surface)!important;
  border-color:var(--nsp617-border)!important;
  color:var(--nsp617-text)!important;
  -webkit-text-fill-color:var(--nsp617-text)!important;
}
html[data-theme] body.nsp-private-workspace #nsp-bp-modal .nsw-bp-order-summary{
  background:var(--nsp617-surface-2)!important;
  border-color:var(--nsp617-border-soft)!important;
  color:var(--nsp617-body)!important;
}
html[data-theme] body.nsp-private-workspace #nsp-bp-modal .nsw-bp-order-summary :is(span,strong){color:inherit!important;-webkit-text-fill-color:currentColor!important}
html[data-theme] body.nsp-private-workspace #nsp-bp-modal .nsw-bp-modal-note{color:var(--nsp617-muted)!important;-webkit-text-fill-color:currentColor!important}

/* ========================================================================== */
/* 8. Dark-mode surfaces missed by older component-specific styles           */
/* ========================================================================== */
html[data-theme="dark"] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace :is(
  .nsp-card,.nsp-ov-card,.nsp-store-card,.nsp-bp-card,.nsp-ft-card,
  .nsp-tool-card2,.nsp-svc-pagecard,.nsp-svc-order,.nsp-tma-d-card,
  .nsp-tma-service-card,.nsp-tmasvc-order,.nsp-share-account-options article,
  .nsp-recommend-prompt,.nsp-share-service-summary
){
  background:var(--nsp617-surface)!important;
  border-color:var(--nsp617-border-soft)!important;
  color:var(--nsp617-body)!important;
}
html[data-theme="dark"] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace :is(
  .nsp-card,.nsp-ov-card,.nsp-store-card,.nsp-bp-card,.nsp-ft-card,
  .nsp-tool-card2,.nsp-svc-pagecard,.nsp-svc-order,.nsp-tma-d-card,
  .nsp-tma-service-card,.nsp-tmasvc-order
) :is(h1,h2,h3,h4,strong){color:var(--nsp617-text)!important}
html[data-theme="dark"] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace :is(
  .nsp-card,.nsp-ov-card,.nsp-store-card,.nsp-bp-card,.nsp-ft-card,
  .nsp-tool-card2,.nsp-svc-pagecard,.nsp-svc-order,.nsp-tma-d-card,
  .nsp-tma-service-card,.nsp-tmasvc-order
) :is(p,small,li){color:var(--nsp617-body)!important}

/* Share drawer is an authenticated workspace surface too. */
html[data-theme="dark"] body.nsp-private-workspace .nsp-share-drawer,
html[data-theme="dark"] body.nsp-private-workspace .nsp-share-head{
  background:#0e1b17!important;
  color:#d8e6df!important;
  border-color:#345046!important;
}
html[data-theme="dark"] body.nsp-private-workspace .nsp-share-drawer :is(h1,h2,h3,strong,label){color:#f4fbf7!important}
html[data-theme="dark"] body.nsp-private-workspace .nsp-share-drawer :is(p,small){color:#b0c3ba!important}
html[data-theme="dark"] body.nsp-private-workspace .nsp-share-drawer :is(
  .nsp-share-format-row button,.nsp-share-theme-row button,.nsp-share-channel-grid button,
  .nsp-share-primary-actions button,.nsp-share-copy-actions button,.nsp-share-service-summary
){background:#13231d!important;border-color:#557367!important;color:#e3f4ec!important}
html[data-theme="dark"] body.nsp-private-workspace .nsp-share-caption-field textarea{background:#13231d!important;border-color:#557367!important;color:#f4fbf7!important;-webkit-text-fill-color:#f4fbf7!important}
html[data-theme="dark"] body.nsp-private-workspace .nsp-share-primary-actions .nsp-share-native{background:#0a6849!important;border-color:#0a6849!important;color:#fff!important}

/* Semantic text pills/badges remain legible. */
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace :is(.nsw-reason,.nsp-required,.nsp-svc-required,.nsp-required-badge){opacity:1!important;-webkit-text-fill-color:currentColor!important}

/* ========================================================================== */
/* 9. High contrast / reduced motion                                         */
/* ========================================================================== */
@media(forced-colors:active){
  html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace :is(button,a,input,select,textarea,.nsw-bp-topic-card){
    forced-color-adjust:auto!important;
    border-color:ButtonText!important;
  }
  #nsp-p-bplan .nsw-bp-topic-card.is-selected::after{background:Highlight!important;color:HighlightText!important}
}
@media(prefers-reduced-motion:reduce){
  #nsp-p-bplan .nsw-bp-topic-card{transition:none!important}
}

@media(max-width:720px){
  #nsp-p-bplan .nsw-bp-topic-copy strong{font-size:1.08rem!important}
  #nsp-p-bplan .nsw-bp-topic-card{min-height:112px!important;padding:17px 16px 16px 18px!important}
}

/* GST302 dark category palette: preserve category differentiation without
   introducing light cards into the dark workspace. */
html[data-theme="dark"] body.nsp-private-workspace #nsp-p-bplan .nsw-bp-topic-card{--bp-tint:#10251e}
html[data-theme="dark"] body.nsp-private-workspace #nsp-p-bplan .nsw-bp-topic-card[data-area="agripreneur"]{--bp-accent:#70d49b;--bp-tint:#10261b}
html[data-theme="dark"] body.nsp-private-workspace #nsp-p-bplan .nsw-bp-topic-card[data-area="biotechnology"]{--bp-accent:#b7a2ff;--bp-tint:#1d1930}
html[data-theme="dark"] body.nsp-private-workspace #nsp-p-bplan .nsw-bp-topic-card[data-area="general-business"]{--bp-accent:#85bdf5;--bp-tint:#112235}
html[data-theme="dark"] body.nsp-private-workspace #nsp-p-bplan .nsw-bp-topic-card[data-area="green-education"]{--bp-accent:#a9d879;--bp-tint:#192619}
html[data-theme="dark"] body.nsp-private-workspace #nsp-p-bplan .nsw-bp-topic-card[data-area="health"]{--bp-accent:#f09aae;--bp-tint:#2b171d}
html[data-theme="dark"] body.nsp-private-workspace #nsp-p-bplan .nsw-bp-topic-card[data-area="ict"]{--bp-accent:#79d7df;--bp-tint:#10272a}
html[data-theme="dark"] body.nsp-private-workspace #nsp-p-bplan .nsw-bp-topic-card{
  background:var(--bp-tint)!important;
  border-top-color:color-mix(in srgb,var(--bp-accent) 42%,#345046)!important;
  border-right-color:color-mix(in srgb,var(--bp-accent) 42%,#345046)!important;
  border-bottom-color:color-mix(in srgb,var(--bp-accent) 42%,#345046)!important;
}
html[data-theme="dark"] body.nsp-private-workspace #nsp-p-bplan .nsw-bp-topic-copy strong{color:#f4fbf7!important}
html[data-theme="dark"] body.nsp-private-workspace #nsp-p-bplan .nsw-bp-topic-action{background:rgba(255,255,255,.06)!important}

html[data-theme] body.nsp-private-workspace #nsp-bp-modal label span{color:var(--nsp617-muted)!important;-webkit-text-fill-color:currentColor!important}
html[data-theme] body.nsp-private-workspace #nsp-bp-modal #nsp-bp-m-area{color:var(--nsp617-link)!important;-webkit-text-fill-color:currentColor!important}
html[data-theme] body.nsp-private-workspace #nsp-bp-modal #nsp-bp-success-step p{color:var(--nsp617-body)!important;-webkit-text-fill-color:currentColor!important}
html[data-theme] body.nsp-private-workspace #nsp-bp-modal .nsw-bp-step-badge{
  background:var(--nsp617-info-bg)!important;
  border-color:var(--nsp617-focus)!important;
  color:var(--nsp617-info-text)!important;
  -webkit-text-fill-color:currentColor!important;
}

/* Reassert icon-container foregrounds after every retained visual layer. */
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace :is(
  .nsw-card-icon,.nsw-tool-card>span,.nsw-account-card>span,.nsw-library-icon,
  .nsw-delivery-icon,.nsw-action-icon,.nsp-ft-ico,.nsp-service-icon,
  .nsp-share-account-options article>span,.nsp-recommend-icon,.nsp-hub-item-icon,
  .nsp-tool-icon,.nsp-tool-ico
){
  background:var(--nsp617-surface-2)!important;
  color:var(--nsp617-link)!important;
  -webkit-text-fill-color:currentColor!important;
  opacity:1!important;
}
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace :is(
  .nsw-card-icon,.nsw-tool-card>span,.nsw-account-card>span,.nsw-library-icon,
  .nsw-delivery-icon,.nsw-action-icon,.nsp-ft-ico,.nsp-service-icon,
  .nsp-share-account-options article>span,.nsp-recommend-icon,.nsp-hub-item-icon,
  .nsp-tool-icon,.nsp-tool-ico
) svg{color:inherit!important;opacity:1!important}

/* ========================================================================== */
/* 10. Complete checkout/wizard readability audit                            */
/* ========================================================================== */
html[data-theme="dark"] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace{
  color-scheme:dark;
}
html[data-theme="light"] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace{
  color-scheme:light;
}

/* Service-detail microcopy is often rendered as spans rather than paragraphs;
   own those foregrounds explicitly instead of relying on inherited legacy
   navy/green values. */
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace :is(
  .nsp-service-kicker,.nsp-checkout-eyebrow,.nsp-svc-sublabel,.nsp-svc-modal-tag,
  .nsp-v62-special-trust,.nsp-cvhint,.nsp-cvprev-note,.nsp-svc-order-ref,
  .nsp-svc-msg-meta,.nsp-svc-field-help
){
  color:var(--nsp617-muted)!important;
  -webkit-text-fill-color:var(--nsp617-muted)!important;
  opacity:1!important;
}
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace :is(
  .nsp-svc-title,.nsp-svc-h2,.nsp-cvform-head,.nsp-lblhead,.nsp-svc-modal-title,
  .nsp-v62-special-head,.nsp-svc-order-title,.nsp-svc-revh
){
  color:var(--nsp617-text)!important;
  -webkit-text-fill-color:var(--nsp617-text)!important;
  opacity:1!important;
}

/* Form, review, quote and status surfaces used by the specialised service
   engines. This closes the hard-coded-white holes visible in dark mode. */
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace :is(
  .nsp-svc-fieldset,.nsp-svc-whoami,.nsp-svc-quote,.nsp-svc-review,
  .nsp-cvstep,.nsp-cvprev,.nsp-cvphoto,.nsp-svc-modal-dialog,
  .nsp-svc-msg-panel,.nsp-svc-thread,.nsp-svc-compose,.nsp-svc-reupload,
  .nsp-svc-attach-row,.nsp-v62-special-head,.nsp-v62-special-trust
){
  background:var(--nsp617-surface)!important;
  border-color:var(--nsp617-border-soft)!important;
  color:var(--nsp617-body)!important;
}
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace :is(
  .nsp-svc-quote-line,.nsp-svc-quote-total,.nsp-svc-whoami-text,
  .nsp-svc-order-money,.nsp-svc-order-total
){
  color:var(--nsp617-text)!important;
  -webkit-text-fill-color:var(--nsp617-text)!important;
  opacity:1!important;
}
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace :is(
  .nsp-svc-note,.nsp-cvform-intro,.nsp-svc-desc,.nsp-v62-no-results,
  .nsp-svc-empty,.nsp-svc-msg-empty,.nsp-svc-msg-loading
){
  color:var(--nsp617-body)!important;
  -webkit-text-fill-color:var(--nsp617-body)!important;
  opacity:1!important;
}

/* Checkout safety and resume notices. */
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace .nsp-checkout-safety{
  background:var(--nsp617-success-bg)!important;
  border-color:var(--nsp617-border-soft)!important;
  color:var(--nsp617-success-text)!important;
}
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace .nsp-checkout-safety :is(span,p,strong,svg){
  color:inherit!important;
  -webkit-text-fill-color:currentColor!important;
  opacity:1!important;
}
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace .nsp-v65-resume-notice>div :is(strong,small){
  color:var(--nsp617-info-text)!important;
  -webkit-text-fill-color:var(--nsp617-info-text)!important;
}

/* The broad .nsp-svc-btn primary rule is retained for legacy service engines,
   but back/upload/cancel controls get a more specific secondary override. */
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace .nsp-v62-order-form :is(
  .nsp-v62-stage-back,.nsp-cvnav-back,.nsp-cvadd,.nsp-cvprev-btn,
  .nsp-svc-attach-btn,.nsp-svc-reupload-btn
),
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace .nsp-cvform :is(
  .nsp-cvnav-back,.nsp-cvadd,.nsp-cvprev-btn,.nsp-svc-attach-btn,.nsp-svc-reupload-btn
){
  background:var(--nsp617-secondary-bg)!important;
  border-color:var(--nsp617-border)!important;
  color:var(--nsp617-secondary-text)!important;
  -webkit-text-fill-color:var(--nsp617-secondary-text)!important;
}

/* Every checkout navigation/payment action remains readable even if an older
   component adds inline colour or WebKit text-fill. */
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace :is(
  .nsp-v62-stage-next,.nsp-cvnav-next,.nsp-cvnav-pay:not(:disabled),
  .nsp-svc-pay:not(:disabled),.nsp-svc-order-pay:not(:disabled),
  .nsp-tma-submit-btn:not(:disabled),.nsp-tma-cta-primary:not(:disabled)
){
  color:#fff!important;
  -webkit-text-fill-color:#fff!important;
}

/* ========================================================================== */
/* 11. GST302 filters + unmistakable selection feedback                      */
/* ========================================================================== */
html[data-theme] body.nsp-private-workspace #nsp-app.nsp #nsp-p-bplan .nsp-bp-tabs .nsp-bp-tab{
  background:var(--nsp617-surface-2)!important;
  border-color:var(--nsp617-border)!important;
  color:var(--nsp617-body)!important;
  -webkit-text-fill-color:var(--nsp617-body)!important;
  opacity:1!important;
}
html[data-theme] body.nsp-private-workspace #nsp-app.nsp #nsp-p-bplan .nsp-bp-tabs .nsp-bp-tab:hover{
  background:var(--nsp617-surface-3)!important;
  border-color:var(--nsp617-link)!important;
  color:var(--nsp617-link-hover)!important;
}
html[data-theme] body.nsp-private-workspace #nsp-app.nsp #nsp-p-bplan .nsp-bp-tabs .nsp-bp-tab.active{
  background:var(--nsp617-success-bg)!important;
  border-color:var(--nsp617-link)!important;
  color:var(--nsp617-success-text)!important;
  -webkit-text-fill-color:var(--nsp617-success-text)!important;
}
#nsp-p-bplan .nsw-bp-topic-card .nsw-bp-topic-action-label{
  color:inherit!important;
  -webkit-text-fill-color:currentColor!important;
}
#nsp-p-bplan .nsw-bp-topic-card.is-selected,
#nsp-p-bplan .nsw-bp-topic-card[aria-pressed="true"]{
  transform:translateY(-1px)!important;
}
#nsp-p-bplan .nsw-bp-topic-card.is-selected .nsw-bp-topic-copy small,
#nsp-p-bplan .nsw-bp-topic-card[aria-pressed="true"] .nsw-bp-topic-copy small{
  font-weight:950!important;
}

/* ========================================================================== */
/* 12. Header, tabs, notices and legacy child-workspace icon visibility       */
/* ========================================================================== */
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace :is(
  .nsw-topbar,.nsw-page,.nsw-panel,.nsw-order-card,.nsw-service-card,
  .nsw-tool-card,.nsw-account-card,.nsw-profile-card
){
  color:var(--nsp617-body)!important;
}
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace :is(
  .nsw-topbar,.nsw-page,.nsw-panel,.nsw-order-card,.nsw-service-card,
  .nsw-tool-card,.nsw-account-card,.nsw-profile-card
) :is(svg,path,circle,rect,line,polyline,polygon){
  visibility:visible!important;
  opacity:1!important;
}
html[data-theme="dark"] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace :is(
  .nsw-panel,.nsw-order-card,.nsw-service-card,.nsw-tool-card,.nsw-account-card,
  .nsw-profile-card,.nsw-notification-panel,.nsp-user-menu,.nsp-search-dd
){
  background:var(--nsp617-surface)!important;
  border-color:var(--nsp617-border-soft)!important;
}
html[data-theme] body.nsp-private-workspace #nsp-app.nsp .nsp-workspace :is(
  .nsw-status,.nsp-svc-status,.nsp-required,.nsp-svc-required,.nsp-required-badge,
  .nsw-reason,.nsp-service-kicker
){
  -webkit-text-fill-color:currentColor!important;
  opacity:1!important;
}
