/* =============================================================================
   BAJ Royal Farm — Feed Management Module — scoped design system
   -----------------------------------------------------------------------------
   SELF-CONTAINED, THEME-INDEPENDENT. The module renders under `.feed-module`
   (aka `.bfeed`). It defines its OWN colour tokens with fixed values (it does
   NOT inherit --card/--fg/--soft from the global dashboard theme), and forces
   explicit colours on every text element so nothing picks up a low-contrast
   colour from the global stylesheet. All pairs meet WCAG AA (>=4.5:1 body).
   ============================================================================= */
.feed-module{
  /* --- design tokens (reusable variables) --- */
  --fm-bg:#f6f8fa;            /* module surface */
  --fm-card:#ffffff;          /* cards / panels / rows */
  --fm-row-alt:#f3f6f9;       /* zebra stripe */
  --fm-hover:#fff6e8;         /* row hover (gold tint) */
  --fm-text:#16202e;          /* primary text   ~14.8:1 on #fff */
  --fm-text-2:#3b4757;        /* secondary text ~9:1 */
  --fm-muted:#606b7b;         /* muted text     ~5.4:1 */
  --fm-placeholder:#7d8a99;   /* placeholder (distinct, lighter than text) */
  --fm-border:#e1e6ec;        /* borders */
  --fm-border-strong:#cbd3dd;
  --fm-th-bg:#0c3b2e;         /* table header (BAJ green) */
  --fm-th-fg:#f2e6c4;         /* table header text (gold, high contrast) */
  --fm-input-bg:#ffffff;
  --fm-input-border:#c6cfda;
  --fm-gold:#c8923a;          /* brand accent (backgrounds) */
  --fm-gold-ink:#20160a;      /* text on gold */
  --fm-gold-text:#8a5a12;     /* gold used as TEXT (AA on white) */
  --fm-green:#0c3b2e;
  --fm-ok-bg:#dcfce7;   --fm-ok-fg:#12522b;
  --fm-warn-bg:#fef3c7; --fm-warn-fg:#7c3a06;
  --fm-crit-bg:#fee2e2; --fm-crit-fg:#8f1414;
  --fm-shadow:0 1px 3px rgba(16,32,46,.08),0 1px 2px rgba(16,32,46,.04);

  background:var(--fm-bg);
  color:var(--fm-text);
  font-family:inherit;
  font-size:14px; line-height:1.45;
  padding:16px; border-radius:14px;
  -webkit-font-smoothing:antialiased;
}
.feed-module, .feed-module *{ box-sizing:border-box; }
/* Force readable text on ALL descendants (defeats global-theme inheritance). */
.feed-module, .feed-module p, .feed-module span, .feed-module div, .feed-module b, .feed-module em, .feed-module label, .feed-module td, .feed-module li, .feed-module h1, .feed-module h2, .feed-module h3{ color:var(--fm-text); }

/* ---------------- header ---------------- */
.bfeed-head{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:10px;margin-bottom:14px}
.bfeed-title{font-size:20px;font-weight:800;color:var(--fm-text)}
.bfeed-title em{font-weight:600;color:var(--fm-muted);font-style:normal;font-size:13px}
.bfeed-logo{margin-right:4px}
.bfeed-headtools{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.bfeed-role{font-size:12px;color:var(--fm-muted)}
.bfeed-role b{color:var(--fm-text-2)}
.bfeed-crumb{font-size:12px;color:var(--fm-muted);font-weight:600;margin-bottom:10px}

/* ---------------- nav tabs ---------------- */
.bfeed-nav{display:flex;flex-wrap:wrap;gap:6px;border-bottom:1px solid var(--fm-border);padding-bottom:10px;margin-bottom:16px}
.bfeed-tab{border:1px solid var(--fm-border-strong);background:var(--fm-card);color:var(--fm-text-2);border-radius:20px;padding:7px 15px;font-size:13px;font-weight:600;cursor:pointer;transition:all .12s}
.bfeed-tab:hover{border-color:var(--fm-gold);color:var(--fm-text)}
.bfeed-tab.on{background:var(--fm-green);color:var(--fm-th-fg);border-color:var(--fm-green)}

/* ---------------- toolbar / search / buttons ---------------- */
.bfeed-toolbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:14px}
.bfeed-search,.bfeed-gsearch{flex:1;min-width:180px;padding:9px 12px;border:1px solid var(--fm-input-border);border-radius:9px;background:var(--fm-input-bg);color:var(--fm-text);font:inherit}
.bfeed-search::placeholder,.bfeed-gsearch::placeholder{color:var(--fm-placeholder)}
.bfeed-search:focus,.bfeed-gsearch:focus{outline:none;border-color:var(--fm-gold);box-shadow:0 0 0 3px rgba(200,146,58,.18)}
.bfeed-note{font-size:13px;color:var(--fm-muted)}
.bfeed-btn{border:none;border-radius:9px;padding:9px 15px;font-weight:700;font-size:13px;cursor:pointer;line-height:1}
.bfeed-btn.gold{background:var(--fm-gold);color:var(--fm-gold-ink)}
.bfeed-btn.gold:hover{background:#b47e1f}
.bfeed-btn.ghost{background:var(--fm-card);border:1px solid var(--fm-border-strong);color:var(--fm-text)}
.bfeed-btn.ghost:hover{border-color:var(--fm-gold);color:var(--fm-text)}

/* ---------------- tables (zebra, hover, sticky header, spacing) ---------------- */
.bfeed-table{width:100%;border-collapse:separate;border-spacing:0;font-size:13px;background:var(--fm-card);border:1px solid var(--fm-border);border-radius:12px;overflow:hidden;box-shadow:var(--fm-shadow)}
.bfeed-table thead th{position:sticky;top:0;z-index:2;background:var(--fm-th-bg);color:var(--fm-th-fg);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;text-align:left;padding:11px 14px;border-bottom:2px solid rgba(0,0,0,.15);white-space:nowrap}
.bfeed-table tbody td{padding:11px 14px;color:var(--fm-text);border-bottom:1px solid var(--fm-border);vertical-align:middle}
.bfeed-table tbody tr:nth-child(even) td{background:var(--fm-row-alt)}
.bfeed-table tbody tr:hover td{background:var(--fm-hover)}
.bfeed-table tbody tr:last-child td{border-bottom:none}
.bfeed-table td b{color:var(--fm-text)}
.bfeed-empty{text-align:center;color:var(--fm-muted);padding:26px !important;font-style:italic}
.bfeed-actions{white-space:nowrap;text-align:right}
.bfeed-mini{border:1px solid var(--fm-border-strong);background:var(--fm-card);color:var(--fm-text-2);border-radius:7px;padding:5px 10px;font-size:12px;font-weight:600;cursor:pointer;margin-left:5px}
.bfeed-mini:hover{border-color:var(--fm-gold);color:var(--fm-text)}
.bfeed-mini.danger{color:#a01919;border-color:#f0a3a3}
.bfeed-mini.danger:hover{background:#fee2e2;color:#7a1010}
.bfeed-mini:disabled{opacity:.45;cursor:not-allowed}
.bfeed-pager{display:flex;justify-content:space-between;align-items:center;margin-top:10px;font-size:12px;color:var(--fm-muted)}
.bfeed-pageinfo{color:var(--fm-text-2);font-weight:600}

/* ---------------- badges / pills ---------------- */
.bpill{display:inline-block;padding:3px 9px;border-radius:12px;font-size:11px;font-weight:700;background:#eef1f5;color:var(--fm-text-2)}
.bpill.on{background:var(--fm-ok-bg);color:var(--fm-ok-fg)}
.bpill.warn{background:var(--fm-warn-bg);color:var(--fm-warn-fg)}
.bpill.crit{background:var(--fm-crit-bg);color:var(--fm-crit-fg)}

/* ---------------- KPI cards ---------------- */
.bfeed-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(155px,1fr));gap:12px;margin-bottom:16px}
.bfeed-kpi{background:var(--fm-card);border:1px solid var(--fm-border);border-radius:12px;padding:14px;box-shadow:var(--fm-shadow)}
.bfeed-kpi.gold{border-color:var(--fm-gold);background:linear-gradient(135deg,#fff8ec,var(--fm-card))}
.bfeed-kpi.warn{border-color:#e5a13a}.bfeed-kpi.crit{border-color:#dc6b6b}
.bfeed-kpi-v{font-size:21px;font-weight:800;color:var(--fm-text);line-height:1.2}
.bfeed-kpi-l{font-size:12px;color:var(--fm-muted);margin-top:3px;font-weight:600}

/* ---------------- alerts / notifications ---------------- */
.bfeed-alerts{background:var(--fm-card);border:1px solid #f0a3a3;border-radius:12px;padding:12px;margin-bottom:16px;box-shadow:var(--fm-shadow)}
.bfeed-alerts-hd{font-weight:800;color:var(--fm-crit-fg);margin-bottom:6px}
.bfeed-alert{padding:7px 10px;border-radius:8px;font-size:13px;margin-top:5px;color:var(--fm-text)}
.bfeed-alert.warn{background:var(--fm-warn-bg);color:var(--fm-warn-fg)}
.bfeed-alert.crit{background:var(--fm-crit-bg);color:var(--fm-crit-fg)}
.bfeed-alert b{color:inherit}

/* ---------------- panels / cards / charts / program ---------------- */
.bfeed-chartwrap,.bfeed-progcard,.bfeed-panel{background:var(--fm-card);border:1px solid var(--fm-border);border-radius:12px;padding:14px;margin-bottom:14px;box-shadow:var(--fm-shadow)}
.bfeed-chart-hd,.bfeed-proghd{font-weight:800;margin-bottom:10px;display:flex;justify-content:space-between;align-items:center;gap:10px;color:var(--fm-text)}
.bfeed-progcost{font-size:12px;color:var(--fm-gold-text);font-weight:700}
.bfeed-bars{display:flex;flex-direction:column;gap:6px}
.bfeed-bar{position:relative;height:26px;background:#eef1f5;border-radius:6px;overflow:hidden}
.bfeed-bar-fill{position:absolute;left:0;top:0;bottom:0;background:var(--fm-gold);opacity:.35}
.bfeed-bar-lbl{position:relative;padding:4px 9px;font-size:12px;font-weight:600;color:var(--fm-text)}
.bfeed-panels{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px;margin-top:14px}
.bfeed-panel-hd{font-weight:800;font-size:13px;margin-bottom:8px;color:var(--fm-text)}
.bfeed-panel-row{font-size:13px;padding:6px 0;border-top:1px solid var(--fm-border);color:var(--fm-text-2)}
.bfeed-panel-row:first-of-type{border-top:none}
.bfeed-best td{background:#e9f8ef !important}
.bfeed-reports{display:flex;flex-wrap:wrap;gap:10px}

/* ---------------- activity timeline ---------------- */
.bfeed-timeline{display:flex;flex-direction:column;gap:4px}
.bfeed-tl-row{display:flex;align-items:center;gap:10px;padding:9px 12px;border-left:3px solid var(--fm-gold);background:var(--fm-card);border:1px solid var(--fm-border);border-left-width:3px;border-radius:0 9px 9px 0;font-size:13px;box-shadow:var(--fm-shadow)}
.bfeed-tl-ic{font-size:15px}
.bfeed-tl-txt{flex:1;color:var(--fm-text-2)}
.bfeed-tl-txt b{color:var(--fm-text);text-transform:capitalize}
.bfeed-tl-txt em{color:var(--fm-muted);font-style:normal}
.bfeed-tl-ts{color:var(--fm-muted);font-size:11px;white-space:nowrap}

/* ---------------- modal dialog + forms ---------------- */
.bfeed-scrim{position:fixed;inset:0;background:rgba(12,24,20,.55);display:flex;align-items:center;justify-content:center;z-index:99999;padding:16px}
.bfeed-card{background:var(--fm-card);color:var(--fm-text);border-radius:14px;width:100%;max-width:520px;max-height:90vh;overflow:auto;box-shadow:0 20px 55px rgba(0,0,0,.4)}
.bfeed-cardhd{display:flex;justify-content:space-between;align-items:center;padding:15px 18px;border-bottom:1px solid var(--fm-border);font-size:16px;font-weight:700;color:var(--fm-text)}
.bfeed-x{border:none;background:transparent;font-size:18px;cursor:pointer;color:var(--fm-muted);line-height:1}
.bfeed-x:hover{color:var(--fm-text)}
.bfeed-cardbody{padding:16px 18px}
.bfeed-frow{display:block;margin-bottom:14px}
.bfeed-frow>span{display:block;font-size:12px;font-weight:700;margin-bottom:5px;color:var(--fm-text-2)}
.bfeed-frow>span em{font-weight:500;font-style:normal;color:var(--fm-muted)}
.bfeed-frow input[type=text],.bfeed-frow input[type=number],.bfeed-frow textarea,.bfeed-frow select{
  width:100%;padding:9px 11px;border:1px solid var(--fm-input-border);border-radius:9px;
  background:var(--fm-input-bg);color:var(--fm-text);font:inherit}
.bfeed-frow input::placeholder,.bfeed-frow textarea::placeholder{color:var(--fm-placeholder)}
.bfeed-frow input:focus,.bfeed-frow textarea:focus,.bfeed-frow select:focus{outline:none;border-color:var(--fm-gold);box-shadow:0 0 0 3px rgba(200,146,58,.18)}
.bfeed-frow input:disabled,.bfeed-frow select:disabled,.bfeed-frow textarea:disabled{background:#eef1f5;color:var(--fm-muted);cursor:not-allowed}
.bfeed-frow input[type=checkbox]{width:auto;transform:scale(1.2);accent-color:var(--fm-gold)}
.bfeed-cardft{display:flex;justify-content:flex-end;gap:8px;padding:13px 18px;border-top:1px solid var(--fm-border)}
.bfeed-status{font-size:13px;margin-top:8px;color:var(--fm-muted)}
.bfeed-status.ok{color:var(--fm-ok-fg)}.bfeed-status.err{color:var(--fm-crit-fg)}
.bfeed-usage{font-size:12px;color:var(--fm-muted);margin-top:6px}

/* ---------------- responsive ---------------- */
@media (max-width:640px){
  .feed-module{padding:12px}
  .bfeed-title{font-size:17px}
  .bfeed-table{display:block;overflow-x:auto;white-space:nowrap}
  .bfeed-btn,.bfeed-mini{padding:10px 14px;font-size:14px}
  .bfeed-tab{padding:9px 16px}
  .bfeed-frow input,.bfeed-frow select,.bfeed-frow textarea{font-size:16px;padding:11px}  /* 16px avoids iOS zoom */
}
/* non-visual layout wrappers */
.bfeed-body{color:var(--fm-text)}
.bfeed-pagebtns{display:inline-flex;align-items:center;gap:4px}
