/* SMMPIX — Global Primary Color Contract (v74)
 * theme_primary from Admin Settings is the single source of truth (--p).
 * Loaded last in <head> so page CSS cannot leave stale accent colors.
 */
:root,
html,
html[data-theme="light"],
html[data-theme="dark"]{
  --primary:var(--p,#7c3aed);
  --primary-strong:var(--p,#7c3aed);
  --accent:var(--p,#7c3aed);
  --primary-soft:color-mix(in srgb,var(--p,#7c3aed) 12%,transparent);
  --primary-border:color-mix(in srgb,var(--p,#7c3aed) 32%,var(--bd,#e2e8f0));
}

/* ========== ALL primary buttons (user + shared) ========== */
.btn-primary,
button.btn-primary,
a.btn-primary,
.btnx-primary,
button.bg-primary,
a.bg-primary,
.bg-p,
.bg-primary,
.site-cta,
.t3-cta,
.pp-l .site-cta,
.btn-b,
.btn-a,
.btn-login,
.btn-register,
/* New Order */
.xo-submit,
button.xo-submit,
/* Add Funds */
.afx-submit,
button.afx-submit,
/* Services */
.svc-btn.primary,
button.svc-btn.primary,
a.svc-btn.primary,
/* Mass order / orders */
.mo-search-btn,
button.mo-search-btn,
/* Tickets */
.ut7-btn-primary,
button.ut7-btn-primary,
/* Account */
.ua-btn-primary,
/* Dashboard */
.db-hero-btn.primary,
/* Generic submit in client area */
body.is-client button[type="submit"]:not(.nav-item):not(.btn-ghost):not(.btn-danger):not(.mo-btn-cancel):not(.afx-gw-item):not(.plat-btn):not(.pay-card):not(.amt-chip):not(.xo-dd-btn):not(.mo-copy),
body.is-client .btn.btn-primary{
  background:var(--p,#7c3aed)!important;
  background-image:none!important;
  border-color:var(--p,#7c3aed)!important;
  color:#fff!important;
}
.btn-primary:hover,
.btnx-primary:hover,
.site-cta:hover,
.t3-cta:hover,
.btn-login:hover,
.btn-register:hover,
.xo-submit:hover,
.afx-submit:hover,
.svc-btn.primary:hover,
.mo-search-btn:hover{
  filter:brightness(1.06);
}

/* Text / border accents */
.text-p,
.text-primary,
.text-orange-500,
.text-orange-600,
.text-blue-600,
.text-indigo-600,
a.text-primary,
a.text-p{
  color:var(--p,#7c3aed)!important;
}
.border-p,
.border-primary,
.border-orange-500,
.border-blue-600,
.border-indigo-600{
  border-color:var(--p,#7c3aed)!important;
}

/* Focus rings */
body.is-client input:focus,
body.is-client select:focus,
body.is-client textarea:focus,
body.is-client .mo-field:focus,
body.is-client .xo-input:focus,
body.is-client .xo-dd-btn:focus,
body.is-client .afx-input:focus,
body.is-client .svc-field:focus,
body.is-client .u6-input:focus,
body.is-client .u6-select:focus,
body.is-client .u6-textarea:focus{
  border-color:var(--p,#7c3aed)!important;
  box-shadow:0 0 0 3px color-mix(in srgb,var(--p,#7c3aed) 18%,transparent)!important;
}

/* Topbar */
.topbar{
  border-bottom-color:color-mix(in srgb,var(--p,#7c3aed) 38%,var(--bd,#e2e8f0))!important;
}
.topbar .theme-toggle:hover,
.topbar .pill:hover{
  color:var(--p,#7c3aed)!important;
  border-color:var(--p,#7c3aed)!important;
}
.topbar .text-emerald-600{color:var(--p,#7c3aed)!important}

/* Sidebar active (non-perfect themes use text accent; perfect uses white on --p panel) */
html:not([data-ui-theme="perfect"]) .sidebar .nav-item.on,
html:not([data-ui-theme="perfect"]) #drawer .nav-item.on{
  color:var(--p,#7c3aed)!important;
  background:color-mix(in srgb,var(--p,#7c3aed) 15%,transparent)!important;
}
html:not([data-ui-theme="perfect"]) .sidebar .nav-item.on .ni-svg,
html:not([data-ui-theme="perfect"]) #drawer .nav-item.on .ni-svg,
html:not([data-ui-theme="perfect"]) .sidebar .nav-item:hover .ni-svg,
html:not([data-ui-theme="perfect"]) #drawer .nav-item:hover .ni-svg{
  color:var(--p,#7c3aed)!important;
}

/* Perfect theme sidebar/drawer always primary */
html[data-ui-theme="perfect"] aside.sidebar,
html[data-ui-theme="perfect"] #drawer .drawer-panel{
  background:var(--p,#7c3aed)!important;
  background-image:linear-gradient(180deg,var(--p,#7c3aed) 0%,color-mix(in srgb,var(--p,#7c3aed) 72%,#000) 100%)!important;
}
html[data-ui-theme="perfect"][data-theme="dark"] aside.sidebar,
html[data-ui-theme="perfect"][data-theme="dark"] #drawer .drawer-panel{
  background:var(--p,#7c3aed)!important;
  background-image:linear-gradient(180deg,color-mix(in srgb,var(--p,#7c3aed) 92%,#000) 0%,color-mix(in srgb,var(--p,#7c3aed) 55%,#000) 100%)!important;
}

/* Step numbers / badges that should match primary */
.afx-num,
.no-num,
.xo-badge,
body.is-client .uo-page.active{
  background:var(--p,#7c3aed)!important;
  border-color:var(--p,#7c3aed)!important;
  color:#fff!important;
}

/* Chips / toggles on */
.xo-chip.on,
.mo-chip.on,
.svc-chip.on,
body.is-client .amt-chip.on,
body.is-client .pay-card.on{
  border-color:var(--p,#7c3aed)!important;
  color:var(--p,#7c3aed)!important;
  background:color-mix(in srgb,var(--p,#7c3aed) 12%,transparent)!important;
}

/* Links that should use primary */
body.is-client a.text-p,
body.is-client .text-p,
body.is-client main a:not(.btn):not(.nav-item):not(.mo-chip):not(.uo-page):hover{
  /* keep default link behavior; only force .text-p */
}

/* Admin buttons also follow */
body.is-admin .btn-primary,
body.is-admin .admin-v3 .btn-primary,
body.is-admin .admin-v3 .btnx-primary,
body.is-admin button[class*="bg-primary"]{
  background:var(--p,#7c3aed)!important;
  border-color:var(--p,#7c3aed)!important;
  color:#fff!important;
}

/* Tailwind orange utilities → theme primary (common leftover classes) */
.bg-orange-500,.bg-orange-600,.bg-orange-700,
.from-orange-500,.to-orange-600{
  background-color:var(--p,#7c3aed)!important;
}
.text-orange-500,.text-orange-600,.text-orange-700{
  color:var(--p,#7c3aed)!important;
}
.border-orange-500,.border-orange-600{
  border-color:var(--p,#7c3aed)!important;
}
