[.dsh-run\wldrs\stock\plat\warehouse.css | 第 1-115 行 / 共 115 行 | 8938 字节]
.warehouse-body {
  min-height:100vh;
  background:radial-gradient(circle at 82% -8%,rgba(64,126,194,.18),transparent 33%),#07101f;
}
.warehouse-shell { width:min(1580px,96vw); margin:auto; padding:22px 0 70px; }
.warehouse-heading { min-height:105px; display:flex; align-items:center; justify-content:space-between; gap:30px; padding:20px 27px; border:1px solid rgba(255,255,255,.1); border-radius:20px; background:radial-gradient(circle at 90% 0%,rgba(88,158,229,.17),transparent 40%),linear-gradient(145deg,rgba(255,255,255,.07),rgba(255,255,255,.025)); }
.warehouse-heading h1 { margin:0; font-size:35px; }
.warehouse-heading > div > p:last-child { margin:7px 0 0; color:#91a6bc; font-size:13px; }
.back-button,.notice-card a,.search-row button,.admin-actions button,.export-button { display:inline-flex; align-items:center; justify-content:center; padding:10px 15px; border:1px solid rgba(255,255,255,.14); border-radius:11px; color:#d0e4f7; background:rgba(255,255,255,.055); cursor:pointer; font:inherit; font-size:12px; text-decoration:none; }
.search-row button:hover,.admin-actions button:hover,.export-button:hover,.back-button:hover { border-color:rgba(142,199,255,.45); background:rgba(109,166,224,.10); }
.danger-button { border-color:rgba(234,112,112,.38)!important; color:#ffc1c1!important; }
.hidden { display:none!important; }
.notice-card,.status-card,.search-panel,.admin-panel,.result-panel { margin-top:13px; border:1px solid rgba(255,255,255,.09); border-radius:16px; background:rgba(255,255,255,.033); }
.notice-card { display:flex; align-items:center; justify-content:space-between; gap:20px; padding:18px 20px; }
.notice-card p { margin:5px 0 0; color:#899db1; font-size:12px; }
.status-card { min-height:76px; display:flex; align-items:center; gap:15px; padding:15px 19px; }
.status-dot { width:11px; height:11px; flex:0 0 auto; border-radius:50%; }
.status-dot.unknown { background:#899bac; }
.status-dot.missing { background:#e4bb68; box-shadow:0 0 13px rgba(228,187,104,.34); }
.status-dot.ready { background:#6ed79b; box-shadow:0 0 13px rgba(110,215,155,.35); }
.small-label { display:block; color:#73889e; font-size:9px; letter-spacing:.11em; }
.status-card strong,.admin-panel strong { display:block; margin-top:3px; font-size:14px; }
.status-card p,.admin-panel p { margin:4px 0 0; color:#8397ab; font-size:11px; }
.search-panel { padding:19px; }
.search-panel label { display:block; margin-bottom:9px; font-size:13px; font-weight:650; }
.search-row { display:flex; gap:8px; }
.search-row input { flex:1; min-width:0; padding:12px 13px; border:1px solid rgba(255,255,255,.11); border-radius:11px; outline:none; color:#edf6ff; background:rgba(4,11,21,.46); font:inherit; }
.search-row input:focus { border-color:rgba(142,199,255,.48); }
.search-panel > p { margin:9px 0 0; color:#71869b; font-size:10px; }
.admin-panel { display:grid; grid-template-columns:minmax(240px,1fr) auto; gap:14px 22px; align-items:center; padding:17px 19px; border-color:rgba(218,179,102,.15); }
.admin-actions { display:flex; align-items:center; justify-content:flex-end; gap:8px; flex-wrap:wrap; }
.admin-actions input { max-width:260px; color:#9fb2c5; font-size:11px; }
.admin-message { grid-column:1/-1; min-height:17px; text-align:right; }
.admin-message.error { color:#ff9f9f; }
.result-panel { overflow:hidden; }
.result-head { display:flex; align-items:flex-end; justify-content:space-between; gap:20px; padding:19px 21px; border-bottom:1px solid rgba(255,255,255,.08); }
.result-head h2 { margin:0; font-size:25px; }
.result-head > span,.table-actions > span { color:#7d92a7; font-size:11px; }
.result-head p:not(.eyebrow) { margin:5px 0 0; color:#758a9f; font-size:11px; }
.compact-result .table-wrap { max-height:320px; }
.table-wrap { overflow:auto; }
table { width:100%; border-collapse:separate; border-spacing:0; }
th { padding:11px 13px; color:#95abc0; background:#0d1a2a; border-right:1px solid rgba(255,255,255,.055); border-bottom:1px solid rgba(255,255,255,.09); text-align:center; font-size:10px; font-weight:600; }
td { padding:10px 11px; border-right:1px solid rgba(255,255,255,.045); border-bottom:1px solid rgba(255,255,255,.055); color:#c9d8e7; font-size:12px; text-align:center; }
tr:hover td { background:rgba(109,166,224,.035); }
.item-name { color:#edf5fd; font-weight:600; }
.number-cell { width:90px; color:#b8d8f5; }
.empty-state { padding:34px 20px; color:#71869a; text-align:center; font-size:12px; }
.search-table { min-width:560px; }
.table-toolbar { align-items:center; }
.table-actions { display:flex; align-items:center; gap:12px; }
.matrix-wrap { overflow:auto; max-height:72vh; border-top:0; }
.warehouse-matrix { min-width:2480px; }
.warehouse-matrix thead th { position:sticky; top:0; z-index:4; background:#0d1a2a; }
.warehouse-matrix thead tr:nth-child(2) th { top:37px; z-index:5; background:#102033; }
.warehouse-matrix th:first-child,.warehouse-matrix td:first-child { position:sticky; left:0; z-index:3; background:#0c1928; }
.warehouse-matrix thead th:first-child { z-index:7; }
.matrix-number { width:74px; color:#b8d8f5; font-weight:700; }
.editable-cell { min-width:112px; cursor:text; background:rgba(255,255,255,.012); }
.editable-cell:hover { background:rgba(105,169,234,.11)!important; box-shadow:inset 0 0 0 1px rgba(132,193,255,.27); }
.cell-editor { width:100%; min-width:92px; padding:7px 8px; border:1px solid rgba(112,184,255,.72); border-radius:7px; outline:none; background:#071321; color:#f0f7ff; font:inherit; text-align:center; }
.row-action-cell { width:72px; }
.row-delete-button { padding:6px 9px; border:1px solid rgba(230,108,108,.3); border-radius:8px; background:rgba(150,44,44,.12); color:#ffb0b0; cursor:pointer; }
.drag-over { border-color:rgba(112,184,255,.58); box-shadow:0 0 0 3px rgba(75,154,232,.13); }
.empty-table { min-height:120px; }
@media(max-width:760px) {
  .warehouse-shell { width:94vw; }
  .warehouse-heading { align-items:flex-start; flex-direction:column; }
  .back-button { width:100%; }
  .admin-panel { grid-template-columns:1fr; }
  .admin-actions { align-items:stretch; flex-direction:column; }
  .admin-actions input { max-width:none; width:100%; }
  .admin-message { text-align:left; }
  .result-head { align-items:flex-start; flex-direction:column; }
  .table-actions { width:100%; justify-content:space-between; }
}

/* ---- 余量列 / 徽标（stock 账本 2026-09-23） ---- */
.stock-cell { white-space:nowrap; font-variant-numeric:tabular-nums; }
.stock-badge { display:inline-block; margin-left:6px; padding:0 6px; border-radius:10px; font-size:11px; line-height:16px;
  background:#eef2f7; color:#334155; border:1px solid #d7dfe9; font-variant-numeric:tabular-nums; }
.stock-badge.stock-ok { background:#e7f6ec; border-color:#bfe3cb; color:#0f5132; }
.stock-badge.stock-empty { background:#f4f5f7; border-color:#e0e3e8; color:#6b7280; }
.stock-badge.stock-missing { background:#fff4e5; border-color:#ffd9a8; color:#8a4b00; }
.stock-badge.stock-blocked, .stock-badge.stock-unreadable { background:#fdeaea; border-color:#f5c2c2; color:#a12626; }
.stock-badge.stock-protocol-fault { background:#f4e8ff; border-color:#d9b8ff; color:#5b21b6; font-weight:600; }
.stock-badge.stock-unscanned, .stock-badge.stock-out-of-scope { background:#f7f8fa; border-color:#e5e7eb; color:#9ca3af; }
.stock-cell.stock-ok { color:#0f5132; font-weight:600; }
.stock-cell.stock-empty, .stock-cell.stock-unscanned { color:#9ca3af; }
.stock-cell.stock-missing { color:#8a4b00; }
.stock-cell.stock-blocked, .stock-cell.stock-unreadable { color:#a12626; }
.stock-cell.stock-protocol-fault { color:#5b21b6; font-weight:600; }
.stock-freshness { margin:6px 0 0; font-size:12px; color:#5b6472; }
.stock-freshness::before { content:'●'; margin-right:6px; color:#22a06b; }

/* ---- 机器人状态卡片 / 盘点按钮 / 满载徽标（Slice 1 收尾 2026-09-23） ---- */
.robot-card { align-items:flex-start; }
.robot-copy { display:flex; flex-direction:column; gap:6px; width:100%; }
.robot-status { display:grid; grid-template-columns:repeat(auto-fit,minmax(240px,1fr)); gap:2px 14px; margin-top:4px; }
.robot-row { display:flex; justify-content:space-between; gap:10px; font-size:13px; border-bottom:1px dashed #e6e9ee; padding:2px 0; }
.robot-label { color:#6b7280; }
.robot-row strong { font-weight:600; color:#1f2937; font-variant-numeric:tabular-nums; }
.robot-warn { color:#a12626; }
.robot-actions { display:flex; gap:8px; margin-top:8px; flex-wrap:wrap; }
.robot-actions button[disabled] { opacity:.55; cursor:not-allowed; }
.robot-hint { margin:4px 0 0; font-size:12px; color:#6b7280; }
/* 满载：数值是容器上限，不是真实存量 */
.stock-cell.stock-ok[title*="满载"] { color:#8a4b00; }

/* ---- 盘点按钮状态（2026-09-23） ---- */
.scan-state { font-size:12px; color:#5b6472; align-self:center; }
.scan-state.running { color:#1d4ed8; }
.scan-state.done { color:#0f5132; }
.scan-state.failed { color:#a12626; }

/* ---- 通用 27 格取货机器人（2026-10-01） ---- */
.pickup-panel { margin-top:13px; padding:18px 19px; border:1px solid rgba(119,173,228,.18); border-radius:16px; background:linear-gradient(145deg,rgba(33,73,112,.18),rgba(255,255,255,.025)); }
.pickup-head,.pickup-subhead { display:flex; align-items:center; justify-content:space-between; gap:12px; }
.pickup-head strong { display:block; margin-top:3px; font-size:17px; }
.pickup-head p,.pickup-help,.pickup-warning { margin:5px 0 0; color:#8297ab; font-size:11px; line-height:1.7; }
.pickup-badge { padding:5px 10px; border:1px solid rgba(255,255,255,.14); border-radius:999px; font-size:10px; font-weight:700; letter-spacing:.06em; color:#9fb2c5; background:rgba(255,255,255,.04); }
.pickup-badge.running,.pickup-badge.cleaning-failure { color:#9dcbff; border-color:rgba(82,156,232,.42); background:rgba(65,130,198,.12); }
.pickup-badge.done { color:#89e3ad; border-color:rgba(81,190,123,.38); background:rgba(60,166,102,.10); }
.pickup-badge.failed,.pickup-badge.paused-damage,.pickup-badge.frozen-disconnect,.pickup-badge.paused-manual { color:#ffb0b0; border-color:rgba(230,108,108,.38); background:rgba(150,44,44,.12); }
.pickup-grid { display:grid; grid-template-columns:minmax(0,1.08fr) minmax(360px,.92fr); gap:13px; margin-top:15px; }
.pickup-config-card,.pickup-live-card { min-width:0; padding:14px; border:1px solid rgba(255,255,255,.08); border-radius:13px; background:rgba(4,11,21,.30); }
.pickup-subhead strong { font-size:13px; }
.pickup-subhead span { color:#70869b; font-size:10px; }
.pickup-subhead button,.pickup-actions button { padding:8px 11px; border:1px solid rgba(255,255,255,.14); border-radius:9px; color:#d0e4f7; background:rgba(255,255,255,.055); cursor:pointer; font:inherit; font-size:11px; }
.pickup-subhead button:hover,.pickup-actions button:hover { border-color:rgba(142,199,255,.45); background:rgba(109,166,224,.10); }
.pickup-actions button[disabled],.pickup-subhead button[disabled] { opacity:.5; cursor:not-allowed; }
.pickup-actions .pickup-primary { border-color:rgba(84,174,255,.44); background:rgba(54,126,198,.17); }
.pickup-actions .pickup-danger { border-color:rgba(230,108,108,.38); color:#ffb0b0; background:rgba(150,44,44,.10); }
#pickupConfigEditor { box-sizing:border-box; width:100%; min-height:300px; margin-top:10px; padding:12px; resize:vertical; border:1px solid rgba(255,255,255,.11); border-radius:10px; outline:none; background:#071321; color:#d8e8f7; font:12px/1.55 ui-monospace,SFMono-Regular,Consolas,monospace; tab-size:2; }
#pickupConfigEditor:focus { border-color:rgba(112,184,255,.55); }
.pickup-actions { display:flex; flex-wrap:wrap; gap:7px; margin-top:11px; }
.pickup-message { min-height:17px; margin:8px 0 0; color:#8aa0b5; font-size:11px; }
.pickup-message.error { color:#ff9f9f; }
.pickup-console { box-sizing:border-box; min-height:155px; max-height:270px; margin:10px 0 0; padding:11px; overflow:auto; border:1px solid rgba(255,255,255,.07); border-radius:10px; background:rgba(0,0,0,.24); color:#bfd0df; white-space:pre-wrap; word-break:break-word; font:11px/1.6 ui-monospace,SFMono-Regular,Consolas,monospace; }
.pickup-preview-head { margin-top:12px; }
.pickup-preview { min-height:125px; max-height:280px; }
.pickup-warning { margin-top:12px; padding-top:10px; border-top:1px dashed rgba(255,255,255,.09); }
@media(max-width:980px) {
  .pickup-grid { grid-template-columns:1fr; }
}
