/* NCFN UI foundation (v1.31)
   Shared by every NCFN screen: admin panel, member dashboard, sign-in, admin
   sign-in, registration and the guest landing page.

   Why this exists: most WordPress themes style every button and link with a
   blanket rule such as `button:hover { background: #c36; color: #fff }` (and
   the same on :focus, so a button stays tinted after it is clicked). Our own
   rules usually changed only the background on hover, so the theme's white
   text was left sitting on a light background and labels seemed to disappear.

   Every selector below starts with a screen's root ID, so it out-ranks the
   theme without !important, and each screen's stylesheet then pins the exact
   colours for its own buttons in every state. */

:is(#ncfn-admin-panel-app, #ncfn-dashboard-app, #ncfn-login-app, #ncfn-admin-login-app, #ncfn-registration-app, #ncfn-guest-app, #ncfn-toasts, #ncfn-ap-toast) { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-rendering: optimizeLegibility; -webkit-tap-highlight-color: transparent; }

/* Controls take the page font instead of the browser/theme default. */
:is(#ncfn-admin-panel-app, #ncfn-dashboard-app, #ncfn-login-app, #ncfn-admin-login-app, #ncfn-registration-app, #ncfn-guest-app, #ncfn-toasts, #ncfn-ap-toast) :is(button, input, select, textarea) { font-family: inherit; letter-spacing: normal; }
:is(#ncfn-admin-panel-app, #ncfn-dashboard-app, #ncfn-login-app, #ncfn-admin-login-app, #ncfn-registration-app, #ncfn-guest-app, #ncfn-toasts, #ncfn-ap-toast) :is(button, [type="button"], [type="submit"], [role="button"], select, label[for]) { touch-action: manipulation; }

/* Smooth, consistent state changes. */
:is(#ncfn-admin-panel-app, #ncfn-dashboard-app, #ncfn-login-app, #ncfn-admin-login-app, #ncfn-registration-app, #ncfn-guest-app, #ncfn-toasts, #ncfn-ap-toast) :is(button, a, [role="button"], input, select, textarea) {
	transition: background-color .15s ease, color .15s ease, border-color .15s ease, box-shadow .15s ease, opacity .15s ease, transform .15s ease;
}

/* Keyboard focus: a clear ring for keyboard users, none left behind after a mouse click. */
:is(#ncfn-admin-panel-app, #ncfn-dashboard-app, #ncfn-login-app, #ncfn-admin-login-app, #ncfn-registration-app, #ncfn-guest-app, #ncfn-toasts, #ncfn-ap-toast) :is(button, a, [role="button"], summary, [tabindex]:not([tabindex="-1"])):focus-visible { outline: 2px solid #F2600C; outline-offset: 2px; }
:is(#ncfn-admin-panel-app, #ncfn-dashboard-app, #ncfn-login-app, #ncfn-admin-login-app, #ncfn-registration-app, #ncfn-guest-app, #ncfn-toasts, #ncfn-ap-toast) :is(button, a, [role="button"]):focus:not(:focus-visible) { outline: none; }

/* Controls that carry no class of their own (menu items, "x" buttons, inline
   links): keep their text readable and let the theme's tint through nowhere.
   :where() keeps this at the lowest weight, so any screen rule can override it. */
:is(#ncfn-admin-panel-app, #ncfn-dashboard-app, #ncfn-login-app, #ncfn-admin-login-app, #ncfn-registration-app, #ncfn-guest-app, #ncfn-toasts, #ncfn-ap-toast) :is(button, [type="button"], [type="submit"]):where(:not([class])):is(:hover, :focus, :active) { color: var(--ncfn-text, #1F2937); text-decoration: none; box-shadow: none; }
:is(#ncfn-admin-panel-app, #ncfn-dashboard-app, #ncfn-login-app, #ncfn-admin-login-app, #ncfn-registration-app, #ncfn-guest-app, #ncfn-toasts, #ncfn-ap-toast) :is(button, [type="button"], [type="submit"]):where(:not([class])):where(:not([style])):is(:hover, :focus, :active) { background-color: transparent; }
:is(#ncfn-admin-panel-app, #ncfn-dashboard-app, #ncfn-login-app, #ncfn-admin-login-app, #ncfn-registration-app, #ncfn-guest-app, #ncfn-toasts, #ncfn-ap-toast) a:where(:not([class])):is(:hover, :focus) { text-decoration: underline; }

:is(#ncfn-admin-panel-app, #ncfn-dashboard-app, #ncfn-login-app, #ncfn-admin-login-app, #ncfn-registration-app, #ncfn-guest-app, #ncfn-toasts, #ncfn-ap-toast) :is(button, input, select, textarea):disabled { cursor: not-allowed; }

/* Form text. */
:is(#ncfn-admin-panel-app, #ncfn-dashboard-app, #ncfn-login-app, #ncfn-admin-login-app, #ncfn-registration-app, #ncfn-guest-app, #ncfn-toasts, #ncfn-ap-toast) ::placeholder { color: #9CA3AF; opacity: 1; }
:is(#ncfn-admin-panel-app, #ncfn-dashboard-app, #ncfn-login-app, #ncfn-admin-login-app, #ncfn-registration-app, #ncfn-guest-app, #ncfn-toasts, #ncfn-ap-toast) ::selection { background: rgba(242, 96, 12, .18); }

/* Quiet scrollbars. */
:is(#ncfn-admin-panel-app, #ncfn-dashboard-app, #ncfn-login-app, #ncfn-admin-login-app, #ncfn-registration-app, #ncfn-guest-app, #ncfn-toasts, #ncfn-ap-toast) * { scrollbar-width: thin; scrollbar-color: #CFCBD8 transparent; }
:is(#ncfn-admin-panel-app, #ncfn-dashboard-app, #ncfn-login-app, #ncfn-admin-login-app, #ncfn-registration-app, #ncfn-guest-app, #ncfn-toasts, #ncfn-ap-toast) ::-webkit-scrollbar { width: 8px; height: 8px; }
:is(#ncfn-admin-panel-app, #ncfn-dashboard-app, #ncfn-login-app, #ncfn-admin-login-app, #ncfn-registration-app, #ncfn-guest-app, #ncfn-toasts, #ncfn-ap-toast) ::-webkit-scrollbar-thumb { background: #CFCBD8; border-radius: 8px; }
:is(#ncfn-admin-panel-app, #ncfn-dashboard-app, #ncfn-login-app, #ncfn-admin-login-app, #ncfn-registration-app, #ncfn-guest-app, #ncfn-toasts, #ncfn-ap-toast) ::-webkit-scrollbar-thumb:hover { background: #B4AFC2; }
:is(#ncfn-admin-panel-app, #ncfn-dashboard-app, #ncfn-login-app, #ncfn-admin-login-app, #ncfn-registration-app, #ncfn-guest-app, #ncfn-toasts, #ncfn-ap-toast) ::-webkit-scrollbar-track { background: transparent; }

/* The Home page's side columns and the dashboard's left menu still scroll (wheel, trackpad, touch, keyboard) but show no bar.
   Written with an ID so it is at least as strong as the shared rules above (the earlier attempt lost to them). */
#ncfn-dashboard-app .ncfn-dash-col-sticky, #ncfn-dashboard-app .ncfn-dash-sidebar { scrollbar-width: none; -ms-overflow-style: none; }
#ncfn-dashboard-app .ncfn-dash-col-sticky::-webkit-scrollbar, #ncfn-dashboard-app .ncfn-dash-sidebar::-webkit-scrollbar { display: none; width: 0; height: 0; }

/* "Loading…" gets a spinner instead of bare text. */
@keyframes ncfn-ui-spin { to { transform: rotate(360deg); } }
:is(#ncfn-admin-panel-app, #ncfn-dashboard-app, #ncfn-login-app, #ncfn-admin-login-app, #ncfn-registration-app, #ncfn-guest-app, #ncfn-toasts, #ncfn-ap-toast) .ncfn-loading { display: flex; align-items: center; justify-content: center; gap: 10px; }
:is(#ncfn-admin-panel-app, #ncfn-dashboard-app, #ncfn-login-app, #ncfn-admin-login-app, #ncfn-registration-app, #ncfn-guest-app, #ncfn-toasts, #ncfn-ap-toast) .ncfn-loading::before { content: ''; width: 18px; height: 18px; flex-shrink: 0; border: 2px solid #E5E7EB; border-top-color: #F2600C; border-radius: 50%; animation: ncfn-ui-spin .7s linear infinite; }

/* Respect "reduce motion". */
@media (prefers-reduced-motion: reduce) {
	:is(#ncfn-admin-panel-app, #ncfn-dashboard-app, #ncfn-login-app, #ncfn-admin-login-app, #ncfn-registration-app, #ncfn-guest-app, #ncfn-toasts, #ncfn-ap-toast) * { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; scroll-behavior: auto !important; }
	:is(#ncfn-admin-panel-app, #ncfn-dashboard-app, #ncfn-login-app, #ncfn-admin-login-app, #ncfn-registration-app, #ncfn-guest-app, #ncfn-toasts, #ncfn-ap-toast) .ncfn-spinner { animation-duration: .7s !important; animation-iteration-count: infinite !important; }
}
