/* Customer portal. */
.wrap.narrow { max-width: 760px; }
.err { background: var(--attention-bg); border-left: 4px solid var(--attention); padding: 11px 14px; margin: 0 0 16px; font-size: 14.5px; }
.pnav { display: flex; flex-wrap: wrap; gap: 4px; margin: 0 0 24px; border-bottom: 2px solid var(--navy); }
.pnav a { padding: 11px 16px; text-decoration: none; color: var(--ink-soft); font-weight: 500; font-size: 14.5px; border-bottom: 3px solid transparent; margin-bottom: -2px; }
.pnav a.on { color: var(--navy); border-bottom-color: var(--navy); }
.mgrid { display: grid; grid-template-columns: repeat(auto-fill, minmax(290px, 1fr)); gap: 16px; }
.mcard { background: var(--card); border: 1px solid var(--rule); border-top: 4px solid var(--navy); padding: 18px; }
.mcard-serial { font: 500 22px/1.1 'IBM Plex Mono', monospace; margin: 0 0 3px; }
.mcard-model { font: 400 15px/1.4 'IBM Plex Serif', Georgia, serif; color: var(--ink-soft); margin: 0 0 14px; }
.mcard-meta { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; margin: 0 0 16px; }
.mcard-meta dt { font-size: 12px; color: var(--ink-soft); } .mcard-meta dd { margin: 2px 0 0; font-size: 14px; font-weight: 500; }
.mcard-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.btn-sm.ghost { border-color: var(--rule); color: var(--ink-soft); }
.inline-add { display: grid; grid-template-columns: 1fr 1fr auto; gap: 10px; align-items: end; margin-top: 10px; }
.inline-add select, .inline-add input { min-height: 44px; padding: 10px 12px; border: 1px solid var(--rule); font: 400 15px/1.3 'IBM Plex Sans', sans-serif; }
.filters { display: grid; grid-template-columns: 2fr 1fr 1fr 1fr auto; gap: 10px; margin: 0 0 14px; }
.filters input, .filters select { min-height: 44px; padding: 10px 12px; border: 1px solid var(--rule); font: 400 15px/1.3 'IBM Plex Sans', sans-serif; background: var(--card); }
.pgrid { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 14px; }
.pcard { background: var(--card); border: 1px solid var(--rule); padding: 12px; display: flex; flex-direction: column; }
.pimg { aspect-ratio: 4/3; background: #EEF1F5; display: flex; align-items: center; justify-content: center; margin-bottom: 10px; overflow: hidden; position: relative; }
.pimg img { width: 100%; height: 100%; object-fit: contain; }
.pimg .noimg-txt { display: none; font-size: 13px; color: var(--ink-soft); }
.pimg.noimg img { display: none; } .pimg.noimg .noimg-txt { display: block; }
.psku { font: 500 13px/1 'IBM Plex Mono', monospace; color: var(--navy); margin: 0 0 5px; }
.ptitle { font-size: 15px; font-weight: 500; margin: 0 0 5px; line-height: 1.3; }
.pdesc { font-size: 13px; color: var(--ink-soft); margin: 0 0 8px; line-height: 1.45; flex: 1; }
.pmeta { font-size: 12px; color: var(--ink-soft); margin: 0 0 10px; }
.pcard form { display: flex; gap: 8px; }
.pqty { width: 64px; min-height: 36px; padding: 6px 8px; border: 1px solid var(--rule); font: 500 14px/1 'IBM Plex Mono', monospace; }
.urg label { grid-column: 1 / -1; }
@media (max-width: 760px) { .filters { grid-template-columns: 1fr 1fr; } .inline-add { grid-template-columns: 1fr; } .mcard-meta { grid-template-columns: 1fr 1fr; } }
/* Registration and sign-in are one-shot forms; no sticky bar. */
.wrap.narrow .bar { position: static; margin: 22px 0 0; }
.mrow { margin-bottom: 10px; }
.mrow select, .mrow input { min-height: 44px; padding: 10px 12px; border: 1px solid var(--rule); font: 400 15px/1.3 'IBM Plex Sans', sans-serif; background: var(--card); width: 100%; }
