/*
 * NOX high-contrast theme audit layer
 * Loaded after theme.css.  This file intentionally targets only the admin app;
 * the iPad and staff portal themes keep their independent palettes.
 */

html[data-theme="nox"][data-theme="nox"] {
  color-scheme: dark;
  --ink: #f7f8fa;
  --muted: #c2cad4;
  --line: #586a7d;
  --soft: #211827;
  --deep: #0b0710;
  --pink: #d6d6d7;
  --pink-2: #aebdca;
  --purple: #4f769a;
  --accent: #d6d6d7;
  --theme-surface: #211827;
  --theme-surface-2: #2d2533;
  --theme-text: #f7f8fa;
  --theme-muted: #c2cad4;
  --theme-line: #586a7d;
  --theme-action: #e2e3e5;
  --theme-action-2: #6594bc;
  --theme-action-text: #100b15;
  --theme-button-bg: #303a46;
  --theme-button-text: #f7f8fa;
  --nox-canvas: #100a15;
  --nox-sidebar: #09060c;
  --nox-panel: #211827;
  --nox-panel-raised: #2d2533;
  --nox-control: #182432;
  --nox-control-hover: #263c50;
  --nox-blue: #73a9d4;
  --nox-blue-strong: #8fc5ee;
  --nox-silver: #e2e3e5;
  --nox-danger: #ff8c98;
  --nox-warning: #ffd071;
  --nox-success: #72d7aa;
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) {
  color: var(--theme-text);
  background:
    radial-gradient(circle at 85% 0%, rgba(57, 98, 136, 0.23), transparent 33%),
    linear-gradient(135deg, #0b0710 0%, #180f1e 52%, #101824 100%);
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) .sidebar {
  color: #f7f8fa;
  border-right: 1px solid #465b70;
  background: linear-gradient(180deg, #09060c 0%, #12101a 56%, #0d1a27 100%);
  box-shadow: 12px 0 34px rgba(0, 0, 0, 0.3);
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) .nav-item {
  color: #d6dce4;
  border: 1px solid transparent;
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) .nav-item svg {
  color: #8fc5ee;
  stroke-width: 2.2;
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) .nav-item:hover {
  color: #ffffff;
  border-color: #516c84;
  background: #1f3244;
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) .nav-item.active {
  color: #0c1117;
  border-color: #d6d6d7;
  background: linear-gradient(100deg, #e2e3e5, #9fbdD5);
  box-shadow: inset 4px 0 0 #396288, 0 8px 22px rgba(0, 0, 0, 0.24);
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) .nav-item.active svg {
  color: #183c59;
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) :where(
  h1, h2, h3, h4, h5, h6, strong, b, legend, label, th,
  .section-heading, .panel-title, .metric-value, .stat-value
) {
  color: #f7f8fa;
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) :where(
  p, small, time, figcaption, .muted, .subtitle, .helper, .hint,
  .field > span, label > span, .sync-info, .empty, .empty-state
) {
  color: #c2cad4;
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) :where(
  .panel, .card, .stats article, .summary-card, .metric-card,
  .filters, .content-grid > section, .management-grid > section,
  .all-stores-dashboard, .dashboard-shift-overview,
  .customer-admin-page, .inventory-admin-page, .business-report-page,
  .agency-admin-page, .admin-settings-grid, .salary-panel, .payroll-panel,
  .shift-panel, .settings-group, .settings-row, fieldset
) {
  color: #f7f8fa;
  border-color: #586a7d;
  background-color: #211827;
  background-image: none;
  box-shadow: 0 12px 32px rgba(0, 0, 0, 0.22);
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) :where(
  .stats article, .summary-card, .metric-card, .settings-row,
  .customer-summary-cards article, .inventory-summary-cards article,
  .portfolio-ranking-row, .ticket-order-meta div, .ticket-order-totals span,
  .shift-weekday, .salary-builder-bar
) {
  background-color: #2d2533;
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) :where(input, select, textarea) {
  color: #f7f8fa;
  caret-color: #8fc5ee;
  border: 1px solid #687b8f;
  background: #182432;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.04);
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) :where(input, textarea)::placeholder {
  color: #aeb9c5;
  opacity: 1;
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) :where(input, select, textarea):hover {
  border-color: #8fc5ee;
  background: #1d2d3d;
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) :where(input, select, textarea):focus {
  color: #ffffff;
  border-color: #8fc5ee;
  outline: none;
  background: #172c3d;
  box-shadow: 0 0 0 3px rgba(115, 169, 212, 0.3);
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) :where(input, select, textarea):disabled {
  color: #aeb7c1;
  border-color: #465363;
  background: #25222a;
  opacity: 0.82;
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) option {
  color: #f7f8fa;
  background: #182432;
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) :where(
  button, .button, [role="button"], .app-link, .pagination a
) {
  color: #f7f8fa;
  border-color: #687b8f;
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) :where(
  button:not(.primary):not(.danger):not(.delete):not(.active),
  .button.secondary, .outline, .clear, .detail, .row-action.ghost,
  .secondary-settings-button
) {
  color: #f7f8fa;
  background: #303a46;
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) :where(
  button:not(.primary):not(.danger):not(.delete):not(.active),
  .button.secondary, .outline, .clear, .detail, .row-action.ghost,
  .secondary-settings-button
):hover {
  color: #ffffff;
  border-color: #8fc5ee;
  background: #263c50;
  transform: translateY(-1px);
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) :where(
  .primary, button.active, .search-btn, .settings-tab.active,
  .row-action:not(.ghost):not(.delete), .receipt-kind-switch button.active,
  .payroll-pdf-button, .salary-export-button
) {
  color: #0b1117;
  border-color: #d6d6d7;
  background: linear-gradient(135deg, #f0f1f2 0%, #c8d3dc 48%, #73a9d4 100%);
  box-shadow: 0 7px 18px rgba(57, 98, 136, 0.3);
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) :where(
  .primary, button.active, .search-btn, .settings-tab.active,
  .row-action:not(.ghost):not(.delete), .receipt-kind-switch button.active,
  .payroll-pdf-button, .salary-export-button
):hover {
  color: #070b0e;
  border-color: #ffffff;
  background: linear-gradient(135deg, #ffffff 0%, #dbe4eb 48%, #8fc5ee 100%);
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) :where(
  .danger, .delete, .row-action.delete, .shift-delete-btn, .delete-category-button
) {
  color: #fff5f6;
  border-color: #b95b66;
  background: #702f3a;
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) :where(
  .danger, .delete, .row-action.delete, .shift-delete-btn, .delete-category-button
):hover {
  color: #ffffff;
  border-color: #ffb2ba;
  background: #91404b;
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) :where(button, a, input, select, textarea):focus-visible {
  outline: 3px solid #8fc5ee;
  outline-offset: 3px;
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) :where(svg, [data-lucide]) {
  color: inherit;
  stroke: currentColor;
  opacity: 1;
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) table {
  color: #f7f8fa;
  border-color: #586a7d;
  background: #211827;
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) :where(thead, th) {
  color: #ffffff;
  border-color: #6c7e91;
  background: #26394a;
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) :where(tbody tr, td) {
  color: #eef1f5;
  border-color: #4c5c6d;
  background: #211827;
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) tbody tr:nth-child(even) td {
  background: #292230;
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) tbody tr:hover :where(td, th) {
  color: #ffffff;
  background: #26394a;
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) :where(
  dialog, [role="dialog"], .modal, .modal-card, .dialog-card,
  .active-ticket-detail-dialog, .cast-profile-dialog, .shift-detail-dialog,
  .shift-minimum-dialog, .inventory-edit-dialog, .payroll-layout-dialog,
  .setup-wizard-dialog
) {
  color: #f7f8fa;
  border-color: #74879a;
  background: #211827;
  box-shadow: 0 26px 80px rgba(0, 0, 0, 0.62), 0 0 0 1px rgba(143, 197, 238, 0.12);
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) dialog::backdrop {
  background: rgba(5, 4, 8, 0.78);
  backdrop-filter: blur(3px);
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) :where(
  .dialog-head, .modal-head, .shift-detail-head, .inventory-dialog-head,
  .payroll-layout-dialog > header, .dialog-footer, .shift-detail-footer,
  .payroll-layout-dialog > footer
) {
  color: #f7f8fa;
  border-color: #586a7d;
  background: #2d2533;
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) :where(
  .status-ok, .status-success, .connected, .synced, .is-open, .badge.success
) {
  color: #a8f0d0;
  border-color: #419b78;
  background: #173e32;
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) :where(
  .status-warning, .warning, .is-understaffed, .badge.warning
) {
  color: #ffe3a3;
  border-color: #b98224;
  background: #493817;
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) :where(
  .status-error, .status-danger, .error, .badge.danger
) {
  color: #ffc2c8;
  border-color: #b95b66;
  background: #51252d;
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) :where(
  a:not(.nav-item):not(.primary), .text-link, .link-button
) {
  color: #8fc5ee;
  text-decoration-color: rgba(143, 197, 238, 0.55);
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) :where(
  a:not(.nav-item):not(.primary), .text-link, .link-button
):hover {
  color: #c9e8ff;
  text-decoration-color: currentColor;
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) ::selection {
  color: #071018;
  background: #9fcdf0;
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) :where(
  input[type="checkbox"], input[type="radio"]
) {
  accent-color: #73a9d4;
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) :where(
  .theme-toggle, .store-switcher, #ark-auth-bar, #ark-auth-header-slot
) {
  color: #f7f8fa;
  border-color: #687b8f;
  background: #182432;
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) .theme-toggle:hover {
  color: #ffffff;
  border-color: #d6d6d7;
  background: #263c50;
}

/* Charts retain semantic series separation on the dark purple canvas. */
html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) :where(
  .chart-legend, .chart-label, .axis-label, .chart-empty
) {
  color: #d6dce4;
}

/* Explicitly keep printable settlement/receipt paper white. */
html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) :where(
  .salary-document-sheet, .receipt-paper, .receipt-preview-paper
) {
  color: #151515;
  border-color: #c9c9c9;
  background: #ffffff;
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) :where(
  .salary-document-sheet, .receipt-paper, .receipt-preview-paper
) :where(h1, h2, h3, h4, p, span, strong, small, th, td) {
  color: #151515;
}

@media (prefers-reduced-motion: reduce) {
  html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) * {
    scroll-behavior: auto !important;
    transition-duration: 0.01ms !important;
  }
}

@media print {
  html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) {
    color: #111111;
    background: #ffffff;
  }
}

/* Dashboard icons: never combine the former pale-pink discs with silver glyphs. */
html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) :where(.stat-icon, .stat-icon.pink, .stat-icon.purple) {
  color: #f7f8fa !important;
  border: 2px solid #8fa8be !important;
  background: linear-gradient(145deg, #36536c, #243746) !important;
  box-shadow: inset 0 1px rgba(255, 255, 255, 0.16), 0 6px 16px rgba(0, 0, 0, 0.24) !important;
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) .stat-icon :where(svg, i, .yen-symbol) {
  color: #f7f8fa !important;
  stroke: currentColor !important;
  opacity: 1 !important;
}

/* Shift calendar: steel-blue NOX states with readable amber staffing warnings. */
html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) .shift-calendar {
  border-color: #60758a !important;
  background: #111019 !important;
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) .shift-weekday {
  color: #f7f8fa !important;
  border-color: #4d5d6d !important;
  background: #263543 !important;
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) .shift-day {
  color: #eef2f6 !important;
  border-color: #4f6274 !important;
  background: #1b2029 !important;
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) .shift-day.is-empty {
  background: #151820 !important;
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) .shift-day.is-today {
  background: #21384c !important;
  box-shadow: inset 0 0 0 2px #8fc5ee !important;
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) .shift-calendar .shift-day.has-one-shift {
  background: #203b3b !important;
  box-shadow: inset 0 0 0 2px #68b9a4 !important;
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) .shift-calendar .shift-day.is-understaffed {
  background: #3c301b !important;
  box-shadow: inset 0 0 0 2px #e2b64f !important;
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) :where(.shift-day-total, .shift-day-more) {
  color: #d7e0e8 !important;
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) .shift-day-warning {
  color: #ffe09a !important;
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) .shift-day-number {
  color: #f7f8fa !important;
  border-color: #7790a7 !important;
  background: #2a3a49 !important;
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) .shift-chip {
  color: #ffffff !important;
  border: 1px solid #79a7ca !important;
  background: #315b7b !important;
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) .shift-chip :where(strong, span) {
  color: #ffffff !important;
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) .shift-chip em {
  color: #16344b !important;
  background: #e8f1f8 !important;
}

/* Page heroes: remove the legacy magenta gradient from every admin section. */
html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) :where(
  .portfolio-hero, .customer-admin-head, .inventory-admin-head,
  .payroll-summary-hero, .report-hero
) {
  color: #f7f8fa !important;
  border: 1px solid #71879b !important;
  background:
    radial-gradient(circle at 84% 16%, rgba(214, 214, 215, 0.14), transparent 28%),
    linear-gradient(125deg, #151a22, #26394a 58%, #3c5b74) !important;
  box-shadow: 0 14px 34px rgba(0, 0, 0, 0.28) !important;
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) :where(
  .portfolio-hero, .customer-admin-head, .inventory-admin-head,
  .payroll-summary-hero, .report-hero
) :where(h1, h2, h3, h4, strong, p, small, span, label, svg) {
  color: #f7f8fa !important;
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) :where(
  .eyebrow, .customer-eyebrow, .inventory-eyebrow,
  .payroll-summary-hero > div:first-child > span
) {
  color: #c7d8e7 !important;
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) :where(.customer-search, .inventory-search) {
  color: #f7f8fa !important;
  border-color: #8297aa !important;
  background: #111923 !important;
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) :where(.customer-search, .inventory-search) :where(input, svg) {
  color: #f7f8fa !important;
  border: 0 !important;
  background: transparent !important;
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) :where(.customer-search, .inventory-search) input::placeholder {
  color: #c5ced7 !important;
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) .portfolio-actions button {
  color: #f7f8fa !important;
  border: 1px solid #8297aa !important;
  background: #263c50 !important;
}

/* Summary cards: replace every legacy pink-purple rail and muted purple label. */
html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) :where(
  .portfolio-kpis article, .inventory-summary-cards article, .customer-summary-cards article
) {
  color: #f7f8fa !important;
  border-color: #60758a !important;
  background: #222b35 !important;
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) :where(
  .portfolio-kpis article, .inventory-summary-cards article, .customer-summary-cards article
)::before {
  width: 5px !important;
  background: linear-gradient(180deg, #e2e3e5, #73a9d4 55%, #396288) !important;
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) :where(
  .portfolio-kpis, .inventory-summary-cards, .customer-summary-cards
) :where(span, small) {
  color: #cbd4dd !important;
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) :where(
  .portfolio-kpis, .inventory-summary-cards, .customer-summary-cards
) strong {
  color: #ffffff !important;
}

/* Auth header uses an injected palette; define a real NOX variant instead of light-theme purple. */
html[data-theme="nox"] :is(#ark-auth-bar, #ark-auth-panel, #ark-auth-overlay) {
  --auth-surface: #211827 !important;
  --auth-surface-2: #2d3540 !important;
  --auth-text: #f7f8fa !important;
  --auth-muted: #cbd4dd !important;
  --auth-line: #687b8f !important;
  --auth-action: #dfe3e7 !important;
  --auth-action-2: #6f9abd !important;
  --auth-action-text: #111923 !important;
  --auth-button: #283746 !important;
  --auth-button-text: #f7f8fa !important;
  --auth-danger: #ffabb4 !important;
  --auth-overlay: rgba(8, 7, 12, .82) !important;
  color-scheme: dark;
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) #ark-auth-header-slot.role {
  padding: 0 !important;
  color: #f7f8fa !important;
  border: 0 !important;
  background: transparent !important;
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) #ark-auth-bar.in-header .ark-auth-user {
  color: #f7f8fa !important;
  -webkit-text-fill-color: #f7f8fa !important;
  border-color: transparent !important;
  background: transparent !important;
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) #ark-auth-bar.in-header .ark-auth-user small {
  color: #cbd4dd !important;
  -webkit-text-fill-color: #cbd4dd !important;
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) #ark-auth-bar.in-header :where(svg, i) {
  color: #d9e2ea !important;
  stroke: currentColor !important;
}

/* Final contrast sweep: legacy accent and helper colors that escaped component themes. */
html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) :where(.spark, .spark.small) {
  color: #b7d8f1 !important;
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) :where(
  .shift-day-more, .shift-day-total, .salary-document-actions > span,
  .salary-document-field-list span, .salary-document-preview-label span,
  .salary-document-templates button span
) {
  color: #d7e0e8 !important;
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) :where(
  .search-btn, .payroll-pdf-button, .salary-export-button,
  .settings-tab.active, .receipt-kind-switch button.active,
  button.active, .row-action:not(.ghost):not(.delete)
) {
  color: #081018 !important;
  -webkit-text-fill-color: #081018 !important;
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) :where(
  .rank, .rank-1 .rank, .rank-2 .rank, .rank-3 .rank
) {
  color: #ffffff !important;
  -webkit-text-fill-color: #ffffff !important;
  border-color: #8fc5ee !important;
  background: #263c50 !important;
}

html[data-theme="nox"] body:not(.ipad-app):not(.staff-portal-app) :where(
  .salary-builder-bar span, .salary-document-designer span,
  .salary-document-field-list small, .salary-document-editor-head small
) {
  color: #cbd4dd !important;
}
