/* 87-floor.css — paused / since / why chips, the trimmed-then-packed progress
   bar, and the BOH floor board (migration 199, 2026-09-23). Everything here is
   a selector no earlier sheet declares; the shared chips are used by boh.js,
   production.js, my-tasks.js and floor.js alike, so they read the same on
   every screen. Colours follow the room: green is working, amber is paused
   today or waiting on a lead, salmon is left from before today. */

/* ── shared state chips ─────────────────────────────────────────────────── */
.work-chip { display:inline-flex; align-items:center; gap:4px; width:max-content; max-width:100%; margin-top:4px; padding:2px 8px; border-radius:999px; background:#1c231b; color:#a9b6a4; font-size:.875rem; font-weight:750; line-height:1.4; white-space:normal; }
.work-chip.running { background:#12301c; color:#9be3b0; }
.work-chip.paused { background:#2d2711; color:#e8cd6d; }
.work-chip.waiting, .work-chip.queued { background:#1a211a; color:#93a08e; }
.work-chip.ready, .work-chip.finished { background:#3a2f0c; color:#ffd966; box-shadow:inset 0 0 0 1px #8a6d1c; }
.work-chip.blocked { background:#3a1f19; color:#f3ad97; }
.work-chip.started { background:#232713; color:#d6d98a; }
.work-chip.age-stale { background:#3a2a10; color:#f6c667; }
.work-chip.age-old { background:#40201c; color:#ff9d8f; box-shadow:inset 0 0 0 1px #7a3a30; }

.work-pause-note { display:block; margin-top:3px; color:#a79c6c; font-size:.875rem; font-weight:650; }
.work-pause-note.age-stale { color:#f0c060; }
.work-pause-note.age-old { color:#ff9d8f; }
.work-pause-note.finished, .work-pause-note.blocked { color:#ffd27a; }

/* ── the trimmed-then-packed bar ────────────────────────────────────────── */
.work-progress { margin:10px 0 6px; }
.work-progress-track { display:grid; grid-template-columns:1fr 1fr; gap:3px; height:12px; }
.work-progress-half { position:relative; overflow:hidden; border-radius:999px; background:#1d261c; }
.work-progress-half > i { position:absolute; inset:0 auto 0 0; display:block; border-radius:inherit; transition:width .4s ease; }
.work-progress-half.trim > i { background:linear-gradient(90deg,#4f8f3a,#8fd96a); }
.work-progress-half.pack > i { background:linear-gradient(90deg,#2f7c86,#6fd0d9); }
.work-progress-half.full { box-shadow:0 0 0 1px #9be07a inset; }
.work-progress-legend { display:flex; flex-wrap:wrap; gap:4px 16px; margin-top:5px; color:#7f8b7c; font-size:.875rem; font-weight:700; letter-spacing:.03em; text-transform:uppercase; }
.work-progress-legend b { color:#e3ecdf; font-size:.875rem; }
.work-progress-legend .overall { margin-left:auto; color:#b9d9a6; }
.work-progress.big .work-progress-track { height:26px; gap:5px; }
.work-progress.big .work-progress-legend { font-size:.875rem; }
.work-progress.big .work-progress-legend b { font-size:1.05rem; }

.work-bar { position:relative; display:block; flex:2 1 140px; min-width:90px; height:9px; overflow:hidden; border-radius:999px; background:#1d261c; }
.work-bar > i { position:absolute; inset:0 auto 0 0; display:block; border-radius:inherit; background:linear-gradient(90deg,#4f8f3a,#8fd96a); }

/* ── BOH trim board additions ───────────────────────────────────────────── */
.boh-trim-card.ready { border-color:#8a6d1c; background:#17140a; }
.boh-trim-card.age-stale { border-color:#7a5d1d; }
.boh-trim-card.age-old { border-color:#7a3a30; background:#170f0d; }
.boh-trim-head-nums b.attention { border-color:#7a5d1d; color:#ffd966; }
.boh-trim-progress { margin:0 0 14px; padding:12px; border:1px solid #283128; border-radius:14px; background:#101510; }
.boh-trim-progress h3 { margin:0 0 8px; color:#fff; font-size:.95rem; }
.boh-trim-progress-row { display:flex; flex-wrap:wrap; align-items:center; gap:4px 12px; padding:6px 0; border-top:1px solid #1b221b; }
.boh-trim-progress-row:first-of-type { border-top:0; }
.boh-trim-progress-name { flex:1 1 120px; color:#e4ebe0; font-size:.875rem; font-weight:800; }
.boh-trim-progress-row > b { min-width:44px; color:#c7efaa; font-size:.9rem; text-align:right; }
.boh-trim-progress-row > small { flex-basis:100%; color:#707a6e; font-size:.875rem; }

/* ── Production additions ───────────────────────────────────────────────── */
.prod-work-card.age-stale { border-color:#7a5d1d; }
.prod-work-card.age-old { border-color:#7a3a30; background:#170f0d; }
.prod-work-card.job-finished, .prod-work-card.job-blocked { border-color:#8a6d1c; }
.prod-work-card.age-stale .prod-work-status { color:#f6c667; }
.prod-work-card.age-old .prod-work-status { color:#ff9d8f; }
.prod-work-history-row.closed-short > span { color:#f0c96f; }
.prod-history-row.final > span { color:#9be07a; }
.prod-trim-hold { margin:8px 0; padding:9px 11px; border:1px solid #3a3217; border-radius:9px; background:#15130a; }
.prod-trim-hold > span { color:#d9c26a; font-size:.875rem; font-weight:800; letter-spacing:.08em; text-transform:uppercase; }
.prod-trim-hold ul { margin:5px 0 7px; padding-left:18px; color:#d6dccf; font-size:.875rem; line-height:1.5; }
.prod-trim-hold li.age-stale { color:#f6c667; }
.prod-trim-hold li.age-old { color:#ff9d8f; }
.prod-trim-hold li.ready { color:#ffd966; }
.prod-trim-hold li.untrimmed { color:#e6b87a; }
.prod-trim-warn { margin:8px 0; padding:9px 11px; border:1px solid #7a3a30; border-radius:9px; background:#1d100d; color:#ffb4a6; font-size:.875rem; line-height:1.45; }
.prod-harvest-final { display:flex; flex-direction:column; align-items:flex-end; margin-top:6px; color:#d7ffbb; font-size:1.15rem; font-weight:900; font-variant-numeric:tabular-nums; }
.prod-harvest-final em { color:#6fae4f; font-size:.875rem; font-style:normal; font-weight:800; letter-spacing:.14em; text-transform:uppercase; }
.prod-harvest-final.pending { color:#e8cd6d; font-size:.875rem; }
.prod-harvest-boss { display:flex; flex-wrap:wrap; align-items:baseline; gap:4px 12px; margin:10px 0; padding:12px 14px; border:1px solid #4d8a2c; border-radius:10px; background:linear-gradient(135deg,#132a0f,#0d1f0d); }
.prod-harvest-boss > span { width:100%; color:#8fd870; font-size:.875rem; font-weight:900; letter-spacing:.16em; text-transform:uppercase; }
.prod-harvest-boss > b { color:#d7ffbb; font-size:2rem; font-weight:900; font-variant-numeric:tabular-nums; line-height:1.05; }
.prod-harvest-boss > em { color:#9fbf8a; font-size:.875rem; font-style:normal; }
.prod-harvest-boss.pending { border-color:#5a4a2c; background:#15130a; }
.prod-harvest-boss.pending > b { color:#ffd966; font-size:1.4rem; }
.prod-harvest-boss ul { width:100%; margin:4px 0 0; padding-left:18px; color:#cfd6c8; font-size:.875rem; line-height:1.5; }

/* ── Crew Tasks additions ───────────────────────────────────────────────── */
.mytasks-group.attention { padding:10px 12px; border:1px solid #6a531a; border-radius:14px; background:#141209; }
.mytasks-group-sub { margin:-4px 0 8px; color:#9c916a; font-size:.875rem; }
.mytasks-row.age-stale { border-color:#7a5d1d; }
.mytasks-row.age-old { border-color:#7a3a30; }
.mytasks-row.ready .mytasks-row-status, .mytasks-row.job-finished .mytasks-row-status { color:#ffd966; }
.mytasks-row.age-stale .mytasks-row-status { color:#f6c667; }
.mytasks-row.age-old .mytasks-row-status { color:#ff9d8f; }
.mytasks-row.trim.running .mytasks-row-status { color:#9be3b0; }

/* ── the floor board ────────────────────────────────────────────────────── */
#floorSection { display:block; }
.floor-wrap { max-width:1500px; margin:0 auto; padding:14px clamp(0px, 1.5vw, 16px) 90px; }
.floor-head { display:flex; flex-wrap:wrap; align-items:flex-end; justify-content:space-between; gap:12px; margin-bottom:12px; }
.floor-head h1 { margin:2px 0; color:#fff; font-size:clamp(1.5rem, 3vw, 1.9rem); line-height:1.1; }
.floor-eyebrow { margin:0; color:#8fd870; font-size:.875rem; font-weight:900; letter-spacing:.18em; text-transform:uppercase; }
.floor-sub { margin:2px 0 0; color:#8d998a; font-size:.875rem; }
.floor-head-acts { display:flex; flex-wrap:wrap; gap:8px; }
.floor-btn { min-height:40px; padding:8px 14px; border:1px solid #33422f; border-radius:10px; background:#141b13; color:#dfe8da; cursor:pointer; font-size:.875rem; font-weight:750; }
.floor-btn:hover { border-color:#5b7f4d; }
.floor-btn:disabled { opacity:.55; cursor:progress; }
.floor-btn.go { border-color:#4d8a64; background:#123020; color:#b8f0c9; }
.floor-btn.warn { border-color:#7a5d1d; background:#241c0b; color:#ffd27a; }
.floor-btn.on { border-color:#5b7f4d; background:#16290f; color:#c7efaa; }
.floor-empty { padding:14px; border:1px dashed #2b352a; border-radius:12px; color:#7f8a7c; text-align:center; }
.floor-more { margin:6px 0 0; color:#7f8a7c; font-size:.875rem; }

.floor-attention { margin:0 0 14px; padding:12px 14px; border:1px solid #8a6d1c; border-radius:14px; background:#1a1509; }
.floor-attention strong { color:#ffd966; font-size:.95rem; }
.floor-attention ul { display:flex; flex-wrap:wrap; gap:6px 10px; margin:8px 0 0; padding:0; list-style:none; }
.floor-attention li { padding:4px 10px; border-radius:999px; background:#2d2410; color:#f3dd9a; font-size:.875rem; font-weight:650; }

.floor-harvest { margin:0 0 16px; padding:clamp(12px, 1.6vw, 16px); border:1px solid #2a5a1a; border-radius:16px; background:linear-gradient(160deg,#0f1d0d,#0b120a); }
.floor-harvest > header h2 { margin:2px 0; color:#fff; font-size:1.5rem; }
.floor-harvest-body { display:flex; flex-wrap:wrap; gap:14px; margin-top:12px; align-items:flex-start; }
.floor-harvest-body > .floor-boss { flex:1 1 260px; max-width:420px; }
.floor-strains { flex:999 1 540px; display:grid; grid-template-columns:repeat(auto-fill,minmax(min(270px,100%),1fr)); gap:10px; }
.floor-strain { padding:12px; border:1px solid #243224; border-radius:13px; background:#0d140c; }
.floor-strain > header { display:flex; align-items:center; justify-content:space-between; gap:8px; }
.floor-strain h3 { margin:0; color:#eef5ea; font-size:1.05rem; }
.floor-stage { padding:2px 9px; border-radius:999px; background:#1c261b; color:#a9c79a; font-size:.875rem; font-weight:800; letter-spacing:.05em; text-transform:uppercase; white-space:nowrap; }
.floor-strain.stage-byproduct .floor-stage, .floor-strain.stage-accept .floor-stage { background:#3a2f0c; color:#ffd966; }
.floor-strain.stage-packing .floor-stage { background:#11282b; color:#8fdde4; }
.floor-strain.stage-done .floor-stage { background:#16290f; color:#9be07a; }
.floor-strain.stage-untracked .floor-stage { background:#3a1f19; color:#f3ad97; }
.floor-strain-nums { display:grid; grid-template-columns:repeat(auto-fit,minmax(72px,1fr)); gap:6px; margin-top:6px; }
.floor-strain-nums span { display:flex; flex-direction:column; padding:6px; border-radius:8px; background:#0a0f09; }
.floor-strain-nums b { color:#d7ffbb; font-size:.9rem; font-variant-numeric:tabular-nums; }
.floor-strain-nums small { color:#6f7a6d; font-size:.56rem; font-weight:700; text-transform:uppercase; }
.floor-holds { margin:8px 0 0; padding-left:18px; color:#cbd3c5; font-size:.875rem; line-height:1.5; }
.floor-holds li.age-stale, .floor-holds li.untrimmed, .floor-holds li.held { color:#f6c667; }
.floor-holds li.age-old, .floor-holds li.warn { color:#ff9d8f; }
.floor-holds li.ready, .floor-holds li.next { color:#ffd966; }
.floor-holds li.running { color:#9be3b0; }

.floor-boss { display:flex; flex-direction:column; gap:2px; padding:14px 16px; border:1px solid #4d8a2c; border-radius:14px; background:linear-gradient(145deg,#173512,#0d1f0d); }
.floor-boss.pending { border-color:#5a4a2c; background:#15130a; }
.floor-boss-eyebrow { color:#8fd870; font-size:.875rem; font-weight:900; letter-spacing:.16em; text-transform:uppercase; }
.floor-boss.pending .floor-boss-eyebrow { color:#d9c26a; }
.floor-boss-total { color:#e6ffd2; font-size:clamp(2rem, 4vw, 2.6rem); font-weight:900; font-variant-numeric:tabular-nums; line-height:1.05; }
.floor-boss.pending .floor-boss-total { color:#ffd966; font-size:2rem; }
.floor-boss-lbs { color:#a8d386; font-size:.875rem; font-weight:700; }
.floor-boss-grades { display:grid; grid-template-columns:repeat(auto-fit,minmax(64px,1fr)); gap:6px; margin-top:8px; }
.floor-boss-grades span { display:flex; flex-direction:column; padding:6px; border-radius:8px; background:#0b1509; color:#d7ffbb; font-size:.875rem; font-weight:800; font-variant-numeric:tabular-nums; }
.floor-boss-grades em { color:#7fae63; font-size:.875rem; font-style:normal; letter-spacing:.08em; text-transform:uppercase; }
.floor-boss p { margin:8px 0 0; color:#9fb193; font-size:.875rem; line-height:1.45; }
.floor-strain .floor-boss { margin-top:8px; padding:10px 12px; }
.floor-strain .floor-boss-total { font-size:1.8rem; }

.floor-columns { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(340px,100%),1fr)); gap:14px; align-items:start; }
.floor-panel { display:flex; flex-direction:column; gap:8px; padding:14px; border:1px solid #243224; border-radius:16px; background:#0d130c; }
.floor-panel h3 { display:flex; align-items:baseline; justify-content:space-between; gap:8px; margin:0 0 2px; color:#fff; font-size:1.05rem; }
.floor-panel h3 span { color:#7f8a7c; font-size:.875rem; font-weight:700; }
.floor-card { display:grid; grid-template-columns:1fr auto; gap:6px 10px; align-items:center; padding:11px 12px; border:1px solid #263126; border-radius:12px; background:#111811; }
.floor-card.running { border-color:#3f6a2c; background:#0f1a10; box-shadow:inset 3px 0 #63c987; }
.floor-card.ready, .floor-card.finished, .floor-card.blocked { border-color:#8a6d1c; background:#17140a; }
.floor-card.age-stale { border-color:#7a5d1d; }
.floor-card.age-old { border-color:#7a3a30; background:#170f0d; }
.floor-card-main { display:flex; flex-direction:column; min-width:0; }
.floor-card-main strong { color:#eef5ea; font-size:.98rem; }
.floor-card-main > span { color:#9aa897; font-size:.875rem; }
.floor-card-main small { margin-top:3px; color:#a79c6c; font-size:.875rem; }
.floor-card-main em.rush { color:#ffb36b; font-style:normal; font-weight:800; }
.floor-clock { color:#8f9c8c; font-family:ui-monospace,SFMono-Regular,Menlo,monospace; font-size:1.5rem; font-variant-numeric:tabular-nums; }
.floor-card.running .floor-clock { color:#b6f08a; }
.floor-acts { display:flex; flex-wrap:wrap; gap:6px; grid-column:1 / -1; }
.floor-count { display:grid; grid-template-columns:1fr auto; align-items:center; gap:8px; margin-top:6px; }
.floor-count i { height:7px; overflow:hidden; border-radius:999px; background:#222b20; }
.floor-count i > span { display:block; height:100%; border-radius:inherit; background:#63c987; }
.floor-count b { color:#d7ffbb; font-size:.875rem; font-variant-numeric:tabular-nums; }
.floor-card.machine.idle { border-style:dashed; }
.floor-schedule { display:flex; flex-direction:column; gap:6px; margin:0; padding:0; list-style:none; }
.floor-schedule li { display:flex; flex-direction:column; padding:8px 10px; border:1px solid #222c21; border-radius:10px; background:#0b100a; }
.floor-schedule li b { color:#e4ebe0; font-size:.875rem; }
.floor-schedule li span { color:#8d998a; font-size:.875rem; }
.floor-schedule li em { color:#a9b69f; font-size:.875rem; font-style:normal; }
.floor-schedule li.overdue { border-color:#7a3a30; }
.floor-schedule li.overdue em { color:#ff9d8f; }
.floor-schedule.daily li { flex-direction:row; justify-content:space-between; gap:8px; }
/* Harvest stock held for its strain's final weight (migrations 201-203). */
.boh-held-chip { display:inline-flex; align-items:center; padding:3px 9px; border:1px solid #7a5d1d; border-radius:999px; background:#241c0b; color:#ffd27a; font-size:.875rem; font-weight:700; white-space:nowrap; }
.prod-bulk-row.needs-final { background:#17140c; box-shadow:inset 3px 0 #b48b34; }
