/* New Entry, numbered steps (docs/plans/NEW_ENTRY_REDESIGN_PLAN.md §1,
   docs/plans/mocks/mock-new-entry.html). Scoped to #new-spray-form; the
   fields keep their ids, so app.js reads and writes them as before. Colours
   come from app.css's tokens; amber is the "missing" colour.
   Plan a job (#job-plan-form, static/job-plan.js) uses the same cards and bar:
   every rule here names both forms. */
#new-spray-form, #job-plan-form, #job-board-page {
  --ne-amber: #9a5b12;
  --ne-amber-l: #fbefdc;
  --ne-amber-in: #fffaf1;
  --ne-red: #b3261e;
  --ne-muted-l: #efebe1;
  --ne-num: #ece6d6;
}

/* the one-time "the wizard is gone" note, under the page header */
#new-spray-form .ne-note, #job-plan-form .ne-note {
  display: flex; align-items: flex-start; gap: 10px; margin-bottom: 14px; padding: 11px 14px;
  background: var(--gl); color: var(--gm); border: 1px solid var(--gb); border-radius: 12px;
  font-size: 14px; font-weight: 600; line-height: 1.4;
}
#new-spray-form .ne-note[hidden], #job-plan-form .ne-note[hidden] { display: none; }
#new-spray-form .ne-note span, #job-plan-form .ne-note span { flex: 1; }
#new-spray-form .ne-note button, #job-plan-form .ne-note button {
  border: 0; background: none; color: var(--gm); font-size: 20px; line-height: 1; cursor: pointer;
  padding: 0 2px; width: auto; margin: 0;
}

/* layout: one column on a phone, two independent columns at 900px and up
   (1 + 2 left, 3 + 4 right): a growing Tank never pushes Blocks down. One gap
   everywhere. The empty form lines up: _neAlign gives each pair (When & who /
   Tank, Blocks / Conditions & notes) the same min-height, so they still grow
   freely after. */
#new-spray-form .ne-grid, #job-plan-form .ne-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 14px; align-items: start; }
#new-spray-form .ne-col, #job-plan-form .ne-col { display: flex; flex-direction: column; gap: 14px; min-width: 0; }
@media (min-width: 900px) {
  #new-spray-form .ne-grid, #job-plan-form .ne-grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1.25fr); gap: 18px; }
  #new-spray-form .ne-col, #job-plan-form .ne-col { gap: 18px; }
}

/* cards */
#new-spray-form .ne-card, #job-plan-form .ne-card {
  background: var(--sf); border: 1px solid var(--br); border-radius: 14px; padding: 16px;
  transition: opacity .2s; min-width: 0;
}
/* the locked Tank: its header and fields fade and take no taps; the "Pick
   blocks first" note sits on top, centred, at full strength */
#new-spray-form .ne-card.locked, #job-plan-form .ne-card.locked { position: relative; }
#new-spray-form .ne-card.locked > .ne-ch, #new-spray-form .ne-card.locked > .ne-body, #job-plan-form .ne-card.locked > .ne-ch, #job-plan-form .ne-card.locked > .ne-body { opacity: .45; }
#new-spray-form .ne-card.locked .ne-body, #job-plan-form .ne-card.locked .ne-body { pointer-events: none; }
#new-spray-form .ne-ch, #job-plan-form .ne-ch { display: flex; align-items: center; gap: 10px; margin-bottom: 12px; }
#new-spray-form .ne-num, #job-plan-form .ne-num {
  width: 26px; height: 26px; border-radius: 50%; display: grid; place-items: center; flex: none;
  font-size: 13px; font-weight: 700; background: var(--ne-num); color: var(--tm);
}
#new-spray-form .ne-card.done .ne-num, #job-plan-form .ne-card.done .ne-num { background: var(--gm); color: #fff; }
#new-spray-form .ne-card.todo .ne-num, #job-plan-form .ne-card.todo .ne-num { background: var(--ne-amber); color: #fff; }
#new-spray-form .ne-ch h3, #job-plan-form .ne-ch h3 {
  margin: 0; flex: 1; font-size: 13px; letter-spacing: .07em; text-transform: uppercase;
  color: var(--tm); border: 0; padding: 0;
}
#new-spray-form .ne-st, #job-plan-form .ne-st { font-size: 12.5px; font-weight: 600; border-radius: 999px; padding: 2px 9px; white-space: nowrap; }
#new-spray-form .ne-st.ok, #job-plan-form .ne-st.ok { background: var(--gl); color: var(--gm); }
#new-spray-form .ne-st.no, #job-plan-form .ne-st.no { background: var(--ne-amber-l); color: var(--ne-amber); }
#new-spray-form .ne-st.lk, #job-plan-form .ne-st.lk { background: var(--ne-muted-l); color: var(--tm); }
#new-spray-form .ne-maplink, #job-plan-form .ne-maplink {
  background: none; border: 0; padding: 0; cursor: pointer; font-size: 13px; font-weight: 600;
  color: var(--gm); white-space: nowrap;
}
#new-spray-form .ne-maplink:hover, #job-plan-form .ne-maplink:hover { text-decoration: underline; }
#new-spray-form .ne-lockmsg, #job-plan-form .ne-lockmsg {
  position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); z-index: 2;
  width: calc(100% - 48px); max-width: 380px; box-sizing: border-box; text-align: center;
  font-size: 14px; font-weight: 600; line-height: 1.4; color: var(--ne-amber); background: var(--ne-amber-l);
  border: 1px solid #ecd2a8; border-radius: 10px; padding: 12px 16px;
  box-shadow: 0 4px 14px rgba(0, 0, 0, .08);
}

/* rows inside a card */
#new-spray-form .ne-r, #job-plan-form .ne-r { display: grid; gap: 10px; margin-bottom: 12px; }
#new-spray-form .ne-r:last-child, #job-plan-form .ne-r:last-child { margin-bottom: 0; }
#new-spray-form .ne-r2, #job-plan-form .ne-r2 { grid-template-columns: 1fr 1fr; }
#new-spray-form .ne-r3, #job-plan-form .ne-r3 { grid-template-columns: 1fr 1fr 1fr; }
#new-spray-form .ne-r4, #job-plan-form .ne-r4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
@media (max-width: 560px) {
  #new-spray-form .ne-r3, #new-spray-form .ne-r4, #job-plan-form .ne-r3, #job-plan-form .ne-r4 { grid-template-columns: 1fr 1fr; }
}
#new-spray-form .ne-r .field, #job-plan-form .ne-r .field { margin-bottom: 0; min-width: 0; }
#new-spray-form .field label i, #job-plan-form .field label i { font-style: normal; color: var(--ne-red); }
#new-spray-form .ne-miss, #job-plan-form .ne-miss { border-color: var(--ne-amber) !important; background: var(--ne-amber-in) !important; }

/* times: an h:mm box, AM / PM, Now */
#new-spray-form .ne-time, #job-plan-form .ne-time { display: flex; gap: 6px; align-items: center; }
#new-spray-form .ne-tin, #job-plan-form .ne-tin {
  width: 76px; flex: none; text-align: center; font-size: 17px; font-weight: 600; padding: 8px 6px;
}
#new-spray-form .ne-ap, #job-plan-form .ne-ap { display: inline-flex; border: 1px solid var(--br); border-radius: 9px; overflow: hidden; flex: none; }
#new-spray-form .ne-ap button, #job-plan-form .ne-ap button {
  border: 0; background: var(--sf); padding: 8px 10px; cursor: pointer; font-weight: 600;
  color: var(--tm); font-size: 14px; min-width: 0; width: auto; margin: 0; border-radius: 0;
}
#new-spray-form .ne-ap button.on, #job-plan-form .ne-ap button.on { background: var(--gm); color: #fff; }
#new-spray-form .ne-ap.ne-miss, #job-plan-form .ne-ap.ne-miss { border-color: var(--ne-amber) !important; }
/* not a time (hour 1-12, minutes 00-59): red */
#new-spray-form .ne-tin.ne-bad, #job-plan-form .ne-tin.ne-bad { border-color: var(--ne-red) !important; background: #fbe9e7 !important; color: var(--ne-red); }
#new-spray-form .ne-now, #job-plan-form .ne-now {
  border: 0; background: none; color: var(--gm); font-weight: 600; cursor: pointer; font-size: 13px;
  padding: 0 0 0 4px; width: auto; margin: 0;
}
#new-spray-form .ne-tw, #job-plan-form .ne-tw { font-size: 13px; color: var(--ne-red); margin: -4px 0 12px; }

/* crop / acre chips under the block picker (acres from SprayMath) */
#new-spray-form .ne-crops, #job-plan-form .ne-crops { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 8px; }
#new-spray-form .ne-crops:empty, #job-plan-form .ne-crops:empty { display: none; }
#new-spray-form .ne-crop, #job-plan-form .ne-crop {
  background: var(--gl); color: var(--gm); border-radius: 999px; padding: 3px 10px; font-size: 13px; font-weight: 600;
}
/* the chips replace both rollup lines (map/standard list, hierarchy picker) */
#new-spray-form .bp-meta, #job-plan-form .bp-meta { display: none; }

#new-spray-form .ne-card textarea, #job-plan-form .ne-card textarea { width: 100%; }

/* the Tank's product rows (step d) */
#new-spray-form #pest-tags, #job-plan-form #pest-tags { display: flex; flex-direction: column; gap: 8px; margin-bottom: 8px; }
#new-spray-form #pest-tags:empty, #job-plan-form #pest-tags:empty { display: none; }
#new-spray-form .ne-prow, #job-plan-form .ne-prow, #job-board-page .ne-prow {
  display: block; padding: 11px 12px; border: 1px solid var(--br); border-radius: 10px; background: #fff;
  cursor: pointer; text-align: left; margin: 0; width: 100%; box-sizing: border-box; align-self: stretch;
}
#new-spray-form .ne-prow:hover, #job-plan-form .ne-prow:hover, #job-board-page .ne-prow:hover { border-color: var(--gb); }
#new-spray-form .ne-prow-top, #job-plan-form .ne-prow-top, #job-board-page .ne-prow-top { display: flex; align-items: baseline; gap: 8px; }
#new-spray-form .ne-prow-top .pl-chip-name, #job-plan-form .ne-prow-top .pl-chip-name, #job-board-page .ne-prow-top .pl-chip-name { flex: 1; min-width: 0; font-size: 15px; color: var(--tx); white-space: normal; overflow-wrap: anywhere; }
#new-spray-form .ne-prow-top .ne-prow-rate, #new-spray-form .ne-prow-top .ne-prow-rm, #job-plan-form .ne-prow-top .ne-prow-rate, #job-plan-form .ne-prow-top .ne-prow-rm { flex: none; }
/* "For: not set" opens What is it for? in the row (neRowCause) */
#new-spray-form button.ne-for-set, #job-plan-form button.ne-for-set { border: 0; font: inherit; cursor: pointer; width: auto; margin: 0; }
/* its look: .cause-inline in app.css (inlineCausePicker) */
#new-spray-form .ne-prow-rate, #job-plan-form .ne-prow-rate, #job-board-page .ne-prow-rate { font-weight: 600; white-space: nowrap; color: var(--tx); }
#new-spray-form .ne-prow-rm, #job-plan-form .ne-prow-rm, #job-board-page .ne-prow-rm {
  border: 0; background: none; color: var(--tm); font-size: 18px; line-height: 1; padding: 0 2px 0 6px;
  cursor: pointer; width: auto; margin: 0;
}
#new-spray-form .ne-prow-rm:hover, #job-plan-form .ne-prow-rm:hover, #job-board-page .ne-prow-rm:hover { color: #b3261e; }
#new-spray-form .ne-prow-meta, #job-plan-form .ne-prow-meta, #job-board-page .ne-prow-meta { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 7px; align-items: center; }
#new-spray-form .ne-tag, #job-plan-form .ne-tag, #job-board-page .ne-tag { font-size: 11.5px; border-radius: 999px; padding: 2px 8px; font-weight: 600; white-space: nowrap; }
#new-spray-form .ne-t-grp, #job-plan-form .ne-t-grp, #job-board-page .ne-t-grp { background: #f1ede2; color: #5b5a50; }
#new-spray-form .ne-t-ok, #job-plan-form .ne-t-ok, #job-board-page .ne-t-ok { background: var(--gl); color: var(--gm); }
#new-spray-form .ne-t-no, #job-plan-form .ne-t-no, #job-board-page .ne-t-no { background: var(--ne-amber-l); color: var(--ne-amber); }
#new-spray-form .ne-t-for, #job-plan-form .ne-t-for, #job-board-page .ne-t-for { background: #e8f0fa; color: #1d5fa8; }
#new-spray-form .ne-basis, #job-plan-form .ne-basis { display: inline-flex; border: 1px solid var(--br); border-radius: 8px; overflow: hidden; }
#new-spray-form .ne-basis button, #job-plan-form .ne-basis button {
  border: 0; background: #fff; padding: 3px 8px; font-size: 11.5px; font-weight: 600; color: var(--tm);
  cursor: pointer; width: auto; margin: 0; border-radius: 0;
}
#new-spray-form .ne-basis button + button, #job-plan-form .ne-basis button + button { border-left: 1px solid var(--br); }
#new-spray-form .ne-basis button.on, #job-plan-form .ne-basis button.on { background: var(--gm); color: #fff; }
/* "Save these products as a mix ›": a small link, from two products */
#new-spray-form .ne-savemix, #job-plan-form .ne-savemix { display: inline-block; margin-top: 8px; font-size: 13px; font-weight: 600; color: var(--gm); text-decoration: none; }
#new-spray-form .ne-savemix:hover, #job-plan-form .ne-savemix:hover { text-decoration: underline; }

/* the bottom bar (step b): right under the cards, the card area's width;
   sticky, so on a long form it stays at the bottom of the screen while
   scrolling. On a phone it sticks on top of the bottom nav (--ne-nav-h, set
   by _neBarLayout). */
#new-spray-form .ne-bar, #job-plan-form .ne-bar {
  position: sticky; bottom: var(--ne-nav-h, 0px); z-index: 20; margin-top: 18px;
  display: flex; align-items: center; gap: 22px; flex-wrap: wrap;
  background: var(--sf); border: 1px solid var(--br); border-radius: 14px;
  padding: 12px 18px; box-shadow: 0 -4px 14px rgba(0, 0, 0, .06);
}
#new-spray-form .ne-bs, #job-plan-form .ne-bs { font-size: 13px; color: var(--tm); min-width: 0; }
#new-spray-form .ne-bs b, #job-plan-form .ne-bs b { display: block; color: var(--tx); font-size: 15px; white-space: nowrap; }
#new-spray-form .ne-bs b.ne-warn, #job-plan-form .ne-bs b.ne-warn { color: var(--ne-amber); cursor: help; }
#new-spray-form .ne-sp, #job-plan-form .ne-sp { flex: 1; }
#new-spray-form .ne-missing, #job-plan-form .ne-missing { font-size: 13px; color: var(--ne-amber); font-weight: 600; }
#new-spray-form .ne-missing:empty, #job-plan-form .ne-missing:empty { display: none; }
/* a long list never pushes Save off the row: one line, the full list on tap
   (.ne-full) or hover (title) */
@media (min-width: 700px) {
  #new-spray-form .ne-missing, #job-plan-form .ne-missing { flex: 1 1 0; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  #new-spray-form .ne-missing.ne-full, #job-plan-form .ne-missing.ne-full { white-space: normal; }
  #new-spray-form .ne-missing[title]:not([title=""]), #job-plan-form .ne-missing[title]:not([title=""]) { cursor: pointer; }
}
#new-spray-form .ne-draft, #job-plan-form .ne-draft { font-size: 12.5px; color: var(--tm); }
#new-spray-form .ne-save, #job-plan-form .ne-save {
  background: var(--gm); color: #fff; border: 0; border-radius: 10px; padding: 12px 26px;
  font-weight: 700; font-size: 15px; cursor: pointer; width: auto; margin: 0;
}
#new-spray-form .ne-save:disabled, #job-plan-form .ne-save:disabled { opacity: .45; cursor: default; }
@media (max-width: 699px) {
  #new-spray-form .ne-bar, #job-plan-form .ne-bar { gap: 6px 16px; padding: 10px 14px; margin-top: 14px; }
  #new-spray-form .ne-sp, #job-plan-form .ne-sp { display: none; }
  #new-spray-form .ne-missing, #new-spray-form .ne-draft, #job-plan-form .ne-missing, #job-plan-form .ne-draft { width: 100%; }
  #new-spray-form .ne-save, #job-plan-form .ne-save { width: 100%; }
}
/* the slim row is a phone's only (below) */
#new-spray-form .ne-sum, #job-plan-form .ne-sum { display: none; }
/* a phone: one slim row, REI / PHI (or 'N missing') and Save; tapping the
   left side opens the full bar above it (.ne-open, neBarToggle) and closes it */
@media (max-width: 599px) {
  #new-spray-form .ne-bar, #job-plan-form .ne-bar { gap: 8px 12px; padding: 7px 8px 7px 14px; min-height: 56px; box-sizing: border-box; }
  #new-spray-form .ne-sum, #job-plan-form .ne-sum {
    display: flex; align-items: center; gap: 6px; flex: 1; min-width: 0; order: 2; height: 40px;
    background: none; border: 0; padding: 0; margin: 0; text-align: left; cursor: pointer;
    font-size: 13px; color: var(--tx); width: auto; box-shadow: none;
  }
  #new-spray-form .ne-sum-t, #job-plan-form .ne-sum-t { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  #new-spray-form .ne-sum.ne-warn, #job-plan-form .ne-sum.ne-warn { color: var(--ne-amber); font-weight: 600; }
  #new-spray-form .ne-chev, #job-plan-form .ne-chev { color: var(--tm); font-size: 11px; transition: transform .15s; }
  #new-spray-form .ne-open .ne-chev, #job-plan-form .ne-open .ne-chev { transform: rotate(180deg); }
  #new-spray-form .ne-save, #job-plan-form .ne-save { order: 2; width: auto; height: 40px; padding: 0 18px; }
  #new-spray-form .ne-bar:not(.ne-open) .ne-bs, #new-spray-form .ne-bar:not(.ne-open) .ne-missing, #new-spray-form .ne-bar:not(.ne-open) .ne-draft, #job-plan-form .ne-bar:not(.ne-open) .ne-bs, #job-plan-form .ne-bar:not(.ne-open) .ne-missing, #job-plan-form .ne-bar:not(.ne-open) .ne-draft { display: none; }
  #new-spray-form .ne-open .ne-bs, #new-spray-form .ne-open .ne-missing, #new-spray-form .ne-open .ne-draft, #job-plan-form .ne-open .ne-bs, #job-plan-form .ne-open .ne-missing, #job-plan-form .ne-open .ne-draft { order: 1; }
}
/* keyboard open on a phone: only Missing and Save */
#new-spray-form.ne-kb .ne-bs, #new-spray-form.ne-kb .ne-draft, #job-plan-form.ne-kb .ne-bs, #job-plan-form.ne-kb .ne-draft { display: none; }
/* the bar shows REI end and earliest harvest from the save's own code; the old
   box under the products (product values, not each crop's confirmed ones) goes */
#new-spray-form #rei-info, #job-plan-form #rei-info { display: none !important; }
/* + Add product: a dashed drop-target under the products, as the mock */
#new-spray-form #f-add-product-btn, #job-plan-form #f-add-product-btn {
  background: var(--sf); color: var(--gm); border: 2px dashed var(--gb); box-shadow: none;
  border-radius: 10px; padding: 11px; font-weight: 700; margin-top: 2px;
}
#new-spray-form #f-add-product-btn:hover, #job-plan-form #f-add-product-btn:hover { background: var(--gl); }

/* Plan a job only (static/job-plan.js): the applicators and their sprayers, the
   bulk middles / assign bar, a card's applicator and its Odd / Even passes. */
#job-plan-form .jp-hint { font-size: 12.5px; color: var(--tm); margin-top: 8px; }
#job-plan-form .jp-person { display: grid; grid-template-columns: 26px minmax(0, 1fr) auto; align-items: center; gap: 4px 8px; padding: 7px 0; border-bottom: 1px solid var(--gb); }
#job-plan-form .jp-person:last-child { border-bottom: 0; }
#job-plan-form .jp-av { width: 26px; height: 26px; border-radius: 50%; background: var(--gm); color: #fff; display: grid; place-items: center; font-size: 12px; font-weight: 700; flex: none; }
#job-plan-form .jp-pn { flex: 1; min-width: 0; font-weight: 600; font-size: 14px; }
#job-plan-form .jp-pn small { display: block; font-weight: 400; font-size: 11.5px; color: var(--tm); }
/* the person's combo on its own line under the name, so a name never wraps */
#job-plan-form .jp-pcombo { grid-column: 2 / -1; font-size: 12.5px; color: var(--tx); display: flex; flex-wrap: wrap; gap: 4px 10px; }
#job-plan-form .jp-pcombo a { color: var(--gm); font-weight: 600; }
#job-plan-form .jp-dim { color: var(--tm); }
#job-plan-form .jp-combo { display: flex; align-items: center; gap: 8px; width: 100%; margin: 0; text-align: left; background: var(--sf); border: 1px solid var(--gb); border-radius: var(--rs); padding: 9px 11px; font: inherit; font-size: 14px; color: var(--tx); cursor: pointer; min-height: 42px; }
#job-plan-form .jp-combo span:first-child { flex: 1; min-width: 0; }
#job-plan-form .jp-combo-go { color: var(--gm); font-weight: 600; white-space: nowrap; }
#job-plan-form .jp-x { border: 0; background: none; color: var(--tm); font-size: 20px; line-height: 1; cursor: pointer; width: auto; padding: 0 4px; margin: 0; }
#job-plan-form #jp-add-person { width: auto; margin-top: 8px; font-size: 13px; padding: 6px 10px; color: var(--gm); font-weight: 600; }
#job-plan-form .jp-bulk { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin: 10px 0 0; font-size: 12px; color: var(--tm); }
#job-plan-form .jp-bl { font-weight: 600; }
#job-plan-form .jp-bl-r { margin-left: auto; }
#job-plan-form .jp-seg { display: inline-flex; border: 1px solid var(--gb); border-radius: var(--rs); overflow: hidden; }
#job-plan-form .jp-seg button { background: #fff; border: 0; border-right: 1px solid var(--gb); border-radius: 0; font-size: 12px; font-weight: 600; color: var(--tm); padding: 5px 11px; cursor: pointer; width: auto; margin: 0; }
#job-plan-form .jp-seg button:last-child { border-right: 0; }
#job-plan-form .jp-seg button.on { background: var(--gm); color: #fff; }
#job-plan-form #jp-assign-all { width: auto; font-size: 12px; padding: 4px 8px; }
#job-plan-form select.jp-who { width: auto; font-size: 12px; padding: 3px 6px; border: 1px solid var(--gb); border-radius: var(--rs); background: var(--sf); color: var(--tx); }
#job-plan-form .jp-split { font-size: 11px; color: var(--ne-amber); font-weight: 600; }
#job-plan-form .jp-passes { display: flex; gap: 12px; flex-wrap: wrap; width: 100%; font-size: 12px; color: var(--tm); }
#job-plan-form .jp-pass { display: inline-flex; align-items: center; gap: 6px; }
#job-plan-form .ne-bar .jp-save2 { background: #fff; color: var(--gm); border: 1px solid var(--gm); }
#job-plan-form .jp-btns { display: flex; gap: 8px; margin-left: auto; flex: none; }
#job-plan-form .jp-crew { flex: 1 1 0; }
#job-plan-form .jp-crew b { white-space: normal; }
@media (max-width: 699px) {
  #job-plan-form .jp-btns { width: 100%; }
  #job-plan-form .jp-btns .ne-save { flex: 1; width: auto; }
}
@media (max-width: 599px) {
  #job-plan-form .jp-btns { order: 3; }
  #job-plan-form .jp-btns .ne-save { padding: 0 8px; font-size: 14px; white-space: nowrap; }
}

/* Plan a job, Alt passes (mock-alt-passes.html): "Split halves", then Odd and Even each with a person */
#job-plan-form .jp-splitlink { font-size: 12.5px; font-weight: 600; color: var(--gm, #2d6a35); text-decoration: none; white-space: nowrap; }
#job-plan-form .jp-halves { flex-basis: 100%; display: grid; grid-template-columns: auto minmax(0, 1fr) auto minmax(0, 1fr); gap: 6px 8px; align-items: center; margin-top: 6px; }
#job-plan-form .jp-halves .jp-hl { font-size: 12px; font-weight: 700; color: var(--tm); }
#job-plan-form .jp-halves .jp-hv { font-size: 12px; color: var(--tm); }
#job-plan-form .jp-halves select.jp-who { width: 100%; }
@media (max-width: 420px) { #job-plan-form .jp-halves { grid-template-columns: auto minmax(0, 1fr); } }
.no-alt #job-plan-form .jp-splitlink, .no-alt #job-plan-form .jp-halves { display: none !important; }

/* New Entry logging a pass from the job board (app.js logFromJob) */
.ne-jobbanner { display: flex; align-items: center; gap: 10px; background: #eef6ec; border: 1px solid #b9d7b3; border-radius: var(--rs); padding: 10px 14px; margin-bottom: 10px; font-size: 13.5px; font-weight: 600; color: #1f4a28; }
.ne-jobbanner span { flex: 1; }
.ne-jobbanner button { flex: 0 0 auto; width: auto; margin: 0; background: #fff; border: 1px solid #2f6b3a; color: #2f6b3a; border-radius: var(--rs); padding: 6px 12px; font-size: 13px; font-weight: 600; cursor: pointer; }
