.stock-chooser{display:flex;align-items:center;gap:10px;margin:12px 0}.stock-chooser label{display:flex;align-items:center;gap:10px}.stock-chooser select,.stock-chooser input{padding:9px;min-width:220px;max-width:100%;font:inherit}.stock-scroll table{min-width:1000px}.stock-scroll thead{position:sticky;top:0;z-index:2}.stock-scroll th{position:static}.stock-scroll tfoot{font-weight:bold;background:#e1eadf}.stock-scroll td{white-space:nowrap}.stock-scroll td:first-child{white-space:normal;min-width:180px}.stock-dashboard{display:flex;flex-wrap:wrap;gap:15px;margin-top:18px}.stock-dashboard>div{padding:15px 22px;border:1px solid #ccd5ca;border-radius:18px;background:#f5f7f2;box-shadow:0 3px 12px #0001;font-weight:600}.stock-note{font-size:.9rem;color:#65582c}.price-dialog .stock-scroll table{min-width:0;width:100%}.price-dialog .stock-scroll input[type=checkbox]{width:22px;height:22px}.portal-user-field-wide .stock-chooser input{flex:1;min-width:0}
.stock-loading{min-height:360px;min-height:clamp(320px,55vh,650px);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;text-align:center;color:#16452f;overflow:hidden}.stock-loading>strong{font-size:1.1rem}.stock-loading>span{font-size:.9rem;color:#527364}.stock-loading-globe{width:200px;height:200px;position:relative;margin:25px 0 30px;border-radius:50%;border:1px solid #29b67a;background:radial-gradient(circle at 30% 25%,#174c47,#041c20 70%);box-shadow:inset -24px -12px 35px #0009,0 0 35px #21b78340;perspective:800px}.stock-loading-globe:after{content:'';position:absolute;inset:-20px;border:1px solid #319c7950;border-radius:50%;transform:rotate(-25deg) scaleY(.35);box-shadow:0 0 18px #35d29a30}.stock-loading-spin{position:absolute;inset:0;transform-style:preserve-3d;animation:stock-globe-turn 9s linear infinite}.stock-loading-meridian,.stock-loading-latitude{position:absolute;inset:0;border:1px solid #6df1bf99;border-radius:50%;box-sizing:border-box}.stock-loading-latitude{bottom:auto;right:auto}@keyframes stock-globe-turn{from{transform:rotateZ(-18deg) rotateY(0)}to{transform:rotateZ(-18deg) rotateY(360deg)}}@media(prefers-reduced-motion:reduce){.stock-loading-spin{animation:none;transform:rotateZ(-18deg) rotateY(25deg)}}
.stock-balance-table th,.stock-balance-table td{text-align:center!important}
.stock-balance-table .stock-numeric{text-align:right!important}
.stock-balance-table .stock-group-even{--stock-group-fill:#f0f7ed;--stock-import-fill:#ffd6d6}
.stock-balance-table .stock-group-odd{--stock-group-fill:#e4eefb;--stock-import-fill:#f2baba}
.stock-balance-table tbody tr{background:var(--stock-group-fill)!important}
.stock-balance-table tbody tr.stock-imported,.stock-balance-table tbody tr.stock-discrepancy{background:var(--stock-import-fill)!important}
.stock-balance-table tbody tr.stock-mismatch{background:repeating-linear-gradient(135deg,var(--stock-import-fill) 0 12px,#bce7ff 12px 24px)!important}
.stock-balance-table td:nth-last-child(-n+2){white-space:pre-wrap;min-width:180px;max-width:420px;overflow-wrap:anywhere}

.stock-balance-table tbody tr.stock-storage-missing{background:#b6dafa!important}

/* Keep product names and the expand button on one line in both balance views. */
.stock-balance-table tbody td:first-child{white-space:nowrap}

/* Virtual warehouse only; ordinary balances retain their layout and colors. */
.virtual-stock-table tbody tr.virtual-pink{background:#ffd9e5!important}
.virtual-stock-table tbody tr.virtual-ul{outline:1px solid #d32638!important;outline-offset:-1px}
.virtual-stock-table td:nth-last-child(-n+2){white-space:pre-wrap}
.virtual-stock-table td:nth-child(6){white-space:nowrap}
.virtual-coverage{position:sticky;bottom:0;z-index:20;display:flex;gap:16px;flex-wrap:wrap;padding:16px 0;background:#f1ead9}
.virtual-coverage-card{flex:1;min-width:240px;padding:20px 24px;border:1px solid #cad9d0;border-radius:20px;background:#f7faf6;box-shadow:0 6px 18px #0001;display:flex;flex-direction:column;gap:12px;color:#214b39;font-size:18px}
.virtual-coverage-card.warning{color:#bb6500}.virtual-coverage-card.danger{color:#cc2530}
.virtual-replenish{width:min(1400px,96vw)!important;max-width:96vw!important}
.virtual-replenish-actions{display:flex;gap:10px;margin-bottom:16px;flex-wrap:wrap}
.virtual-replenish select{min-width:170px;max-width:290px;padding:8px}.virtual-replenish input{padding:8px}.virtual-replenish input[type=number]{width:110px}
.virtual-replenish .virtual-remove{background:#d62c3b;color:white;border:0;width:36px;height:36px;font-size:29px;border-radius:5px;cursor:pointer}
.virtual-replenish .virtual-remove[hidden]{display:none}
.virtual-replenish-calendar .portal-calendar-grid>:nth-child(7n+6),.virtual-replenish-calendar .portal-calendar-grid>:nth-child(7n+7){color:#d22!important}
.virtual-order-toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);z-index:2800;max-width:90vw;background:#eff9ef;color:#174b28;padding:18px 26px;border:1px solid #7caf89;border-radius:14px;box-shadow:0 8px 30px #0003}

/* Color key shares the header with controls; it never overlays the table. */
.stock-page-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;margin-bottom:16px}
.stock-page-controls{flex:1 1 440px;min-width:0}
.stock-page-controls h1{margin-top:0}
.stock-page-controls .stock-chooser{flex-wrap:wrap;margin-bottom:0}
.stock-page-controls .stock-chooser label{flex-wrap:wrap;min-width:0}
.stock-page-controls .stock-chooser select{min-width:0;width:min(360px,100%)}
.stock-color-legend{flex:0 1 650px;box-sizing:border-box;max-width:100%;padding:14px 18px;border:1px solid #b9cbbd;border-radius:14px;background:#f8faf5;color:#243e30;font:14px/1.35 Arial,sans-serif}
.stock-color-legend>strong{display:block;margin-bottom:9px;font-size:15px}
.stock-color-legend ul{display:grid;gap:7px;list-style:none;padding:0;margin:0}
.stock-color-legend li{display:flex;align-items:center;gap:9px}
.stock-color-sample{display:inline-flex;align-items:center;justify-content:center;flex:0 0 32px;width:32px;height:20px;box-sizing:border-box;border:1px solid #94a698;border-radius:3px}
.stock-color-groups{background:linear-gradient(90deg,#f0f7ed 50%,#e4eefb 50%)}
.stock-color-storage{background:#b6dafa}
.stock-color-import{background:linear-gradient(90deg,#ffd6d6 50%,#f2baba 50%)}
.stock-color-mismatch{background:repeating-linear-gradient(135deg,#ffd6d6 0 6px,#bce7ff 6px 12px)}
.stock-color-correction{background:#f0f7ed;border:3px solid #ffc400}
.stock-color-weighted{background:#f0f7ed;color:#70449a;font-weight:bold}
@media(max-width:1050px){.stock-page-heading{flex-wrap:wrap;gap:16px}.stock-color-legend{flex-basis:100%}.stock-page-controls{flex-basis:100%}}
