/* NKTO Theme System v2 — semantic tokens loaded after legacy/page CSS. */
:root{
  color-scheme:dark;
  --surface:#142235;
  --surface-strong:#192a3f;
  --surface-soft:#1d3047;
  --surface-overlay:#22364e;
  --page-bg:#0f1a29;
  --text-primary:#f3f7fb;
  --text-secondary:#c7d3e1;
  --text-muted:#97a9bd;
  --text-disabled:#6f8196;
  --border-subtle:#2b4058;
  --border-strong:#405a76;
  --control-bg:#15263a;
  --control-bg-hover:#1d3148;
  --focus-ring:rgba(52,152,219,.30);
  --shadow-card:0 16px 46px rgba(0,0,0,.24);
  --success-soft:rgba(34,197,94,.13);
  --warning-soft:rgba(245,158,11,.14);
  --danger-soft:rgba(239,68,68,.14);
  --info-soft:rgba(52,152,219,.15);
  --nk-radius-sm:10px;
  --nk-radius-md:14px;
  --nk-radius-lg:20px;
}
html.light,html[data-theme="light"]{
  color-scheme:light;
  --surface:#ffffff;
  --surface-strong:#f8fafc;
  --surface-soft:#f1f5f9;
  --surface-overlay:#ffffff;
  --page-bg:#f5f7fb;
  --text-primary:#172033;
  --text-secondary:#475569;
  --text-muted:#64748b;
  --text-disabled:#94a3b8;
  --border-subtle:#dbe4ee;
  --border-strong:#c6d2df;
  --control-bg:#ffffff;
  --control-bg-hover:#f8fafc;
  --focus-ring:rgba(37,99,235,.18);
  --shadow-card:0 15px 40px rgba(15,23,42,.08);
}
html:not(.light),html[data-theme="dark"]{color-scheme:dark}
html,body{background:linear-gradient(135deg,var(--page-bg),color-mix(in srgb,var(--page-bg) 80%,#173653));color:var(--text-primary)}
body{min-height:100vh}
body,body *{scrollbar-color:var(--border-strong) transparent}
::selection{background:rgba(52,152,219,.35);color:var(--text-primary)}

/* Universal semantic controls. */
input:not([type="checkbox"]):not([type="radio"]):not([type="file"]),select,textarea{
  background-color:var(--control-bg)!important;color:var(--text-primary)!important;border-color:var(--border-subtle)!important;
}
input::placeholder,textarea::placeholder{color:var(--text-muted)!important;opacity:.88}
select option{background:var(--surface)!important;color:var(--text-primary)!important}
input:focus,select:focus,textarea:focus{border-color:var(--primary,#3498db)!important;box-shadow:0 0 0 3px var(--focus-ring)!important;outline:0}
input:disabled,select:disabled,textarea:disabled,button:disabled{color:var(--text-disabled)!important;opacity:.68}
label{color:var(--text-primary)}
.help,.hint,.muted-text{color:var(--text-muted)!important}

/* Product surfaces introduced in Patch 05 and legacy components. */
.nkx-filter-panel,.nkx-course-card,.nkx-detail-section,.nkx-purchase-card,.nkx-course-quick-search,
.nkx-notification-tools,.nkx-notification,.nkx-ticket-kpis a,.nkx-ticket-tools,.nkx-ticket-card,
.nkx-panel,.nkx-action-center,.nkx-dashboard-kpis article,.nkx-dashboard-search,
.nkx-consulting-wizard,.nkx-consulting-stage,.nkx-consulting-card,.nkx-consulting-review,
.nkx-result-card,.nkx-search-box,.nkx-search-summary,.nkx-empty-state,
.ticket-card,.ticket-empty,.ticket-form,.ticket-reply-panel,.ticket-info-panel,
.course-section-card,.dashboard-section,.dashboard-card,.dashboard-notifications-card{
  background:var(--surface)!important;color:var(--text-primary)!important;border-color:var(--border-subtle)!important;box-shadow:var(--shadow-card)
}
.nkx-filter-panel strong,.nkx-filter-field label,.nkx-course-card h2,.nkx-detail-section h2,.nkx-purchase-card strong,
.nkx-notification h2,.nkx-ticket-card h2,.nkx-panel h2,.nkx-action-center h2,
.nkx-consulting-wizard h2,.nkx-consulting-stage h2,.nkx-consulting-card strong,.nkx-result-card h3,
.ticket-card h2,.ticket-field label{color:var(--text-primary)!important}
.nkx-course-hero p,.nkx-course-card__body>p,.nkx-course-card__facts span,.nkx-course-toolbar span,.nkx-course-toolbar small,
.nkx-filter-panel__head span,.nkx-filter-panel label,.nkx-course-detail__intro>p,.nkx-rich-copy,
.nkx-notifications-hero p,.nkx-notification p,.nkx-notification__meta span,.nkx-notification__meta time,
.nkx-ticket-kpis span,.nkx-ticket-card__related span,.nkx-ticket-card__state span,.nkx-ticket-card__state time,
.nkx-dashboard-hero p,.nkx-panel p,.nkx-consulting-wizard p,.nkx-consulting-stage p,.nkx-consulting-card p,
.nkx-result-card p,.nkx-result-card small,.ticket-card p,.ticket-field-help{color:var(--text-muted)!important}

/* The concrete breakage seen in Courses / Consulting / Dashboard screenshots. */
.nkx-filter-panel select,.nkx-notification-selects select,.nkx-ticket-tools select,
.nkx-consulting-wizard select,.nkx-consulting-wizard input,.nkx-consulting-wizard textarea{
  background:var(--control-bg)!important;color:var(--text-primary)!important;border:1px solid var(--border-subtle)!important
}
.nkx-filter-panel option,.nkx-notification-selects option,.nkx-ticket-tools option,.nkx-consulting-wizard option{background:var(--surface);color:var(--text-primary)}
.nkx-consulting-wizard,.nkx-consulting-stage{overflow:hidden}
.nkx-consulting-card,.nkx-service-card,.nkx-advisor-card{
  background:var(--surface-strong)!important;color:var(--text-primary)!important;border-color:var(--border-subtle)!important
}
.nkx-service-card:hover,.nkx-advisor-card:hover,.nkx-consulting-card:hover{background:var(--control-bg-hover)!important;border-color:var(--primary,#3498db)!important}
.nkx-service-card.is-selected,.nkx-advisor-card.is-selected,[data-consulting-option].is-selected{background:var(--info-soft)!important;border-color:var(--primary,#3498db)!important}
.nkx-dashboard-kpis article,.nkx-action-center,.nkx-panel{background:var(--surface)!important}
.nkx-dashboard-kpis article span,.nkx-dashboard-kpis article small,.nkx-action-card span,.nkx-action-card small{color:var(--text-muted)!important}
.nkx-action-card,.nkx-mini-session-list article,.dashboard-notification-item,.nkx-dashboard-course,.nkx-consulting-list__item{
  background:var(--surface-strong)!important;color:var(--text-primary)!important;border-color:var(--border-subtle)!important
}

/* Buttons and ghost controls need readable text in both themes. */
.btn-ghost,.btn-ghost--border,.nkx-secondary-action,.ticket-btn--ghost{color:var(--text-primary)!important;border-color:var(--border-strong)!important;background:transparent!important}
.btn-ghost:hover,.btn-ghost--border:hover,.nkx-secondary-action:hover,.ticket-btn--ghost:hover{background:var(--control-bg-hover)!important}

/* Tables, lists, alerts, pagination. */
table{color:var(--text-primary)}
th{color:var(--text-secondary)}
td,th{border-color:var(--border-subtle)}
.nkx-pagination a,.nkx-notification-pagination a{border-color:var(--border-subtle)!important;background:var(--surface)!important}
.page-message,.alert,.ticket-alert{border-color:var(--border-subtle)}
.page-message--success,.alert--success{background:var(--success-soft)!important;color:var(--text-primary)!important}
.page-message--warning,.alert--warning{background:var(--warning-soft)!important;color:var(--text-primary)!important}
.page-message--error,.alert--error{background:var(--danger-soft)!important;color:var(--text-primary)!important}

/* Profile / checkout / activity introduced in Patch 06. */
.nkp-page{padding:38px 0 72px}.nkp-shell{display:grid;grid-template-columns:250px minmax(0,1fr);gap:22px;align-items:start}
.nkp-card{background:var(--surface);color:var(--text-primary);border:1px solid var(--border-subtle);border-radius:20px;padding:20px;box-shadow:var(--shadow-card)}
.nkp-sidebar{position:sticky;top:90px;display:grid;gap:8px}.nkp-sidebar a{padding:10px 12px;border-radius:12px;color:var(--text-secondary);text-decoration:none}.nkp-sidebar a:hover,.nkp-sidebar a.is-active{background:var(--info-soft);color:var(--primary,#3498db)}
.nkp-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.nkp-field{display:grid;gap:7px}.nkp-field.is-full{grid-column:1/-1}.nkp-field label{font-size:.82rem;font-weight:800}.nkp-field input,.nkp-field select{width:100%;padding:11px 12px;border:1px solid var(--border-subtle);border-radius:12px;font:inherit}
.nkp-switch{display:flex;align-items:flex-start;gap:10px;padding:12px;border:1px solid var(--border-subtle);border-radius:14px;background:var(--surface-strong)}.nkp-switch input{margin-top:5px}.nkp-switch span{display:grid;gap:2px}.nkp-switch small{color:var(--text-muted)}
.nkp-timeline{display:grid;gap:10px}.nkp-event{display:grid;grid-template-columns:42px 1fr auto;gap:12px;align-items:center;padding:12px;border-radius:15px;background:var(--surface-strong);border:1px solid var(--border-subtle)}.nkp-event__icon{width:42px;height:42px;border-radius:13px;display:grid;place-items:center;background:var(--info-soft);color:var(--primary,#3498db)}.nkp-event p{margin:2px 0 0;color:var(--text-muted);font-size:.78rem}.nkp-event time{color:var(--text-muted);font-size:.72rem}
.nk-checkout{padding:40px 0 72px}.nk-checkout__shell{max-width:920px;margin:auto;display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:22px}.nk-checkout__card{background:var(--surface);border:1px solid var(--border-subtle);border-radius:22px;padding:22px;box-shadow:var(--shadow-card)}.nk-checkout__summary{display:grid;gap:10px}.nk-checkout__row{display:flex;justify-content:space-between;gap:16px;padding:10px 0;border-bottom:1px solid var(--border-subtle)}.nk-checkout__row:last-child{border-bottom:0}.nk-checkout__row span{color:var(--text-muted)}.nk-checkout__total{font-size:1.2rem}.nk-checkout__actions{display:grid;gap:9px;margin-top:15px}.nk-checkout__actions .btn{width:100%}
@media(max-width:850px){.nkp-shell,.nk-checkout__shell{grid-template-columns:1fr}.nkp-sidebar{position:static;grid-template-columns:repeat(3,1fr)}.nkp-sidebar a{text-align:center}.nkp-grid{grid-template-columns:1fr}.nkp-field.is-full{grid-column:auto}}
@media(max-width:520px){.nkp-sidebar{grid-template-columns:1fr}.nkp-event{grid-template-columns:38px 1fr}.nkp-event time{grid-column:2}}

/* Consulting wizard deep surfaces */
.nkx-wizard-step,.nkx-service-card>span,.nkx-advisor-card,.nkx-question,.nkx-review-card>div,.nkx-choice-grid span{background:var(--surface)!important;color:var(--text-primary)!important;border-color:var(--border-subtle)!important}
.nkx-service-card small,.nkx-service-card p,.nkx-advisor-card__copy small,.nkx-advisor-card__copy p,.nkx-question__title span,.nkx-review-card span{color:var(--text-muted)!important}
.nkx-service-card input:checked+span,.nkx-advisor-card:has(input:checked),.nkx-choice-grid input:checked+span{background:var(--info-soft)!important;border-color:var(--primary,#3498db)!important}
.nkx-wizard-progress button{color:var(--text-muted)!important}.nkx-wizard-progress button.is-active,.nkx-wizard-progress button.is-done{color:var(--primary,#3498db)!important}

/* Patch 06.1 — final contrast + multiline preservation regression layer. */
/* Dashboard notification widget: legacy dashboard CSS used dark heading colors even in dark mode. */
.dashboard-notifications-card__head h2,
.dashboard-notification-item__top strong,
.dashboard-notification-empty strong{
  color:var(--text-primary)!important;
}
.dashboard-notifications-card__head p,
.dashboard-notification-item__top span,
.dashboard-notification-item__body>p,
.dashboard-notification-empty span{
  color:var(--text-muted)!important;
}
.dashboard-notification-item__actions a,
.dashboard-notification-item__actions button{
  color:var(--text-primary)!important;
}

/*
 * Text authored with Enter/newlines must render the same on desktop and mobile.
 * pre-line keeps authored line breaks while still wrapping naturally on narrow screens.
 */
.nk-preserve-lines,
.nkx-course-detail__intro>p,
.nkx-rich-copy,
.nkx-topic-list p,
.nkx-session-copy p,
.nkx-next-session__copy p,
.nkx-service-card p,
.nkx-advisor-card__copy p,
.nkx-notification__body>p,
.dashboard-notification-item__body>p,
.nk-seo-profile-hero p,
.nk-seo-hero>p,
.nk-seo-methodology,
.custom-page-hero-pro>p{
  white-space:pre-line!important;
  overflow-wrap:anywhere;
  word-break:normal;
}

/* Do not let mobile layout rules collapse authored line breaks. */
@media(max-width:720px){
  .nkx-course-detail__intro>p,
  .nkx-rich-copy,
  .nkx-topic-list p,
  .nkx-session-copy p,
  .nkx-next-session__copy p,
  .nkx-service-card p,
  .nkx-advisor-card__copy p,
  .nkx-notification__body>p,
  .dashboard-notification-item__body>p,
  .nk-seo-profile-hero p,
  .nk-seo-hero>p,
  .nk-seo-methodology,
  .custom-page-hero-pro>p{
    white-space:pre-line!important;
  }
}

/* Compact text surfaces that can also originate from multiline editorial fields. */
.nkx-result-card p,
.nkx-instructor small,
.nkx-resource-card small,
.nk-seo-related article p{
  white-space:pre-line!important;
  overflow-wrap:anywhere;
  word-break:normal;
}

/* Patch 06.2 — Dashboard mobile quick-nav containment.
 * Patch 05 intentionally used a horizontally scrollable row. With five shortcuts,
 * the Support item can start outside the initial mobile viewport. On small screens
 * expose every primary shortcut without requiring horizontal discovery/scrolling.
 */
@media(max-width:700px){
  .nkx-dashboard-nav{
    display:grid!important;
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:8px;
    overflow:visible!important;
    padding:4px 0 18px;
  }
  .nkx-dashboard-nav a{
    width:100%;
    min-width:0;
    justify-content:center;
    text-align:center;
    white-space:normal;
    line-height:1.45;
    padding:9px 8px;
  }
  .nkx-dashboard-nav a:nth-child(4),
  .nkx-dashboard-nav a:nth-child(5){
    grid-column:span 1;
  }
}
@media(max-width:430px){
  .nkx-dashboard-nav{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
  .nkx-dashboard-nav a:last-child{
    grid-column:1 / -1;
  }
}
