/* partloc — styles owned by mod/partloc.js (the shelf picker and the
   browse-by-location tree), mod/parts.js (the shelf code on a part, the
   "Stored at" line) and mod/admin/partloc.js (Admin -> Part storage).
   A shelf code is always mono text — never a colour on its own. */

/* ---- the shelf code on a part row ---- */
.pill.loc{font-family:var(--mono); letter-spacing:.04em; color:var(--text); cursor:pointer;}
.pill.loc:hover{border-color:var(--accent-line); color:var(--accent);}

/* ---- the picker: type to search, pick a row, the choice becomes a chip ---- */
.locpick{margin-top:4px;}
.locpick input{margin-top:0;}
.locpick-results{max-height:200px; overflow-y:auto; border:1px solid var(--line); border-radius:var(--r-sm); margin-top:6px;}
.locpick-results:empty{display:none;}
.locrow{display:flex; gap:10px; align-items:center; padding:8px 10px; border-bottom:1px solid var(--line); cursor:pointer;}
.locrow:last-child{border-bottom:0;}
.locrow:hover{background:var(--panel);}
.locrow .code, .locchip .code{font-family:var(--mono); font-weight:700; min-width:64px;}
.locrow .lbl, .locchip .lbl{flex:1; min-width:0; font-size:13px; color:var(--muted);
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
.locrow .n{font-family:var(--mono); font-size:12px; color:var(--muted); white-space:nowrap;}
.locchip{display:flex; align-items:center; gap:10px; padding:8px 8px 8px 12px; margin-top:6px;
  border:1px solid var(--accent-line); background:var(--accent-dim); border-radius:var(--r-sm);}
.locchip:empty{display:none;}
.locchip button.x{width:auto; min-height:28px; padding:2px 9px; font-size:14px; line-height:1;
  border-radius:var(--r-pill); color:var(--muted);}
.locpick p.permnote{padding:8px 10px; margin:0;}

/* ---- the part-number field with its Generate button ---- */
.numrow{display:flex; gap:8px; align-items:stretch;}
.numrow input{flex:1; min-width:0; margin-top:0;}
.numrow button{width:auto; white-space:nowrap; flex:none;}

/* ---- "Stored at" on the part detail ---- */
.stored{display:flex; align-items:center; gap:10px; flex-wrap:wrap; padding:10px 12px; margin:0 0 12px;
  border:1px solid var(--line); border-radius:var(--r-sm); font-size:13.5px; line-height:1.4;}
.stored b{font-family:var(--mono);}
.stored button{width:auto; margin-left:auto;}

/* ---- browse by location ---- */
.browsebar{display:flex; gap:8px; margin-top:8px; flex-wrap:wrap;}
.browsebar button{width:auto;}
.loctree{border:1px solid var(--line); border-radius:var(--r-md); padding:2px 12px; margin:10px 0 0;}
.loctree details{border-bottom:1px solid var(--line);}
.loctree details:last-child{border-bottom:0;}
.loctree summary{cursor:pointer; padding:9px 0; list-style:none; display:flex; align-items:center; gap:8px; min-height:36px;}
.loctree summary::-webkit-details-marker{display:none;}
.loctree summary::before{content:'▸'; color:var(--muted); width:12px; flex:none;}
.loctree details[open] > summary::before{content:'▾';}
.loctree summary b{font-weight:600;}
.loctree summary .code{font-family:var(--mono); color:var(--muted); font-size:12px;}
.loctree summary .n{margin-left:auto; font-family:var(--mono); font-size:12px; color:var(--muted); white-space:nowrap;}
.loctree .lvl{padding-left:16px;}
.loctree .lvl details{border-bottom:0;}
.loctree button.shelf{display:flex; width:100%; align-items:center; gap:8px; text-align:left; background:transparent;
  border:1px solid transparent; border-radius:var(--r-sm); padding:6px 8px; min-height:36px; font-size:13.5px;}
.loctree button.shelf:hover{background:var(--panel);}
.loctree button.shelf .code{font-family:var(--mono); font-weight:700;}
.loctree button.shelf .lbl{color:var(--muted); font-size:12.5px;}
.loctree button.shelf .n{margin-left:auto; font-family:var(--mono); font-size:12px; color:var(--muted); white-space:nowrap;}
.loctree button.shelf.on{border-color:var(--accent); background:var(--accent-dim);}
.loctree button.shelf.on .lbl::after{content:' · showing';}
.shelfline{display:flex; align-items:center; gap:10px; margin:10px 0 0; padding:8px 12px; font-size:13px;
  border:1px solid var(--accent-line); background:var(--accent-dim); border-radius:var(--r-sm);}
.shelfline b{font-family:var(--mono);}
.shelfline .lbl{flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
.shelfline button{width:auto; margin-left:auto; min-height:28px; padding:2px 9px; font-size:14px; line-height:1;
  border-radius:var(--r-pill);}

/* ---- Admin -> Part storage ---- */
.pl-wrap{overflow-x:auto;}
.pl-table{width:100%; border-collapse:collapse; font-size:13px; margin-top:6px;}
.pl-table th{text-align:left; color:var(--muted); font-weight:600; font-size:11.5px; text-transform:uppercase;
  letter-spacing:.06em; padding:6px 8px 6px 0; border-bottom:1px solid var(--line); white-space:nowrap;}
.pl-table td{padding:8px 8px 8px 0; border-bottom:1px solid var(--line); vertical-align:middle;}
.pl-table td.code{font-family:var(--mono); font-weight:700; white-space:nowrap;}
.pl-table td.n{font-family:var(--mono); text-align:right;}
.pl-table td.note{color:var(--muted); max-width:220px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
.pl-table tr.off td{opacity:.55;}
.pl-table tr.off td.code::after{content:' · off'; font-weight:400; color:var(--muted);}
.pl-table td.acts{white-space:nowrap; text-align:right;}
.pl-table td.acts button{width:auto; margin-left:4px;}
.pl-preview{font-family:var(--mono); font-size:13px; margin:10px 0 0; padding:8px 10px;
  border:1px dashed var(--line); border-radius:var(--r-sm); line-height:1.5;}
.pl-preview b{color:var(--accent);}
.pl-preview.err{border-color:var(--bad); color:var(--bad);}
.pl-run{display:grid; grid-template-columns:1fr 1fr; gap:0 12px;}
.pl-run label{margin-top:12px;}
