/* CTR SUITE | Unified neutral input & search focus v2 — 2026-10-19.
 * Standard: Karyawan & Akses search (#memberSearch).
 * A single visible border; no purple/blue glow when clicked/tapped.
 * Covers interactive search shells AND their nested input fields.
 * Never affects focus on buttons, toggles, checkboxes, or radio controls.
 */
:root { --ctr-search-neutral-border: var(--border, #dce4ef); }

/* One neutral input surface. Do not erase invalid/validation decorations. */
html body :is(.main,.modal,.m-modal,.pb-modal,.pmx-modal,dialog,[role="dialog"])
:is(input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="file"]):not([type="color"]):not([type="hidden"]):not([type="button"]):not([type="submit"]):not([type="reset"]):not(.posx-input),select,textarea):focus {
  outline:none!important;
  outline-offset:0!important;
  box-shadow:none!important;
}
html body :is(.main,.modal,.m-modal,.pb-modal,.pmx-modal,dialog,[role="dialog"])
:is(input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="file"]):not([type="color"]):not([type="hidden"]):not([type="button"]):not([type="submit"]):not([type="reset"]):not(.posx-input),select,textarea):focus:not([aria-invalid="true"]):not(.is-invalid) {
  border-color:var(--ctr-search-neutral-border)!important;
}
/* Wrapper owns the SINGLE border on search components across modules. */
html body .app .main :is(
  .global-search-shell,.search-box,.product-search,.pmx-search,
  .search-box-sales,.fb-search,.customer-search,.rh-search,
  .ctr-promo-search,.member-search
):focus-within {
  box-shadow:none!important;
  outline:none!important;
  border-color:var(--ctr-search-neutral-border)!important;
}
/* Explicit overrides for high-specificity rules loaded AFTER shared includes. */
html body .app .main .topbar .global-search-shell.global-search-shell:focus-within,
html body .app .main .pmx-page .pmx-toolbar .pmx-search.pmx-search:focus-within,
html body.ctr-sales-page .app .main .sales-modern-page .sales-toolbar .search-box-sales.search-box-sales:focus-within,
html body.ctr-bon-page .app .main .bon-modern-page .related-bon-filters .fb-search.fb-search:focus-within,
html body.ctr-customers-page .app .main .customer-page .related-onecard label.customer-search-header.customer-search-header:focus-within,
html body.ctr-kasbon-page .app .main .fb-search.fb-search:focus-within,
html body.closing-history-page .app .main .rh-search.rh-search:focus-within {
  outline:none!important;
  border-color:var(--ctr-search-neutral-border)!important;
  box-shadow:none!important;
}
/* Nested border-rings are the source of the double-frame bug in Products,
 * Sales, POS, Bon, Customers and the topbar command search. */
html body .app .main :is(
 .global-search-shell,.search-box,.product-search,.pmx-search,
 .search-box-sales,.fb-search,.customer-search,.rh-search,.ctr-promo-search
) > input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]):is(:focus,:focus-visible),
html body .app .main :is(
 .global-search-shell,.search-box,.product-search,.pmx-search,
 .search-box-sales,.fb-search,.customer-search,.rh-search,.ctr-promo-search
) > input:not([type="checkbox"]):not([type="radio"]) {
  border:0!important;
  outline:0!important;
  box-shadow:none!important;
  background:transparent!important;
  background-image:none!important;
  min-width:0;
}
/* Target id selectors defeat high-specificity page inline styles. */
html body .app .main :is(#pmxSearch,#productSearch,#globalSearchInput,#bonSearchInput,#customerSearch,#rhSearch,#kasbonSearchInput):is(:focus,:focus-visible),
html body.ctr-bon-page .app .main .bon-modern-page .related-bon-filters .fb-search #bonSearchInput:is(:focus,:focus-visible),
html body.ctr-customers-page .app .main .customer-page .related-onecard label.customer-search-header #customerSearch:is(:focus,:focus-visible) {
  border:0!important;
  outline:0!important;
  box-shadow:none!important;
  background:transparent!important;
  background-image:none!important;
}
/* The Karyawan & Akses field owns its border (no border on .member-search). */
html body .app .main .member-search #memberSearch:is(:focus,:focus-visible),
html body .app .main #itemSearch:is(:focus,:focus-visible) {
  outline:0!important;
  box-shadow:none!important;
  border-color:var(--ctr-search-neutral-border)!important;
}
/* Accessibility: keyboard-only restrained, solid outline. No glow/ring shadow.
 * Pointer/touch clicks stay neutral, matching the reference screenshot. */
html[data-ctr-input-modality="keyboard"] body .app .main :is(
 .global-search-shell,.search-box,.product-search,.pmx-search,
 .search-box-sales,.fb-search,.customer-search,.rh-search,.ctr-promo-search
):focus-within {
  outline:2px solid #879fbf!important;
  outline-offset:2px!important;
  box-shadow:none!important;
}
/* The page-inline overrides for Bon, Pelanggan, Sales and Products are
 * unusually specific; keep a quiet KEYBOARD focus outline there too. */
html[data-ctr-input-modality="keyboard"] body.ctr-bon-page .app .main .bon-modern-page .related-bon-filters .fb-search.fb-search:focus-within,
html[data-ctr-input-modality="keyboard"] body.ctr-customers-page .app .main .customer-page .related-onecard label.customer-search-header.customer-search-header:focus-within,
html[data-ctr-input-modality="keyboard"] body.ctr-sales-page .app .main .sales-modern-page .sales-toolbar .search-box-sales.search-box-sales:focus-within,
html[data-ctr-input-modality="keyboard"] body .app .main .pmx-page .pmx-toolbar .pmx-search.pmx-search:focus-within,
html[data-ctr-input-modality="keyboard"] body.closing-history-page .app .main .rh-search.rh-search:focus-within,
html[data-ctr-input-modality="keyboard"] body.ctr-kasbon-page .app .main .fb-search.fb-search:focus-within {
  outline:2px solid #879fbf!important;
  outline-offset:2px!important;
  box-shadow:none!important;
}
html[data-ctr-input-modality="keyboard"] body
:is(.main,.modal,.m-modal,.pb-modal,.pmx-modal,dialog,[role="dialog"])
:is(input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="file"]):not([type="hidden"]),select,textarea):focus-visible {
  box-shadow:none!important;
}
html[data-ctr-input-modality="keyboard"] body .app .main :is(
 .member-search #memberSearch,#itemSearch
):focus-visible {
  outline:2px solid #879fbf!important;
  outline-offset:2px!important;
}
/* High-contrast users must still see which field receives keyboard focus. */
@media(forced-colors:active){
 html body :is(.main,.modal,.m-modal,.pb-modal,.pmx-modal,dialog,[role="dialog"])
 :is(input,select,textarea):focus-visible {outline:2px solid Highlight!important;outline-offset:2px!important}
 html body .app .main :is(.global-search-shell,.search-box,.product-search,.pmx-search,.search-box-sales,.fb-search,.customer-search,.rh-search,.ctr-promo-search):focus-within {outline:2px solid Highlight!important}
}
