/* صفحات عملیاتی زنجیره: مرغداری‌ها (fm-)، جزئیات دوره (cy-)، برنامه‌ریزی (pl-)، لجستیک (lg-)، دامپزشکی (vt-)، حلقه‌ها (nd-)
   فقط توکن‌ها؛ بدون رنگ hex */

/* ================= مشترک ================= */
.fm-f { display: inline-flex; flex-direction: column; gap: 2px; min-width: 0; }
.fm-f > span { font-size: 11px; color: var(--ink-3); font-weight: 600; }
.fm-f select { height: 34px; border: 1px solid var(--line-strong); border-radius: var(--r-ctl); background: var(--bg-panel); padding: 0 8px; min-width: 120px; max-width: 100%; }
.fm-f select:focus { outline: 2px solid var(--focus); outline-offset: 0; }

/* ================= مرغداری‌ها ================= */
.fm-kpis { margin-bottom: var(--s4); }
.fm-filters { display: flex; flex-wrap: wrap; align-items: flex-end; gap: var(--s3); padding: var(--s3) var(--s4); background: var(--bg-sunken); border-radius: var(--r-card); margin-bottom: var(--s4); }
.fm-sw { height: 34px; font-size: var(--fs-sm); font-weight: 600; color: var(--ink-2); }
.fm-count { display: inline-flex; align-items: center; gap: 6px; font-size: var(--fs-sm); color: var(--ink-2); font-weight: 600; height: 34px; }
.fm-st { display: flex; flex-direction: column; gap: 3px; min-width: 120px; }
.fm-st .bar { width: 100%; max-width: 140px; }
.fm-sc { display: inline-flex; align-items: center; gap: 8px; line-height: 1.35; }
table.t tr.fm-crit td:first-child { box-shadow: inset -3px 0 0 var(--critical); }

.fm-cards { display: grid; gap: var(--s4); grid-template-columns: repeat(auto-fill, minmax(min(300px, 100%), 1fr)); }
.fm-card { position: relative; display: flex; flex-direction: column; gap: var(--s3); padding: var(--s4); background: var(--bg-panel); border: 1px solid var(--line); border-radius: var(--r-card); color: inherit; text-decoration: none !important; transition: border-color .15s, box-shadow .15s, transform .15s; overflow: hidden; }
.fm-card::before { content: ''; position: absolute; inset: 0 0 auto 0; height: 3px; background: var(--brand-soft); }
.fm-card.crit::before { background: var(--critical); }
.fm-card.ser::before { background: var(--serious); }
.fm-card:hover { border-color: var(--line-strong); box-shadow: var(--shadow-float); transform: translateY(-1px); }
.fm-c-top { display: flex; gap: var(--s3); align-items: flex-start; }
.fm-c-id { flex: 1; min-width: 0; }
.fm-c-name { font-weight: 800; font-size: 16px; line-height: 1.4; color: var(--ink); }
.fm-c-sub { font-size: var(--fs-xs); color: var(--ink-3); display: flex; align-items: center; gap: 4px; flex-wrap: wrap; }
.fm-c-chips { display: flex; gap: 4px; flex-wrap: wrap; margin-top: 6px; }
.fm-c-state { background: var(--bg-sunken); border-radius: var(--r-ctl); padding: 8px 10px; }
.fm-c-state .fm-st { flex-direction: row; flex-wrap: wrap; align-items: center; gap: 6px 10px; }
.fm-c-state .fm-st .bar { flex: 1 1 100%; max-width: none; }
.fm-fac { display: flex; align-items: flex-end; gap: 8px; flex-wrap: wrap; }
.fm-fac-g { display: inline-flex; gap: 3px; align-items: flex-end; }
.fm-fac-sep { width: 1px; height: 22px; background: var(--line); }
.fm-fac .faint { margin-inline-start: auto; }
.fm-house { width: 26px; height: 24px; border-radius: 5px; display: grid; place-items: center; background: var(--bg-sunken); color: var(--ink-3); }
.fm-house.on { background: var(--brand-soft); color: var(--brand-strong); }
.fm-silo { position: relative; width: 12px; height: 26px; border-radius: 6px 6px 3px 3px; background: var(--bg-sunken); border: 1px solid var(--line-strong); overflow: hidden; display: inline-block; }
.fm-silo i { position: absolute; bottom: 0; left: 0; right: 0; background: var(--sc-feed-ok); }
.fm-silo.low i { background: var(--sc-feed-bad); }
.fm-c-kpis { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.fm-c-kpis > div { padding: 8px 4px; display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.fm-c-kpis > div + div { border-inline-start: 1px solid var(--line); padding-inline-start: 10px; }
.fm-c-kpis span { font-size: 11px; color: var(--ink-3); white-space: nowrap; }
.fm-c-kpis b { font-size: 15px; font-variant-numeric: tabular-nums; }
.fm-c-kpis small { font-weight: 500; color: var(--ink-3); font-size: 11px; }
.fm-c-foot { display: flex; align-items: center; justify-content: space-between; gap: 8px; flex-wrap: wrap; font-size: var(--fs-xs); color: var(--ink-2); }
.fm-c-foot b { color: var(--ink); }

.fm-mapwrap { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); gap: var(--s4); align-items: start; }
.fm-schem { width: 100%; height: auto; display: block; background: var(--bg-sunken); border-radius: var(--r-ctl); }
.fm-gr { stroke: var(--chart-grid); stroke-width: 1; stroke-dasharray: 2 4; }
.fm-compass { fill: var(--ink-3); font-size: 11px; font-family: var(--font); }
.fm-bub { cursor: pointer; }
.fm-bub circle { fill: var(--brand-soft); stroke: var(--brand); stroke-width: 1.5; transition: fill .15s; }
.fm-bub circle.fm-bub-act { fill: var(--brand); stroke: none; opacity: .55; }
.fm-bub.al > circle:first-of-type { stroke: var(--critical); stroke-width: 2.5; }
.fm-bub:hover circle:first-of-type, .fm-bub:focus circle:first-of-type { fill: var(--bg-panel); }
.fm-bub:focus { outline: none; }
.fm-bub-n { font-family: var(--font); font-weight: 800; font-size: 14px; fill: var(--ink); }
.fm-bub-l { font-family: var(--font); font-weight: 600; font-size: 11px; fill: var(--ink-2); }
.fm-provs { display: grid; gap: var(--s3); grid-template-columns: repeat(auto-fill, minmax(min(240px, 100%), 1fr)); }
.fm-prov { background: var(--bg-panel); border: 1px solid var(--line); border-radius: var(--r-card); padding: var(--s3) var(--s4); display: flex; flex-direction: column; gap: 8px; }
.fm-prov.al { border-inline-start: 3px solid var(--serious); }
.fm-prov-h { display: flex; align-items: center; gap: 6px; }
.fm-prov-n { font-size: 22px; font-weight: 800; color: var(--brand-strong); font-variant-numeric: tabular-nums; }
.fm-stack { display: flex; height: 8px; border-radius: var(--r-pill); overflow: hidden; background: var(--bg-sunken); }
.fm-stack i, .fm-prov-lg i, .fm-map-legend i { display: block; }
.fm-stack i.active, .fm-prov-lg i.active, .fm-map-legend i.active { background: var(--brand); }
.fm-stack i.cleaning, .fm-prov-lg i.cleaning, .fm-map-legend i.cleaning { background: var(--warn); }
.fm-stack i.planned, .fm-prov-lg i.planned, .fm-map-legend i.planned { background: var(--info); }
.fm-prov-lg, .fm-map-legend { display: flex; flex-wrap: wrap; gap: 4px 12px; font-size: 11px; color: var(--ink-2); }
.fm-prov-lg span, .fm-map-legend span { display: inline-flex; align-items: center; gap: 4px; }
.fm-prov-lg i, .fm-map-legend i { width: 9px; height: 9px; border-radius: 50%; }
.fm-map-legend i.al { background: transparent; border: 2px solid var(--critical); }
.fm-map-legend { margin-bottom: var(--s2); }
.fm-prov-top { display: flex; flex-direction: column; gap: 2px; font-size: var(--fs-sm); border-top: 1px dashed var(--line); padding-top: 6px; }
.fm-prov .btn { align-self: flex-start; }
.fm-map { direction: ltr; height: min(620px, 70vh); border-radius: var(--r-card); border: 1px solid var(--line); overflow: hidden; background: var(--bg-sunken); }
.fm-map .leaflet-popup-content { direction: rtl; font-family: var(--font); margin: 10px 12px; }
.fm-mk { stroke: var(--bg-panel); }
.fm-mk.active { fill: var(--brand); }
.fm-mk.cleaning { fill: var(--warn); }
.fm-mk.planned { fill: var(--info); }
.fm-mk.al { stroke: var(--critical); }
.fm-pop { display: flex; flex-direction: column; gap: 4px; min-width: 190px; }
.fm-pop-r { display: flex; align-items: center; gap: 8px; font-size: var(--fs-xs); }
.fm-pop .btn { margin-top: 4px; color: var(--brand-ink); }

/* ================= جزئیات دوره ================= */
.cy-chips { display: flex; flex-wrap: wrap; gap: 6px 10px; align-items: center; margin-top: var(--s2); }
.cy-meta { display: inline-flex; align-items: center; gap: 4px; font-size: var(--fs-xs); color: var(--ink-2); flex-wrap: wrap; }
.cy-meta .chip { height: 20px; padding: 0 6px; }
.cy-alert { display: flex; align-items: center; gap: var(--s3); margin-bottom: var(--s3); flex-wrap: wrap; }
.cy-alert .callout { flex: 1 1 360px; }
.cy-alert.critical .callout { box-shadow: inset -4px 0 0 var(--critical); }
.cy-track-card { padding: var(--s4) var(--s5) var(--s3); margin-bottom: var(--s4); }
.cy-track-h { display: flex; align-items: center; gap: var(--s3); flex-wrap: wrap; margin-bottom: var(--s3); }
.cy-lg { display: inline-flex; align-items: center; gap: 4px; font-size: 11px; color: var(--ink-2); }
.cy-lg i { width: 10px; height: 10px; border-radius: 50%; display: inline-block; margin-inline-start: 8px; }
.cy-lg i.vac { background: var(--series-7); } .cy-lg i.vet { background: var(--brand); } .cy-lg i.ev { background: var(--warn); border-radius: 2px; }
.cy-track { position: relative; height: 78px; }
.cy-phases { position: absolute; top: 0; right: 0; left: 0; height: 18px; }
.cy-ph { position: absolute; top: 0; height: 18px; font-size: 10.5px; color: var(--ink-3); border-inline-start: 1px dashed var(--line-strong); padding-inline-start: 4px; white-space: nowrap; overflow: hidden; }
.cy-rail { position: absolute; top: 40px; right: 0; left: 0; height: 10px; background: var(--bg-sunken); border-radius: var(--r-pill); }
.cy-rail > i { position: absolute; top: 0; bottom: 0; right: 0; background: var(--brand); border-radius: var(--r-pill); }
.cy-ev { position: absolute; top: -3px; height: 16px; min-width: 6px; background: var(--warn); opacity: .85; border-radius: 3px; }
.cy-ev.crit { background: var(--critical); opacity: 1; }
.cy-mk { position: absolute; top: 18px; transform: translateX(50%); width: 20px; height: 20px; border-radius: 50%; display: grid; place-items: center; background: var(--bg-panel); border: 1.5px solid var(--line-strong); color: var(--ink-3); z-index: 1; }
.cy-mk .ic { width: 12px; height: 12px; }
.cy-mk.vac { top: 54px; border-color: var(--series-7); color: var(--series-7); }
.cy-mk.vac.done { background: var(--series-7); color: var(--ink-inverse); }
.cy-mk.vac.miss { border-color: var(--critical); color: var(--critical-ink); background: var(--critical-soft); }
.cy-mk.vet { border-color: var(--brand); color: var(--brand); }
.cy-mk.vet.al { border-color: var(--critical); color: var(--ink-inverse); background: var(--critical); }
.cy-mk.vet.plan { border-style: dashed; opacity: .75; }
.cy-today { position: absolute; top: 16px; bottom: 0; width: 2px; background: var(--ink); transform: translateX(50%); z-index: 2; }
.cy-today b { position: absolute; bottom: -18px; left: 50%; transform: translateX(-50%); font-size: 10px; background: var(--ink); color: var(--ink-inverse); padding: 0 6px; border-radius: var(--r-pill); white-space: nowrap; font-weight: 700; }
.cy-flag { position: absolute; top: 34px; transform: translateX(50%); width: 22px; height: 22px; border-radius: 6px; display: grid; place-items: center; background: var(--serious-soft); color: var(--serious-ink); border: 1.5px solid var(--serious); z-index: 1; }
.cy-flag .ic { width: 13px; height: 13px; }
.cy-track-x { display: flex; justify-content: space-between; font-size: 11px; color: var(--ink-3); margin-top: 22px; }
.cy-kpis { grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); }
.cy-tl { max-height: 640px; overflow-y: auto; padding-top: var(--s3); }
.cy-tl-d { display: inline-block; font-size: 11px; font-weight: 600; color: var(--ink-3); background: var(--bg-sunken); border-radius: var(--r-pill); padding: 0 8px; margin-inline-end: 6px; }
table.t tr.cy-spike td { background: var(--critical-soft); }
.cy-src { display: inline-flex; gap: 4px; flex-wrap: wrap; }
.cy-calc { padding: var(--s4) var(--s5); }
.cy-steps { list-style: none; margin: 0; padding: 0; counter-reset: none; }
.cy-step { display: grid; grid-template-columns: 30px minmax(0, 1fr) auto; gap: var(--s3); align-items: start; padding: 10px 0; border-bottom: 1px dashed var(--line); }
.cy-step-n { width: 26px; height: 26px; border-radius: 50%; background: var(--brand-soft); color: var(--brand-strong); display: grid; place-items: center; font-weight: 800; font-size: 12px; }
.cy-step-t { font-weight: 650; font-size: var(--fs-sm); }
.cy-step-f { font-size: var(--fs-xs); color: var(--ink-2); font-variant-numeric: tabular-nums; background: var(--bg-sunken); border-radius: 6px; padding: 2px 8px; display: inline-block; margin-top: 3px; }
.cy-step-v { text-align: left; font-variant-numeric: tabular-nums; white-space: nowrap; display: flex; flex-direction: column; align-items: flex-end; gap: 2px; }
.cy-net { display: flex; align-items: baseline; justify-content: space-between; gap: var(--s3); margin-top: var(--s3); padding: var(--s3) var(--s4); background: var(--brand-soft); border-radius: var(--r-ctl); }
.cy-net span { font-weight: 700; color: var(--brand-strong); }
.cy-net b { font-size: 22px; font-weight: 800; font-variant-numeric: tabular-nums; }
.cy-net.sm { background: var(--bg-sunken); padding: 8px 12px; }
.cy-net.sm span { color: var(--ink-2); }
.cy-net.sm b { font-size: 17px; }
.cy-err, .vt-err { color: var(--critical-ink); font-size: var(--fs-xs); min-height: 16px; margin-top: 6px; }

/* ================= دامپزشکی ================= */
.vt-ctx { display: flex; flex-wrap: wrap; gap: 6px; padding: 10px 12px; background: var(--bg-sunken); border-radius: var(--r-ctl); margin-bottom: var(--s4); }
.vt-form { display: flex; flex-direction: column; gap: var(--s4); }
.vt-form .seg { align-self: flex-start; }
.vt-score { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 6px; }
.vt-score button { border: 1.5px solid transparent; border-radius: var(--r-ctl); padding: 6px 4px; display: flex; flex-direction: column; align-items: center; gap: 0; line-height: 1.3; }
.vt-score button b { font-size: 18px; }
.vt-score button small { font-size: 11px; }
.vt-score .s1 { background: var(--critical-soft); color: var(--critical-ink); }
.vt-score .s2 { background: var(--serious-soft); color: var(--serious-ink); }
.vt-score .s3 { background: var(--warn-soft); color: var(--warn-ink); }
.vt-score .s4, .vt-score .s5 { background: var(--ok-soft); color: var(--ok-ink); }
.vt-score button.on { border-color: currentColor; box-shadow: 0 0 0 2px var(--bg-panel) inset; font-weight: 800; }
.vt-rec { display: grid; grid-template-columns: 24px minmax(0, 1fr) 110px; gap: 6px; align-items: center; margin-top: 6px; }
.vt-rec-n { width: 22px; height: 22px; border-radius: 50%; background: var(--bg-sunken); display: grid; place-items: center; font-size: 11px; font-weight: 700; color: var(--ink-2); }
.vt-rec .inp { height: 36px; }
.vt-verify { background: var(--ok-soft); border-radius: var(--r-ctl); padding: 10px 12px; align-items: flex-start; }
.vt-verify input { margin-top: 3px; }
.vt-main { align-items: start; }
.vt-cards { display: flex; flex-direction: column; gap: var(--s3); }
.vt-card { background: var(--bg-panel); border: 1px solid var(--line); border-radius: var(--r-card); padding: var(--s3) var(--s4); display: flex; flex-direction: column; gap: 10px; border-inline-start: 4px solid var(--line-strong); }
.vt-card.critical { border-inline-start-color: var(--critical); background: var(--bg-panel); box-shadow: 0 0 0 1px var(--critical-soft); }
.vt-card.serious { border-inline-start-color: var(--serious); }
.vt-card.warning { border-inline-start-color: var(--warn); }
.vt-card.info { border-inline-start-color: var(--info); }
.vt-c-h { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--s3); }
.vt-c-msg { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 4px; font-size: var(--fs-sm); }
.vt-c-msg li { display: flex; gap: 6px; align-items: flex-start; color: var(--ink-2); }
.vt-c-msg li .ic { margin-top: 3px; color: var(--ink-3); }
.vt-card.critical .vt-c-msg li:first-child .ic { color: var(--critical-ink); }
.vt-c-stats { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); background: var(--bg-sunken); border-radius: var(--r-ctl); }
.vt-c-stats > div { padding: 8px 10px; display: flex; flex-direction: column; min-width: 0; }
.vt-c-stats > div + div { border-inline-start: 1px solid var(--bg-panel); }
.vt-c-stats span { font-size: 11px; color: var(--ink-3); }
.vt-c-stats b { font-size: 17px; font-variant-numeric: tabular-nums; line-height: 1.3; }
.vt-c-stats small { font-size: 10.5px; color: var(--ink-3); }
.vt-c-sp .spark { margin-top: 2px; }
.vt-card.critical .vt-c-sp .spark path { stroke: var(--series-1); stroke-width: 2; }
.vt-c-f { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.vt-week { display: flex; flex-direction: column; gap: 0; background: var(--bg-panel); border: 1px solid var(--line); border-radius: var(--r-card); overflow: hidden; }
.vt-day { padding: 10px var(--s4); border-bottom: 1px solid var(--line); }
.vt-day:last-child { border-bottom: 0; }
.vt-day.today { background: var(--brand-soft); }
.vt-day-h { display: flex; align-items: center; gap: 8px; font-size: var(--fs-sm); }
.vt-cnt { display: inline-flex; align-items: center; gap: 2px; font-size: 11px; font-weight: 700; border-radius: var(--r-pill); padding: 0 7px; height: 20px; background: var(--bg-sunken); color: var(--ink-2); }
.vt-cnt .ic { width: 12px; height: 12px; }
.vt-cnt.visit, .vt-cnt.pre { background: var(--brand-soft); color: var(--brand-strong); }
.vt-day.today .vt-cnt { background: var(--bg-panel); }
.vt-cnt.vac { background: var(--info-soft); color: var(--bank-strong); }
.vt-pl { list-style: none; margin: 6px 0 0; padding: 0; display: flex; flex-direction: column; gap: 2px; }
.vt-pi { display: grid; grid-template-columns: 18px minmax(0, 1fr) auto; gap: 6px; align-items: center; font-size: var(--fs-xs); padding: 3px 0; }
.vt-pi .ic { color: var(--ink-3); }
.vt-pi.visit .ic, .vt-pi.pre .ic { color: var(--brand); }
.vt-pi.vac .ic { color: var(--series-7); }
.vt-pi-t { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.vt-pi-m { color: var(--ink-3); white-space: nowrap; }
.vt-more summary { cursor: pointer; font-size: 11px; color: var(--brand); margin-top: 4px; }
.vt-free { margin-top: 4px; display: flex; gap: 4px; align-items: center; }
.vt-reqs li .row { gap: 8px; }
.vt-heat { overflow-x: auto; }
.vt-heat .heat { min-width: 400px; }
.vt-find { display: inline-block; max-width: 340px; font-size: var(--fs-xs); color: var(--ink-2); }
.vt-dots { display: inline-flex; gap: 2px; }
.vt-dots i { width: 8px; height: 8px; border-radius: 50%; background: var(--bg-sunken); border: 1px solid var(--line-strong); }
.vt-dots i.on { border-color: transparent; background: var(--ok); }
.vt-dots.s1 i.on, .vt-dots.s2 i.on { background: var(--critical); }
.vt-dots.s3 i.on { background: var(--warn); }

/* ================= لجستیک ================= */
.lg-kanban { grid-template-columns: repeat(4, minmax(240px, 1fr)); padding-bottom: 4px; }
.lg-col { gap: 10px; }
.lg-col h4 { align-items: center; padding-bottom: 6px; border-bottom: 2px solid var(--line-strong); }
.lg-col h4 > span:first-child { display: inline-flex; align-items: center; gap: 6px; }
.lg-col.requested h4 { border-bottom-color: var(--ink-3); }
.lg-col.approved h4 { border-bottom-color: var(--info); }
.lg-col.dispatched h4 { border-bottom-color: var(--brand); }
.lg-col.delivered h4 { border-bottom-color: var(--ok); }
.lg-n { background: var(--bg-panel); border-radius: var(--r-pill); padding: 0 8px; font-size: 11px; color: var(--ink); }
.lg-late { display: flex; align-items: center; gap: 4px; font-size: 11px; font-weight: 700; color: var(--critical-ink); background: var(--critical-soft); border-radius: var(--r-ctl); padding: 4px 8px; }
.lg-empty { display: flex; flex-direction: column; align-items: center; gap: 4px; padding: var(--s5) 0; color: var(--ink-3); font-size: var(--fs-xs); border: 1.5px dashed var(--line-strong); border-radius: var(--r-ctl); }
.lg-more { display: flex; flex-direction: column; gap: 10px; }
.lg-more > summary { cursor: pointer; list-style: none; display: flex; align-items: center; justify-content: center; gap: 4px; font-size: var(--fs-xs); font-weight: 700; color: var(--brand-strong); background: var(--bg-panel); border: 1px dashed var(--line-strong); border-radius: var(--r-ctl); padding: 6px; }
.lg-more > summary::-webkit-details-marker { display: none; }
.lg-more[open] > summary { margin-bottom: 10px; }
.lg-card { gap: 8px; border-inline-start: 3px solid var(--ok); box-shadow: 0 1px 0 var(--line); }
.lg-card.sla-warn { border-inline-start-color: var(--warn); }
.lg-card.sla-critical { border-inline-start-color: var(--critical); }
.lg-col.delivered .lg-card { opacity: .88; }
.lg-c-top { display: flex; align-items: flex-start; gap: 8px; }
.lg-c-top .chip { margin-inline-start: auto; }
.lg-c-who { min-width: 0; flex: 1; }
.lg-c-who .kb-t { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--ink); }
.lg-ic { width: 32px; height: 32px; border-radius: var(--r-ctl); display: grid; place-items: center; flex: none; background: var(--bg-sunken); color: var(--ink-2); }
.lg-ic.feed { background: var(--brand-soft); color: var(--brand-strong); }
.lg-ic.chick { background: var(--warn-soft); color: var(--warn-ink); }
.lg-ic.vaccine { background: var(--info-soft); color: var(--bank-strong); }
.lg-ic.slaughter { background: var(--serious-soft); color: var(--serious-ink); }
.lg-qty { display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; font-size: 20px; font-weight: 800; font-variant-numeric: tabular-nums; line-height: 1.2; }
.lg-qty small { font-size: 12px; font-weight: 600; color: var(--ink-2); margin-inline-start: 3px; }
.lg-vac { font-size: var(--fs-xs); font-weight: 500; color: var(--ink-2); flex-basis: 100%; }
.lg-meta { display: flex; flex-direction: column; gap: 2px; font-size: var(--fs-xs); color: var(--ink-2); }
.lg-meta span { display: flex; align-items: center; gap: 5px; }
.lg-meta .ic { color: var(--ink-3); }
.lg-c-act { display: flex; align-items: center; gap: 4px; border-top: 1px dashed var(--line); padding-top: 8px; }
.lg-c-act .btn .ic { margin: 0; }
.lg-load { display: flex; align-items: center; gap: 8px; font-size: var(--fs-xs); font-weight: 700; font-variant-numeric: tabular-nums; }
.lg-load .bar { flex: 1; min-width: 40px; }
.lg-opts { display: grid; gap: var(--s3); grid-template-columns: repeat(auto-fill, minmax(min(240px, 100%), 1fr)); }
.lg-opt, .lg-date { text-align: right; display: flex; flex-direction: column; gap: 6px; padding: var(--s3); background: var(--bg-panel); border: 1.5px solid var(--line); border-radius: var(--r-card); position: relative; }
.lg-opt:hover, .lg-date:hover:not([disabled]) { border-color: var(--line-strong); background: var(--bg-hover); }
.lg-opt.on, .lg-date.on { border-color: var(--brand); box-shadow: 0 0 0 3px var(--brand-soft); }
.lg-opt .chip { align-self: flex-start; }
.lg-opt-h { display: flex; align-items: center; gap: 8px; }
.lg-opt-h .ic { color: var(--brand); }
.lg-dates { display: grid; gap: var(--s2); grid-template-columns: repeat(auto-fill, minmax(118px, 1fr)); }
.lg-date { gap: 2px; padding: 10px; }
.lg-date[disabled] { opacity: .5; cursor: not-allowed; background: var(--bg-sunken); }
.lg-date.rec { padding-top: 22px; }
.lg-rec { position: absolute; top: 0; right: 0; left: 0; font-style: normal; font-size: 10px; font-weight: 700; background: var(--brand-soft); color: var(--brand-strong); text-align: center; border-radius: 10px 10px 0 0; padding: 1px 0; }
.lg-stepper { display: flex; align-items: center; gap: var(--s3); flex-wrap: wrap; margin-bottom: var(--s4); }
.lg-stepper .lbl { font-weight: 700; font-size: var(--fs-sm); }
.lg-stepper .stepper-num { width: 180px; }
.lg-trucks { display: grid; gap: var(--s2); grid-template-columns: repeat(auto-fill, minmax(130px, 1fr)); }
.lg-truck { display: flex; flex-direction: column; align-items: center; gap: 2px; padding: var(--s3); border-radius: var(--r-card); background: var(--bg-sunken); text-align: center; }
.lg-truck .ic { color: var(--brand); width: 30px; height: 30px; }
.lg-phs { display: flex; flex-wrap: wrap; gap: 3px; }
.lg-phs span { font-size: 11px; background: var(--bg-sunken); border-radius: var(--r-pill); padding: 0 7px; white-space: nowrap; }
.lg-cover { display: flex; flex-direction: column; gap: 3px; min-width: 130px; font-size: var(--fs-xs); }
.lg-ready { display: grid; gap: var(--s3); grid-template-columns: repeat(auto-fill, minmax(min(320px, 100%), 1fr)); }
.lg-rd { background: var(--bg-panel); border: 1px solid var(--line); border-radius: var(--r-card); padding: var(--s3) var(--s4); display: flex; flex-direction: column; gap: 10px; }
.lg-rd.urgent { border-color: var(--warn); box-shadow: 0 0 0 2px var(--warn-soft); }
.lg-rd.done { background: var(--bg-sunken); border-color: transparent; }
.lg-rd-h { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.lg-rd-s { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 4px; }
.lg-rd-s > div { display: flex; flex-direction: column; }
.lg-rd-s span { font-size: 11px; color: var(--ink-3); }
.lg-rd-s b { font-size: 17px; font-variant-numeric: tabular-nums; }
.lg-rd-s small { font-size: 11px; color: var(--ink-3); }
.lg-rd-f { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; font-size: var(--fs-xs); color: var(--ink-2); border-top: 1px dashed var(--line); padding-top: 8px; }
.lg-vacs { display: grid; gap: var(--s3); grid-template-columns: repeat(auto-fill, minmax(min(300px, 100%), 1fr)); }
.lg-vc { display: flex; gap: var(--s3); align-items: flex-start; background: var(--bg-panel); border: 1px solid var(--line); border-radius: var(--r-card); padding: var(--s3) var(--s4); }
.lg-vc > .ic { color: var(--series-7); margin-top: 2px; }

/* ================= برنامه‌ریزی ================= */
.pl-caps .chart-card { gap: 6px; }
.pl-strip { display: flex; flex-direction: column; gap: 4px; margin-top: 4px; }
.pl-sr { display: grid; grid-template-columns: 82px minmax(0, 1fr); gap: 6px; align-items: center; }
.pl-sn { font-size: 11px; color: var(--ink-2); font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; line-height: 1.2; }
.pl-sn small { display: block; font-size: 10px; font-weight: 500; color: var(--ink-3); }
.pl-sc { display: grid; grid-template-columns: repeat(16, minmax(0, 1fr)); gap: 2px; direction: ltr; }
.pl-sc i, .pl-sl i { height: 14px; border-radius: 3px; display: grid; place-items: center; font-style: normal; font-size: 10px; font-weight: 800; color: var(--ink-inverse); background: var(--bg-sunken); }
.pl-sc i.lo, .pl-sl i.lo { background: var(--ok-soft); }
.pl-sc i.mid, .pl-sl i.mid { background: var(--ok); opacity: .55; }
.pl-sc i.hi, .pl-sl i.hi { background: var(--warn); }
.pl-sc i.over, .pl-sl i.over { background: var(--serious); }
.pl-sc i.now { outline: 1.5px solid var(--ink); outline-offset: 0; }
.pl-sl { display: flex; flex-wrap: wrap; gap: 2px 10px; font-size: 10.5px; color: var(--ink-3); margin-top: 2px; }
.pl-sl span { display: inline-flex; align-items: center; gap: 3px; }
.pl-sl i { width: 12px; height: 10px; font-size: 8px; }
.pl-flags .callout .chip { margin: 2px 0; }
.pl-legend { display: flex; flex-wrap: wrap; gap: 4px 16px; font-size: var(--fs-xs); color: var(--ink-2); margin-bottom: var(--s3); }
.pl-legend span { display: inline-flex; align-items: center; gap: 5px; }
.pl-legend i { display: inline-block; width: 22px; height: 10px; border-radius: var(--r-pill); }
.pl-legend i.closed { background: var(--bg-sunken); border: 1px solid var(--line-strong); }
.pl-legend i.active { background: var(--brand-soft); border: 1px solid var(--brand); box-shadow: inset 0 -3px 0 var(--brand); }
.pl-legend i.planned { background: var(--info-soft); border: 1.5px dashed var(--info); }
.pl-legend i.clean { background: repeating-linear-gradient(45deg, var(--warn-soft) 0 3px, var(--bg-panel) 3px 6px); border: 1px solid var(--warn); }
.pl-legend i.today { width: 2px; height: 14px; border-radius: 0; background: var(--critical); }
.pl-gcard { overflow: hidden; }
.pl-scroll { overflow: auto; max-height: 660px; }
.pl-gantt { display: grid; grid-template-columns: 190px minmax(860px, 1fr); }
.pl-corner, .pl-head { position: sticky; top: 0; z-index: 4; background: var(--bg-sunken); border-bottom: 1px solid var(--line-strong); height: 50px; }
.pl-corner { right: 0; z-index: 6; display: flex; align-items: flex-end; padding: 0 var(--s3) 8px; font-size: var(--fs-xs); font-weight: 700; color: var(--ink-2); border-inline-end: 1px solid var(--line); gap: 4px; }
.pl-head { position: sticky; }
.pl-months, .pl-weeks { position: absolute; right: 0; left: 0; }
.pl-months { top: 0; height: 24px; }
.pl-weeks { top: 24px; height: 26px; }
.pl-months span { position: absolute; top: 0; height: 24px; display: flex; align-items: center; padding-inline-start: 8px; font-size: 11.5px; font-weight: 700; color: var(--ink); border-inline-start: 1px solid var(--line-strong); white-space: nowrap; overflow: hidden; }
.pl-wk { position: absolute; top: 0; height: 26px; display: flex; align-items: center; justify-content: center; gap: 2px; font-size: 11px; color: var(--ink-3); border-inline-start: 1px solid var(--line); }
.pl-wk.over { background: var(--serious-soft); color: var(--serious-ink); font-weight: 700; }
.pl-wk .ic { width: 12px; height: 12px; }
.pl-lab { position: sticky; right: 0; z-index: 3; background: var(--bg-panel); border-bottom: 1px solid var(--line); border-inline-end: 1px solid var(--line); height: 38px; padding: 2px var(--s3); display: flex; flex-direction: column; justify-content: center; line-height: 1.3; min-width: 0; }
.pl-lab a { font-size: var(--fs-sm); font-weight: 650; color: var(--ink); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pl-lab span { font-size: 10.5px; color: var(--ink-3); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pl-trk { position: relative; height: 38px; border-bottom: 1px solid var(--line); background-image: repeating-linear-gradient(to left, var(--line) 0 1px, transparent 1px calc(100% / 16)); }
.pl-gantt > .pl-lab:hover, .pl-gantt > .pl-lab:hover + .pl-trk { background-color: var(--bg-hover); }
.pl-today { position: absolute; top: 0; bottom: 0; width: 2px; background: var(--critical); transform: translateX(50%); z-index: 2; opacity: .8; pointer-events: none; }
.pl-today.h { top: auto; bottom: 0; height: 26px; opacity: 1; }
.pl-today.h b { position: absolute; top: -21px; left: 50%; transform: translateX(-50%); background: var(--critical); color: var(--ink-inverse); font-size: 10px; padding: 0 6px; border-radius: var(--r-pill); white-space: nowrap; }
.pl-bar { position: absolute; top: 7px; height: 24px; border-radius: var(--r-pill); display: flex; align-items: center; gap: 4px; padding: 0 9px; font-size: 11px; font-weight: 650; overflow: hidden; white-space: nowrap; text-decoration: none !important; z-index: 1; min-width: 6px; border: 1px solid transparent; font-family: inherit; line-height: 1; }
.pl-bar span { position: relative; z-index: 1; overflow: hidden; text-overflow: ellipsis; display: inline-flex; align-items: center; gap: 3px; }
.pl-bar .ic { width: 12px; height: 12px; flex: none; position: relative; z-index: 1; }
.pl-bar.closed { background: var(--bg-sunken); border-color: var(--line-strong); color: var(--ink-2); }
.pl-bar.closed:hover { background: var(--bg-hover); color: var(--ink); }
.pl-bar.active { background: var(--brand-soft); border-color: var(--brand); color: var(--brand-deep); }
.pl-bar.active > i { position: absolute; bottom: 0; right: 0; height: 4px; background: var(--brand); }
.pl-bar.active:hover { box-shadow: 0 0 0 2px var(--brand-soft); }
.pl-bar.planned { background: var(--info-soft); border: 1.5px dashed var(--info); color: var(--bank-strong); cursor: grab; touch-action: none; }
.pl-bar.planned:hover, .pl-bar.planned:focus-visible { background: var(--bg-panel); border-style: solid; }
.pl-bar.drag { cursor: grabbing; box-shadow: var(--shadow-float); z-index: 5; opacity: .92; }
.pl-bar.cs { border-start-start-radius: 0; border-end-start-radius: 0; border-inline-start-style: none; }
.pl-bar.ce { border-start-end-radius: 0; border-end-end-radius: 0; border-inline-end-style: none; }
.pl-clean { position: absolute; top: 15px; height: 8px; border-radius: var(--r-pill); background: repeating-linear-gradient(45deg, var(--warn-soft) 0 3px, transparent 3px 6px); border: 1px solid var(--warn); opacity: .9; }
.pl-shift { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; justify-content: center; margin-bottom: var(--s4); }
.pl-nd { display: flex; flex-direction: column; align-items: center; min-width: 180px; padding: 6px 14px; background: var(--brand-soft); border-radius: var(--r-ctl); }
.pl-nd b { font-size: 16px; }
.pl-info .kv { margin-bottom: var(--s3); }
.pl-lb { display: flex; align-items: center; gap: 8px; min-width: 140px; }
.pl-lb .bar { flex: 1; }
.pl-lb b { font-size: var(--fs-xs); font-variant-numeric: tabular-nums; }
.pl-fi { display: flex; gap: var(--s4); align-items: center; background: var(--bg-sunken); border-radius: var(--r-card); padding: var(--s3) var(--s4); }
.pl-fi > div { flex: 1; min-width: 0; }
.pl-cal { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 4px; max-width: 520px; }
.pl-cal-h { text-align: center; font-size: 11px; color: var(--ink-3); font-weight: 700; padding-bottom: 2px; }
.pl-cal-d { height: 44px; border-radius: var(--r-ctl); border: 1px solid var(--line); background: var(--ok-soft); display: flex; flex-direction: column; align-items: center; justify-content: center; line-height: 1.1; padding: 0; }
.pl-cal-d b { font-size: 14px; }
.pl-cal-d small { font-size: 9.5px; color: var(--ink-2); }
.pl-cal-d.hi { background: var(--warn-soft); }
.pl-cal-d.over { background: var(--serious-soft); color: var(--serious-ink); }
.pl-cal-d[disabled] { background: transparent; color: var(--ink-3); opacity: .5; cursor: not-allowed; border-style: dashed; }
.pl-cal-d.m1 { border-inline-start: 2px solid var(--ink-3); }
.pl-cal-d.on { background: var(--brand); color: var(--brand-ink); border-color: var(--brand); }
.pl-cal-d.on small { color: var(--brand-ink); }
.pl-cal-d:hover:not([disabled]):not(.on) { border-color: var(--brand); }
.pl-cal-lg { display: flex; gap: 12px; font-size: 11px; color: var(--ink-2); margin-top: 6px; flex-wrap: wrap; }
.pl-cal-lg span { display: inline-flex; gap: 4px; align-items: center; }
.pl-cal-lg i { width: 12px; height: 12px; border-radius: 3px; background: var(--ok-soft); border: 1px solid var(--line); }
.pl-cal-lg i.hi { background: var(--warn-soft); } .pl-cal-lg i.over { background: var(--serious-soft); }
.pl-sel { font-size: var(--fs-sm); }

/* ================= حلقه‌ها ================= */
.nd-cards { display: grid; gap: var(--s4); grid-template-columns: repeat(auto-fill, minmax(min(280px, 100%), 1fr)); }
.nd-card { background: var(--bg-panel); border: 1px solid var(--line); border-radius: var(--r-card); padding: var(--s4); display: flex; flex-direction: column; gap: 10px; position: relative; overflow: hidden; }
.nd-card.own { border-top: 3px solid var(--brand); }
.nd-card:not(.own):not(.nd-inv) { border-top: 3px solid var(--info); }
.nd-c-h { display: flex; align-items: flex-start; gap: 10px; flex-wrap: wrap; }
.nd-c-h > div { min-width: 0; }
.nd-c-ic { width: 40px; height: 40px; border-radius: var(--r-ctl); display: grid; place-items: center; background: var(--brand-soft); color: var(--brand-strong); flex: none; }
.nd-card:not(.own) .nd-c-ic { background: var(--info-soft); color: var(--bank-strong); }
.nd-inv { background: var(--bg-sunken); border-color: transparent; }
.nd-inv .nd-c-ic { background: var(--bg-panel); color: var(--warn-ink); }
.nd-inv-v { display: flex; align-items: baseline; gap: 8px; font-size: var(--fs-sm); flex-wrap: wrap; }
.nd-inv-v b { font-size: 20px; font-variant-numeric: tabular-nums; }
.nd-lb { display: flex; align-items: center; gap: 8px; }
.nd-lb .bar { flex: 1; }
.nd-lb b { font-size: var(--fs-xs); font-variant-numeric: tabular-nums; min-width: 34px; text-align: left; }
.nd-batches { display: grid; gap: var(--s3); grid-template-columns: repeat(auto-fill, minmax(min(300px, 100%), 1fr)); }
.nd-batch { background: var(--bg-panel); border: 1px solid var(--line); border-radius: var(--r-card); padding: var(--s3) var(--s4); display: flex; flex-direction: column; gap: 8px; }
.nd-batch.bad { border-inline-start: 3px solid var(--critical); }
.nd-b-h { display: flex; align-items: flex-start; gap: 10px; }
.nd-b-ic { width: 34px; height: 34px; border-radius: 50%; display: grid; place-items: center; background: var(--warn-soft); color: var(--warn-ink); flex: none; }
.nd-b-s { display: flex; flex-wrap: wrap; gap: 4px 14px; font-size: var(--fs-xs); color: var(--ink-2); }
.nd-b-s b { color: var(--ink); font-size: var(--fs-sm); }
.nd-trace { background: var(--bg-sunken); border-radius: var(--r-ctl); padding: 8px 10px; }
.nd-trace ul { list-style: none; margin: 4px 0 0; padding: 0 14px 0 0; border-inline-start: 2px solid var(--line-strong); display: flex; flex-direction: column; gap: 2px; }
.nd-trace li { display: flex; justify-content: space-between; gap: 8px; font-size: var(--fs-xs); position: relative; }
.nd-trace li::before { content: ''; position: absolute; right: -15px; top: 9px; width: 10px; height: 2px; background: var(--line-strong); }
.nd-forms { display: grid; gap: var(--s3); grid-template-columns: repeat(auto-fill, minmax(min(230px, 100%), 1fr)); }
.nd-form { background: var(--bg-panel); border: 1px solid var(--line); border-radius: var(--r-card); padding: var(--s4); display: flex; flex-direction: column; gap: 8px; }
.nd-form-h { display: flex; justify-content: space-between; align-items: baseline; gap: 6px; }
.nd-form-h b { font-size: 15px; }
.nd-form-p { font-size: 26px; font-weight: 800; font-variant-numeric: tabular-nums; line-height: 1.2; color: var(--brand-strong); }
.nd-form-p small { font-size: 12px; font-weight: 600; color: var(--ink-2); margin-inline-start: 4px; }
.nd-mix { display: flex; height: 10px; border-radius: var(--r-pill); overflow: hidden; background: var(--bg-sunken); }
.nd-mix i, .nd-mix-l i { display: block; }
.nd-mix i.corn, .nd-mix-l i.corn { background: var(--series-4); }
.nd-mix i.soy, .nd-mix-l i.soy { background: var(--series-6); }
.nd-mix i.oth, .nd-mix-l i.oth { background: var(--line-strong); }
.nd-mix-l { display: flex; flex-wrap: wrap; gap: 2px 10px; font-size: 11px; color: var(--ink-2); }
.nd-mix-l span { display: inline-flex; align-items: center; gap: 4px; }
.nd-mix-l i { width: 9px; height: 9px; border-radius: 2px; }
.nd-sched-card { overflow: hidden; }
.nd-sched { overflow-x: auto; padding: var(--s3); }
.nd-sh { display: grid; grid-template-columns: 170px repeat(7, minmax(112px, 1fr)); gap: 4px; min-width: 960px; }
.nd-sh-d { text-align: center; padding: 6px 4px; border-radius: var(--r-ctl); background: var(--bg-sunken); display: flex; flex-direction: column; font-size: var(--fs-xs); }
.nd-sh-d b { font-size: var(--fs-sm); }
.nd-sh-d.off { opacity: .55; }
.nd-sh-k { display: flex; flex-direction: column; gap: 4px; justify-content: center; padding: 6px 8px; font-size: var(--fs-sm); }
.nd-sh-k .chip { align-self: flex-start; }
.nd-sh-x { border: 1px solid var(--line); border-radius: var(--r-ctl); padding: 8px; display: flex; flex-direction: column; gap: 4px; min-height: 104px; background: var(--bg-panel); }
.nd-sh-x.off { background: repeating-linear-gradient(45deg, var(--bg-sunken) 0 6px, var(--bg-panel) 6px 12px); align-items: center; justify-content: center; color: var(--ink-3); font-size: var(--fs-xs); }
.nd-sh-x.empty { align-items: center; justify-content: center; color: var(--ink-3); background: var(--bg-sunken); border-color: transparent; }
.nd-sh-x.over { border-color: var(--serious); background: var(--serious-soft); }
.nd-sh-n { font-size: 17px; font-weight: 800; font-variant-numeric: tabular-nums; line-height: 1.2; }
.nd-sh-n small { font-size: 10.5px; font-weight: 600; color: var(--ink-3); margin-inline-start: 3px; }
.nd-sh-x ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 1px; font-size: 11px; }
.nd-sh-x li { padding-inline-start: 8px; position: relative; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.nd-sh-x li::before, .nd-sh-lg i { content: ''; position: absolute; right: 0; top: 7px; width: 5px; height: 5px; border-radius: 50%; background: var(--ink-3); }
.nd-sh-x li.booked::before, .nd-sh-lg i.booked { background: var(--brand); }
.nd-sh-x li.req::before, .nd-sh-lg i.req { background: var(--warn); }
.nd-sh-x li.fc::before, .nd-sh-lg i.fc { background: transparent; border: 1px dashed var(--ink-3); }
.nd-sh-x li.fc a { color: var(--ink-2); font-style: italic; }
.nd-sh-x li.faint::before { display: none; }
.nd-sh-lg { display: flex; gap: 14px; font-size: 11px; color: var(--ink-2); padding: 8px var(--s3) 0; flex-wrap: wrap; }
.nd-sh-lg span { display: inline-flex; align-items: center; gap: 5px; }
.nd-sh-lg i { position: static; display: inline-block; width: 8px; height: 8px; }
.nd-yield-tools { margin-bottom: var(--s2); }

/* ================= واکنش‌گرا ================= */
@media (max-width: 1024px) {
  .fm-mapwrap { grid-template-columns: minmax(0, 1fr); }
  .vt-c-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .vt-c-stats > div:nth-child(3) { border-inline-start: 0; }
}
@media (max-width: 768px) {
  .fm-filters { padding: var(--s3); gap: var(--s2); }
  .fm-f { flex: 1 1 140px; }
  .fm-f select { width: 100%; min-width: 0; }
  .fm-count { flex-basis: 100%; height: auto; }
  .fm-c-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .fm-c-kpis > div:nth-child(3) { border-inline-start: 0; padding-inline-start: 4px; }
  .cy-track-card { padding: var(--s3); }
  .cy-ph { font-size: 9px; }
  .cy-step { grid-template-columns: 26px minmax(0, 1fr); }
  .cy-step-v { grid-column: 2; align-items: flex-start; }
  .cy-calc { padding: var(--s3); }
  .vt-rec { grid-template-columns: 22px minmax(0, 1fr) 92px; }
  .vt-score small { font-size: 9.5px; }
  .lg-rd-s { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .pl-gantt { grid-template-columns: 130px minmax(820px, 1fr); }
  .pl-sr { grid-template-columns: 64px minmax(0, 1fr); }
  .nd-form-p { font-size: 22px; }
}
@media (max-width: 420px) {
  .vt-c-stats b, .lg-rd-s b { font-size: 15px; }
  .lg-stepper .stepper-num { width: 150px; }
}
@media print {
  .pl-scroll, .cy-tl { max-height: none; overflow: visible; }
  .fm-filters, .lg-c-act, .vt-c-f .btn { display: none; }
}
