/* P226 Exploded Parts Picker — shared stylesheet (all four assemblies).
   Ported 2026-08-01 from the standalone picker pages for embedding inside the
   Shopkeeper theme. Every rule is (a) prefixed mpa-pk- AND (b) nested under
   .mpa-picker, because prefixing alone stops our styles leaking out but only
   the rename stops the theme's own .row/.menu/.num rules leaking IN.
   The old global body/header/svg rules are gone by design — do not add any
   selector here that lacks the .mpa-picker ancestor. */

/* --mpa-accent is the site's heading blue (#022F5C, used in 23 rules sitewide).
   It is dark, so anything sitting ON it takes white text. --mpa-accent-d is a
   lighter blue for the diagram, because navy against the #3a4149 line art
   differs in hue but barely in darkness. Vars are prefixed because custom
   properties inherit — an unprefixed theme --accent would win inside us. */
.mpa-picker{
  --mpa-panel:#1c1f24;--mpa-panel2:#24282f;--mpa-line:#d8dbe0;
  --mpa-accent:#022f5c;--mpa-accent-d:#1a68c4;--mpa-ink:#14171c;
  --mpa-mut:#6b7280;--mpa-ok:#127c3a;--mpa-bad:#a1231d;
  font:15px/1.5 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  color:var(--mpa-ink);
}
.mpa-picker,.mpa-picker *,.mpa-picker *::before,.mpa-picker *::after{box-sizing:border-box}

/* crumb line (replaces the old fake breadcrumb; these are real links) */
.mpa-picker .mpa-pk-crumb{margin:0 0 10px;font-size:12.5px;color:var(--mpa-mut)}
.mpa-picker .mpa-pk-crumb a{color:#3a6ea8;text-decoration:none}
.mpa-picker .mpa-pk-crumb a:hover{text-decoration:underline}

.mpa-picker .mpa-pk-wrap{display:block;border:1px solid var(--mpa-line);
  border-radius:8px;overflow:hidden;background:#fff}
.mpa-picker .mpa-pk-diagram{position:relative;padding:6px;min-width:0}

/* toolbar */
.mpa-picker .mpa-pk-toolbar{display:flex;gap:12px;align-items:center;
  padding:6px 8px 10px;border-bottom:1px solid var(--mpa-line);flex-wrap:wrap}
.mpa-picker .mpa-pk-tblabel{font-size:12px;color:var(--mpa-mut);font-weight:600;
  text-transform:uppercase;letter-spacing:.4px;margin:0}
.mpa-picker .mpa-pk-seg{display:inline-flex;border:1px solid var(--mpa-line);
  border-radius:6px;overflow:hidden;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
.mpa-picker .mpa-pk-seg a{border:0;background:#fff;padding:6px 12px;font:inherit;
  font-size:13px;cursor:pointer;border-right:1px solid var(--mpa-line);
  color:var(--mpa-ink);text-decoration:none;white-space:nowrap}
.mpa-picker .mpa-pk-seg a:last-child{border-right:0}
.mpa-picker .mpa-pk-seg a[aria-current="page"]{background:var(--mpa-accent);
  color:#fff;font-weight:600;cursor:default}
.mpa-picker .mpa-pk-seg a:hover:not([aria-current="page"]){background:#f0f1f3}

/* the diagram svg — child combinator so this can never hit a theme icon.
   max-height keeps the WHOLE exploded view inside the viewport on desktop
   (drawing letterboxes horizontally when height-capped); picker.js manages
   touch-action (pan-y unzoomed so page scroll is never hijacked, none while
   zoomed so one-finger drag pans the diagram). */
.mpa-picker .mpa-pk-diagram > svg{width:100%;height:auto;display:block;
  max-height:clamp(420px, calc(100vh - 250px), 860px);touch-action:manipulation}

/* zoom controls (injected by picker.js) */
.mpa-picker .mpa-pk-zoomctl{position:absolute;right:12px;bottom:12px;display:flex;
  flex-direction:column;gap:6px;z-index:4}
.mpa-picker .mpa-pk-zoomctl button{width:34px;height:34px;border:1px solid var(--mpa-line);
  background:#fff;border-radius:6px;font-size:17px;font-weight:700;color:var(--mpa-ink);
  cursor:pointer;box-shadow:0 1px 4px rgba(0,0,0,.15);line-height:1;padding:0;
  /* themes commonly style bare button{} with uppercase/letter-spacing — a 2px
     letter-space shifts the + − ↺ glyphs off-centre in a 34px box */
  text-transform:none;letter-spacing:0;font-family:inherit}
.mpa-picker .mpa-pk-zoomctl button:hover{background:#f0f4f9}
@media (pointer:coarse){
  .mpa-picker .mpa-pk-zoomctl button{width:42px;height:42px;font-size:20px}
}
.mpa-picker .mpa-pk-diagram.is-zoomed > svg{cursor:grab}
.mpa-picker .mpa-pk-diagram.is-panning > svg{cursor:grabbing}

.mpa-picker .mpa-pk-part path{fill:none;stroke:#3a4149;stroke-width:.42;
  stroke-linecap:round;stroke-linejoin:round;
  transition:stroke .1s,stroke-width .1s;
  /* hit-test the implied fill area too, not just the 0.42-wide stroke */
  pointer-events:all}
.mpa-picker .mpa-pk-part{cursor:pointer}
/* invisible fat re-stroke of the same geometry = generous, shape-accurate click
   target. On hover/select the same band becomes a soft glow. */
.mpa-picker .mpa-pk-hit{pointer-events:stroke;cursor:pointer;
  transition:stroke .12s,stroke-opacity .12s}
.mpa-picker .mpa-pk-part:hover path{stroke:var(--mpa-accent-d);stroke-width:.85}
.mpa-picker .mpa-pk-part.is-sel path{stroke:var(--mpa-accent-d);stroke-width:1.05}
.mpa-picker .mpa-pk-part:focus-visible{outline:2px solid var(--mpa-accent-d);outline-offset:2px}
.mpa-picker .mpa-pk-part:focus-visible path{stroke:var(--mpa-accent-d);stroke-width:.85}

/* Note: the circled part numbers are drawn INTO the line art (paths inside
   each part group) — there is no separate callout layer to style or toggle. */

.mpa-picker .mpa-pk-tip{position:absolute;pointer-events:none;background:#1b2a47;
  color:#fff;font-size:12.5px;padding:4px 9px;border-radius:4px;white-space:nowrap;
  opacity:0;transition:opacity .1s;z-index:5}

/* sidebar — border/margin/padding zeroed because themes commonly style bare
   <aside> with element selectors the class rename can't defend against */
.mpa-picker .mpa-pk-menu{background:var(--mpa-panel);border:0;margin:0;padding:0}
.mpa-picker .mpa-pk-menuhead{margin:0;padding:12px 15px;font-size:11.5px;
  letter-spacing:1.2px;text-transform:uppercase;color:#9aa1ab;background:#15181c}
.mpa-picker .mpa-pk-row{border-bottom:1px solid #33383f}
.mpa-picker .mpa-pk-rowhead{display:flex;align-items:center;gap:9px;width:100%;
  border:0;background:var(--mpa-panel);color:#e8eaed;font:inherit;text-align:left;
  padding:10px 14px;cursor:pointer;border-radius:0;text-transform:none;letter-spacing:0}
.mpa-picker .mpa-pk-rowhead:hover{background:var(--mpa-panel2)}
.mpa-picker .mpa-pk-row.is-sel .mpa-pk-rowhead{background:var(--mpa-accent);color:#fff;font-weight:600}
.mpa-picker .mpa-pk-row.is-na .mpa-pk-rowhead{color:#7d848d}
.mpa-picker .mpa-pk-num{flex:0 0 21px;height:21px;border-radius:50%;display:grid;
  place-items:center;font-size:11px;font-weight:700;background:#3b4149;color:#cfd4da}
.mpa-picker .mpa-pk-row.is-sel .mpa-pk-num{background:#fff;color:var(--mpa-accent)}
.mpa-picker .mpa-pk-name{flex:1}
.mpa-picker .mpa-pk-count{font-size:11px;opacity:.7}
.mpa-picker .mpa-pk-panel{display:none;background:#fbfbfc}
.mpa-picker .mpa-pk-row.is-open .mpa-pk-panel{display:block}

.mpa-picker .mpa-pk-opt{display:grid;grid-template-columns:50px 1fr auto;gap:10px;
  align-items:center;padding:10px 14px;border-bottom:1px solid #eceef1}
.mpa-picker .mpa-pk-opt:last-child{border-bottom:0}
.mpa-picker .mpa-pk-opt img{width:50px;height:50px;object-fit:contain;background:#fff;
  border:1px solid var(--mpa-line);border-radius:4px;max-width:none}
.mpa-picker .mpa-pk-lab{font-size:12.5px;line-height:1.3;margin:0 0 2px;color:var(--mpa-ink)}
.mpa-picker .mpa-pk-price{font-size:14px;font-weight:700;color:var(--mpa-ink)}
.mpa-picker .mpa-pk-price del{font-weight:400;opacity:.6}
.mpa-picker .mpa-pk-price ins{text-decoration:none}
.mpa-picker .mpa-pk-stock{font-size:11px;font-weight:600}
.mpa-picker .mpa-pk-stock.is-in{color:var(--mpa-ok)}
.mpa-picker .mpa-pk-stock.is-out{color:var(--mpa-bad)}
.mpa-picker .mpa-pk-view{display:block;font-size:11px;margin-top:3px;
  color:#3a6ea8;text-decoration:none}
.mpa-picker .mpa-pk-view:hover{text-decoration:underline}

/* Add to Cart — now a real WooCommerce AJAX anchor (or variant states).
   Woo's add-to-cart.js toggles .loading/.added and appends an .added_to_cart
   "View cart" link; those states are styled here, no picker JS involved. */
.mpa-picker .mpa-pk-atc{display:inline-block;border:0;background:var(--mpa-accent);
  color:#fff;font:inherit;font-weight:700;font-size:11.5px;letter-spacing:.4px;
  padding:8px 11px;border-radius:4px;cursor:pointer;text-transform:uppercase;
  white-space:nowrap;text-decoration:none;text-align:center}
.mpa-picker a.mpa-pk-atc:hover{filter:brightness(1.18);color:#fff;text-decoration:none}
.mpa-picker .mpa-pk-atc.loading{opacity:.55;pointer-events:none}
.mpa-picker .mpa-pk-atc.added{background:var(--mpa-ok)}
.mpa-picker .mpa-pk-atc.added::after{content:" \2713"}
.mpa-picker .mpa-pk-atc--options{background:#fff;color:var(--mpa-accent);
  border:1px solid var(--mpa-accent)}
.mpa-picker a.mpa-pk-atc--options:hover{background:#f0f4f9;color:var(--mpa-accent);filter:none}
.mpa-picker .mpa-pk-atc.is-soldout{background:#d6d9de;color:#8b9199;cursor:not-allowed}
.mpa-picker .added_to_cart{display:block;font-size:11px;margin-top:4px;
  color:#3a6ea8;text-decoration:none;text-align:center}
.mpa-picker .added_to_cart:hover{text-decoration:underline}

.mpa-picker .mpa-pk-nastub{padding:11px 14px;font-size:12.5px;color:#8b9199}
.mpa-picker .mpa-pk-hint{margin:12px 0 0;font-size:12.5px;color:var(--mpa-mut)}

/* screen-reader-only live region */
.mpa-picker .mpa-pk-visually-hidden{position:absolute;width:1px;height:1px;
  margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

/* desktop: diagram and list side by side. min-width:0 lets flex shrink below
   content size — the old min-width:480px is what overflowed phones. */
@media (min-width:901px){
  .mpa-picker .mpa-pk-wrap{display:flex;flex-wrap:wrap;align-items:stretch}
  .mpa-picker .mpa-pk-diagram{flex:1 1 620px}
  .mpa-picker .mpa-pk-menu{flex:0 0 380px;max-height:82vh;overflow-y:auto;
    overscroll-behavior:contain}
}

/* narrow phones: stack the option grid so price/button never crowd off-canvas */
@media (max-width:480px){
  .mpa-picker .mpa-pk-opt{grid-template-columns:50px 1fr}
  .mpa-picker .mpa-pk-atc{grid-column:2;justify-self:start;margin-top:6px}
}
