/* 86-late-additions.css — Everything appended after the redesign
   Part of the ordered set linked from index.html. The parts concatenate to the
   original stylesheet byte for byte; link order IS the cascade order, so never
   reorder the <link> tags and never move a rule between files. */

.cr-genetic-alert span { color: var(--text); }

/* ── Daily review: attention flags + sign-off ─────────────────────────────── */

.review-flags {
  display: grid;
  gap: 8px;
  margin-bottom: 12px;
}

.review-flag {
  display: grid;
  gap: 2px;
  border: 1px solid var(--line);
  border-radius: 16px;
  padding: 12px 14px;
  margin: 0;
  font-size: 14px;
}

.review-flag strong { font-size: 14px; }
.review-flag span { color: var(--muted); font-size: 14px; }
.review-flag.critical { color: var(--bad); background: rgba(232, 111, 95, 0.08); border-color: rgba(232, 111, 95, 0.35); }
.review-flag.warn { color: var(--warn); background: rgba(240, 162, 59, 0.08); border-color: rgba(240, 162, 59, 0.32); }
.review-flag.ok { color: var(--accent); background: rgba(143, 195, 106, 0.07); }

.review-group,
.approval-group {
  align-items: flex-start;
}

.review-details,
.approval-details {
  margin-top: 12px;
  border-top: 1px solid var(--line);
  padding-top: 10px;
}

.review-details summary,
.approval-details summary {
  cursor: pointer;
  color: var(--muted);
  font-size: 14px;
  font-weight: 800;
}

.review-detail-list,
.approval-detail-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin-top: 10px;
}

.review-detail-row,
.approval-detail-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 10px;
  align-items: center;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: rgba(255,255,255,0.025);
  padding: 10px;
}

.review-detail-row > div,
.approval-detail-row > div {
  display: flex;
  min-width: 0;
  flex-direction: column;
  gap: 3px;
}

.review-detail-row span,
.review-detail-row small,
.approval-detail-row span,
.approval-detail-row small {
  color: var(--muted);
  font-size: 14px;
  overflow-wrap: anywhere;
}

.approval-detail-row .approval-actions {
  min-width: 0;
  justify-content: flex-start;
}

.approval-detail-row .approval-actions button {
  padding: 8px 10px;
  font-size: 14px;
}

.review-signoff {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 12px;
  margin-top: 12px;
  padding-top: 12px;
  border-top: 1px solid var(--line);
}

.review-signoff button { flex: 0 0 auto; }
.review-signoff-hint { color: var(--muted); font-size: 14px; margin: 0; flex: 1 1 200px; }
.review-signed { color: var(--accent); font-size: 14px; font-weight: 700; margin: 0; flex: 1 1 200px; }
.review-signed-note { color: var(--muted); font-size: 14px; margin: 0; flex: 1 1 100%; }

/* ── Watering: PPM meter photo ────────────────────────────────────────────── */

.gfw-photo {
  border: 1px solid var(--line);
  border-radius: 16px;
  padding: 12px;
  display: grid;
  gap: 10px;
}

.gfw-photo-head { display: grid; gap: 2px; }
.gfw-photo-head > span:first-child { font-size: 14px; font-weight: 800; text-transform: uppercase; letter-spacing: 0.04em; color: var(--faint, #8b978d); }
.gfw-photo-hint { font-size: 14px; color: var(--muted, #a8b4aa); }
.gfw-photo-reading { margin: 0; font-size: 14px; font-weight: 700; color: var(--accent); line-height: 1.4; }
.gfw-photo-reading.is-warning { color: var(--warn); }
.gfw-photo-reading.is-error { color: var(--muted, #a8b4aa); font-weight: 600; }
.gfw-field input.is-machine-read { border-color: var(--accent); box-shadow: 0 0 0 2px rgba(143, 195, 106, 0.12); }

.gfw-photo-btn {
  border: 1px dashed var(--line);
  border-radius: 14px;
  background: transparent;
  color: var(--text);
  padding: 14px;
  font-size: 14px;
  font-weight: 700;
  cursor: pointer;
}

.gfw-photo-btn:hover { border-color: var(--accent); color: var(--accent); }

.gfw-photo-preview { display: grid; gap: 8px; justify-items: start; }
.gfw-photo-preview img { max-width: 100%; max-height: 180px; border-radius: 12px; border: 1px solid var(--line); }
.gfw-photo-clear { border: 1px solid var(--line); border-radius: 999px; background: transparent; color: var(--muted); padding: 6px 12px; font-size: 14px; cursor: pointer; }

.gfw-photo-pill {
  border: 1px solid rgba(143, 195, 106, 0.35);
  border-radius: 999px;
  background: rgba(143, 195, 106, 0.1);
  color: var(--accent);
  padding: 6px 12px;
  font-size: 14px;
  font-weight: 700;
  cursor: pointer;
}
.gfw-recipe-note { margin: 8px 0 0; font-size: 14px; color: var(--muted, #a8b4aa); line-height: 1.5; }
.review-photo-missing { color: var(--bad); font-weight: 700; font-size: 14px; }

/* ── Watering total time + clone dome stage note ──────────────────────────── */

.gfw-total-time { margin: -4px 0 0; font-size: 14px; color: var(--accent); font-weight: 700; }

.cr-stage-note {
  display: grid;
  gap: 3px;
  border: 1px solid var(--line);
  border-radius: 16px;
  padding: 12px 14px;
  margin-bottom: 12px;
  font-size: 14px;
  background: rgba(255, 255, 255, 0.02);
}

.cr-stage-note strong { font-size: 14px; }
.cr-stage-note span { color: var(--muted); font-size: 14px; }
.cr-stage-note.due { color: var(--warn); border-color: rgba(240, 162, 59, 0.32); background: rgba(240, 162, 59, 0.08); }
.cr-stage-note.due span { color: var(--muted); }

/* Plant lifecycle (restore / retire / record removal, gf-core). A plant whose
   removal has been stamped shows this line instead of any button. */
.gf-lifecycle-removed {
  margin: 0;
  padding: 8px 10px;
  border: 1px solid rgba(240, 162, 59, 0.32);
  border-radius: 10px;
  background: rgba(240, 162, 59, 0.08);
  color: var(--warn);
  font-size: 14px;
  line-height: 1.4;
}

/* ============================================================
   GENETICS STANDING (Cultivator oversight panel)
   ============================================================ */

.genetics-list {
  display: grid;
  gap: 8px;
}

.genetics-row {
  display: grid;
  gap: 3px;
  border: 1px solid var(--line);
  border-radius: 16px;
  padding: 12px 14px;
}
.genetics-row.critical { background: rgba(232, 111, 95, 0.08); border-color: rgba(232, 111, 95, 0.35); }
.genetics-row.warn { background: rgba(240, 162, 59, 0.08); border-color: rgba(240, 162, 59, 0.32); }

.genetics-row-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}
.genetics-row-head strong { font-size: 14px; }

.genetics-chip {
  flex: none;
  border-radius: 999px;
  padding: 2px 9px;
  font-size: 14px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.03em;
}
.genetics-chip.critical { color: var(--bad); background: rgba(232, 111, 95, 0.16); }
.genetics-chip.warn { color: var(--warn); background: rgba(240, 162, 59, 0.16); }
.genetics-chip.ok { color: var(--accent); background: rgba(143, 195, 106, 0.16); }

.genetics-stock {
  margin: 0;
  color: var(--muted);
  font-size: 14px;
}
.genetics-action {
  margin: 0;
  font-size: 14px;
  line-height: 1.45;
}

/* Strain drops: the dashboard banner and the Drops screen. A drop is upcoming
   until its date arrives, then live, then archived out of the way. */
#dropsBanner[hidden] { display: none; }
.drops-banner { display:flex; flex-wrap:wrap; gap:10px; margin:0 0 16px; }
.drops-banner-card { display:flex; flex-direction:column; gap:2px; min-width:210px; flex:1; padding:11px 13px; border:1px solid #2f4a2a; border-left-width:4px; border-radius:12px; background:#111711; }
.drops-banner-card.live { border-left-color:#7fc45a; }
.drops-banner-card.upcoming { border-left-color:#d8b45a; }
.drops-when { color:#8fbf6f; font-size:.875rem; font-weight:800; letter-spacing:.04em; text-transform:uppercase; }
.drops-banner-card strong { color:#fff; font-size:1rem; }
.drops-banner-card em { color:#c3cfbd; font-size:.875rem; font-style:normal; }
.drops-products { color:#7c877a; font-size:.875rem; }
.drops-more { align-self:center; padding:8px 12px; border:1px solid #2a3527; border-radius:10px; background:#0c110b; color:#b5c1b1; cursor:pointer; font-size:.875rem; }
.drops-head { display:flex; align-items:flex-start; justify-content:space-between; gap:16px; margin-bottom:14px; }
.drops-head h1 { margin:0 0 3px; color:#fff; font-size:1.35rem; }
.drops-head p { margin:0; max-width:62ch; color:#849084; font-size:.875rem; }
.drops-head > b { display:flex; flex-direction:column; min-width:54px; padding:7px 10px; border:1px solid #2a3527; border-radius:10px; background:#0c110b; color:#c7efaa; text-align:center; }
.drops-head > b small { color:#6f7a6d; font-size:.875rem; text-transform:uppercase; }
.drops-form { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; align-items:start; margin-bottom:16px; padding:13px; border:1px solid #283128; border-radius:14px; background:#121712; }
.drops-form h3 { grid-column:1 / -1; margin:0; color:#fff; font-size:.98rem; }
.drops-form .drops-cadence { grid-column:1 / -1; margin:0; color:#aab8a6; font-size:.875rem; }
.drops-form label { display:flex; flex-direction:column; gap:4px; color:#8e9a8a; font-size:.875rem; font-weight:700; }
.drops-form label i { color:#667064; font-size:.875rem; font-style:normal; font-weight:400; }
.drops-form input, .drops-form select { width:100%; min-width:0; min-height:39px; box-sizing:border-box; border:1px solid #303a30; border-radius:8px; background:#0b0f0b; color:#fff; padding:7px 9px; }
.drops-headline { grid-column:1 / -1; }
.drops-products-field { grid-column:1 / -1; display:flex; flex-wrap:wrap; gap:8px 14px; margin:0; padding:10px 12px; border:1px solid #283128; border-radius:10px; }
.drops-products-field legend { padding:0 5px; color:#8e9a8a; font-size:.875rem; font-weight:700; text-transform:uppercase; }
.drops-check { flex-direction:row !important; align-items:center; gap:6px !important; color:#cfd8cb !important; font-weight:500 !important; }
.drops-check input { width:auto !important; min-height:0 !important; }
.drops-form > .drops-mini { grid-column:1 / -1; justify-self:start; }
.drops-list { display:flex; flex-direction:column; gap:9px; }
.drops-card { padding:12px 13px; border:1px solid #2c3529; border-radius:12px; background:#111511; }
.drops-card.upcoming { border-color:#3f4a2c; }
.drops-card.archived { opacity:.62; }
.drops-card > header { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; }
.drops-card > header div { display:flex; flex-direction:column; gap:2px; }
.drops-card > header strong { color:#e4ebe0; font-size:.95rem; }
.drops-card > header em { color:#a9b7a3; font-size:.875rem; font-style:normal; }
.drops-card > header > b { padding:3px 9px; border-radius:999px; background:#17240f; color:#a7e07a; font-size:.875rem; text-transform:uppercase; }
.drops-card.archived > header > b { background:#20291f; color:#9aa596; }
.drops-date { margin:8px 0 2px; color:#c7d2c2; font-size:.875rem; }
.drops-details { margin:6px 0 0; color:#778175; font-size:.875rem; }
.drops-actions { display:flex; gap:7px; margin-top:10px; }
.drops-mini { padding:7px 11px; border:1px solid #2f3a2c; border-radius:9px; background:#151a14; color:#cfe0c2; cursor:pointer; font-size:.875rem; }
.drops-mini.accent { border-color:#3f6b34; background:#1b2a16; color:#d6f0c4; }
.drops-mini.bad { border-color:#5a3030; color:#e9a4a4; }
.drops-mini[disabled] { opacity:.5; cursor:default; }
.drops-empty { color:#8b9688; font-size:.875rem; }
.drops-history { margin-top:14px; border-top:1px solid #283128; }
.drops-history > summary { cursor:pointer; padding:12px 2px; color:#8b9688; font-size:.875rem; }
.drops-history > summary span { margin-left:5px; padding:2px 7px; border-radius:999px; background:#20291f; color:#b5c1b1; }
@media (max-width:700px) { #dropsSection .drops-form { grid-template-columns:1fr; } }

/* My Tasks: the dashboard alert for not-yet-started work, and the My Tasks
   screen's full list (own tasks by default, everyone can toggle to all). */
#myTasksBanner[hidden] { display: none; }
.mytasks-banner { display:flex; flex-direction:column; gap:8px; margin:0 0 16px; padding:11px 13px; border:1px solid #5a4a20; border-left-width:4px; border-radius:12px; background:#171408; }
.mytasks-banner-head { display:flex; align-items:center; justify-content:space-between; gap:12px; }
.mytasks-banner-head strong { color:#fff; font-size:.92rem; }
.mytasks-banner-more { align-self:flex-start; padding:6px 11px; border:1px solid #4a3f22; border-radius:9px; background:#0c0a06; color:#e0c98a; cursor:pointer; font-size:.875rem; }
.mytasks-banner-list { display:flex; flex-wrap:wrap; gap:8px; }
.mytasks-banner-card { display:flex; align-items:center; justify-content:space-between; gap:10px; min-width:210px; flex:1; padding:8px 10px; border:1px solid #322a14; border-radius:10px; background:#100e07; }
.mytasks-banner-card strong { display:block; color:#fff; font-size:.875rem; }
.mytasks-banner-card span { color:#a99b6d; font-size:.875rem; }
.mytasks-head { display:flex; flex-wrap:wrap; align-items:flex-start; justify-content:space-between; gap:10px 16px; margin-bottom:14px; }
.mytasks-head h1 { margin:0 0 3px; color:#fff; font-size:1.35rem; }
.mytasks-head p { margin:0; max-width:62ch; color:#849084; font-size:.875rem; }
.mytasks-group { display:grid; gap:8px; margin:18px 0; }
.mytasks-group > h2 { display:flex; align-items:center; gap:8px; margin:0; color:#dfe9da; font-size:.88rem; }
.mytasks-group > h2 span { min-width:24px; padding:2px 7px; border-radius:999px; background:#20281e; color:#a9c59b; font-size:.875rem; text-align:center; }
.mytasks-list { display:flex; flex-direction:column; gap:8px; }
.mytasks-row { display:grid; grid-template-columns:82px minmax(150px,1fr) 82px 110px auto; gap:10px; align-items:center; min-height:52px; padding:8px 10px; border:1px solid #252e24; border-radius:10px; background:#0d120c; }
.mytasks-row.in_progress { border-color:#5b5426; background:#17160c; }
.mytasks-row.overdue { border-color:#673b35; background:#190f0e; }
.mytasks-row.packaging-running { border-color:#4d8a64; background:#0f1c14; box-shadow:inset 3px 0 #63c987; }
.mytasks-row.complete { opacity:.68; }
.mytasks-row.not-mine { border-style:dashed; }
.mytasks-row-status { color:#83907e; font-size:.875rem; font-weight:800; letter-spacing:.05em; text-transform:uppercase; }
.mytasks-row.in_progress .mytasks-row-status { color:#e2c861; }
.mytasks-row.complete .mytasks-row-status { color:#7fc45a; }
.mytasks-row.overdue .mytasks-row-status { color:#f29a8d; }
.mytasks-row-main { display:flex; flex-direction:column; min-width:0; }
.mytasks-row-main strong { overflow:hidden; color:#e2eadf; font-size:.875rem; text-overflow:ellipsis; white-space:nowrap; }
.mytasks-row-main span { color:#90a087; font-size:.875rem; }
.mytasks-row-main small { overflow:hidden; color:#687266; font-size:.875rem; text-overflow:ellipsis; white-space:nowrap; }
.mytasks-row-main .mytasks-pack-progress { margin-top:4px; color:#9bd7ad; font-size:.875rem; font-weight:750; }
.mytasks-row-qty { display:flex; flex-direction:column; color:#d7ffbb; font-size:1rem; text-align:right; }
.mytasks-row-qty small { color:#687266; font-size:.875rem; font-weight:500; text-transform:uppercase; }
.mytasks-row > time { color:#7b8679; font-size:.875rem; }
.mytasks-row-acts { display:flex; justify-content:flex-end; gap:5px; }
.mytasks-mini { padding:7px 11px; border:1px solid #2f3a2c; border-radius:9px; background:#151a14; color:#cfe0c2; cursor:pointer; font-size:.875rem; }
.mytasks-mini.accent { border-color:#3f6b34; background:#1b2a16; color:#d6f0c4; }
.mytasks-mini.ok { border-color:#3a5a1f; }
.mytasks-mini.ok:hover { background:#20340f; }
.mytasks-mini[disabled] { opacity:.5; cursor:default; }
.mytasks-empty { color:#8b9688; font-size:.875rem; }
@media (max-width:700px) {
  #myTasksSection .mytasks-row { grid-template-columns:70px minmax(110px,1fr) 64px; }
  #myTasksSection .mytasks-row > time { grid-column:2 / -1; }
  #myTasksSection .mytasks-row-acts { grid-column:1 / -1; justify-content:flex-start; }
}
