/* The farm network follows the shared light and dark console tokens. */
.farm-workspace { --farm-ink:var(--text); --farm-muted:var(--text-2); --farm-line:var(--line); --farm-soft:var(--surface-2); color:var(--farm-ink); }
.farm-workspace svg[aria-hidden="true"] { width:20px; height:20px; flex-shrink:0; }
.farm-workspace [hidden] { display:none !important; }
.farm-metrics { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:14px; margin-bottom:24px; }
.farm-metric { background:var(--surface); border:1px solid var(--farm-line); border-radius:16px; padding:21px 19px; display:flex; align-items:flex-start; gap:13px; }
.farm-metric-icon { display:grid; place-items:center; width:38px; height:38px; border-radius:12px; background:var(--good-soft); color:var(--brand); flex-shrink:0; }
.farm-metric:last-child .farm-metric-icon { background:var(--warn-soft); color:var(--warn); }
.farm-metric>div { display:flex; flex-direction:column; min-width:0; }
.farm-metric-label { font-size:12px; font-weight:600; color:var(--text-2); line-height:1.5; }
.farm-metric strong { font-variant-numeric:tabular-nums; font-family:Inter,system-ui,sans-serif; font-size:32px; letter-spacing:-1.5px; font-weight:600; line-height:1.4; }
.farm-metric-detail { color:var(--farm-muted); font-size:12px; line-height:1.5; }
.farm-demo-note { display:flex; align-items:center; justify-content:space-between; gap:18px; margin:-7px 0 22px; font-size:12px; color:var(--warn); padding:11px 15px; background:var(--warn-soft); border:1px solid var(--line-strong); border-radius:12px; }
.farm-demo-note strong { color:var(--warn); }
.farm-demo-note .btn { background:transparent; color:var(--warn); font-size:12px; min-height:30px; padding:5px 9px; border-color:var(--line-strong); white-space:nowrap; }
.farm-directory { border:1px solid var(--farm-line); border-radius:20px; background:var(--surface); overflow:hidden; }
.farm-directory-head { display:flex; justify-content:space-between; align-items:center; gap:20px; padding:27px 26px 19px; }
.farm-eyebrow { font-size:12px; letter-spacing:1.7px; font-weight:700; color:var(--text-2); }
.farm-directory h2 { font-family:Inter,system-ui,sans-serif; font-size:20px; letter-spacing:-.65px; font-weight:600; margin:6px 0 0; line-height:1.3; }
.farm-view-toggle { display:flex; flex-shrink:0; gap:3px; padding:4px; background:var(--surface-2); border:1px solid var(--line); border-radius:11px; }
.farm-view-toggle button { display:flex; align-items:center; justify-content:center; gap:7px; font:600 12px Inter,system-ui,sans-serif; color:var(--text-2); background:transparent; border:0; border-radius:7px; padding:8px 12px; min-height:34px; cursor:pointer; }
.farm-view-toggle button svg { width:16px; height:16px; }
.farm-view-toggle button:hover { color:var(--text); }
.farm-view-toggle button:active { background:var(--surface-3); }
.farm-view-toggle button[aria-pressed="true"] { background:var(--surface); color:var(--brand); box-shadow:var(--e-1); }
#farm-count { font-weight:600; color:var(--text-2); }
/* The shared filter bar sits inside the directory, in line with the map. */
.farm-directory > .card { margin:0 20px 14px; }
.farm-map-layout { display:grid; grid-template-columns:minmax(0,1.35fr) minmax(295px,1fr); gap:18px; padding:0 20px 20px; }
.farm-map-panel { position:relative; align-self:start; border:1px solid var(--line); border-radius:14px; overflow:hidden; background:var(--surface-3); }
.farm-map-stage { height:463px; min-height:300px; width:100%; background:var(--surface-3); z-index:0; }
.farm-map-stage.leaflet-container { font-family:Inter,system-ui,sans-serif; }
.farm-map-stage .leaflet-control-zoom { border:1px solid var(--line-strong); border-radius:8px; overflow:hidden; box-shadow:var(--e-1); }
.farm-map-stage .leaflet-control-zoom a { color:var(--brand); background:var(--surface); border-color:var(--line); }
.farm-map-stage .leaflet-control-zoom a:hover { background:var(--surface-2); }
.farm-map-stage .leaflet-popup-content-wrapper,.farm-map-stage .leaflet-popup-tip { background:var(--surface); color:var(--text); }
.farm-map-stage .leaflet-popup-close-button { color:var(--text-2); }
.farm-map-stage .leaflet-control-attribution { color:var(--text-2); background:var(--surface); }
.farm-map-stage .leaflet-control-attribution a { color:var(--brand); }
.farm-map-caption { display:flex; justify-content:space-between; align-items:center; gap:12px; padding:12px 13px 7px; font-size:12px; color:var(--text-2); background:var(--surface-2); }
.farm-map-caption span:first-child { color:var(--text-2); font-weight:500; }
.farm-map-legend { display:flex; flex-wrap:wrap; gap:12px; padding:4px 13px 12px; background:var(--surface-2); color:var(--text-2); font-size:12px; }
.farm-map-legend>span { display:flex; align-items:center; gap:5px; }
.farm-map-legend i { width:6px; height:6px; border-radius:50%; display:inline-block; }
.farm-dot-confirmed { background:var(--brand); }
.farm-dot-suggested { background:var(--warn); }
.farm-dot-none { background:var(--text-2); }
.farm-map-message { height:100%; min-height:300px; display:flex; flex-direction:column; align-items:center; justify-content:center; padding:24px; text-align:center; font-size:12px; color:var(--text-2); }
.farm-map-message p { font-size:12px; margin:8px 0 16px; }
.farm-map-empty { position:absolute; z-index:400; top:50%; left:50%; transform:translate(-50%,-60%); width:calc(100% - 80px); max-width:320px; background:var(--surface); border:1px solid var(--line); border-radius:14px; box-shadow:var(--e-2); padding:24px; text-align:center; }
.farm-map-empty>span { display:block; color:var(--brand); margin-bottom:10px; }
.farm-map-empty strong { font-size:13px; }
.farm-map-empty p { margin:9px 0 16px; color:var(--text-2); font-size:12px; line-height:1.6; }
.farm-map-empty .btn { font-size:12px; }
.farm-card-list { display:flex; flex-direction:column; gap:12px; max-height:532px; overflow-y:auto; padding-right:3px; scrollbar-width:thin; scrollbar-color:var(--line-strong) transparent; }
.farm-record { padding:18px 17px 15px; border:1px solid var(--farm-line); border-radius:13px; background:var(--surface); transition:border-color .16s,box-shadow .16s; }
.farm-record:hover { border-color:var(--line-strong); box-shadow:var(--e-1); }
.farm-record-top { display:flex; align-items:center; gap:11px; }
.farm-record-icon { flex-shrink:0; width:35px; height:35px; display:grid; place-items:center; border-radius:10px; color:var(--brand); background:var(--good-soft); }
.farm-record-icon svg { width:20px; height:20px; }
.farm-record-title { min-width:0; flex:1; }
.farm-record h3 { font-family:Inter,system-ui,sans-serif; font-size:15px; letter-spacing:-.25px; line-height:1.35; font-weight:600; margin:0 0 3px; overflow-wrap:anywhere; }
.farm-record h3 a { color:var(--text); text-decoration:none; }
.farm-record h3 a:hover { text-decoration:underline; }
.farm-record-title>span { font-size:12px; color:var(--text-2); }
.farm-demo-badge { display:inline-block; color:var(--text-2); font:500 12px Inter,system-ui,sans-serif; background:var(--warn-soft); border:1px solid var(--line-strong); padding:3px 5px; border-radius:4px; vertical-align:middle; }
.farm-record-status { display:flex; align-items:center; gap:9px; margin:14px 0; }
.farm-status { display:inline-flex; align-items:center; gap:5px; font:500 12px Inter,system-ui,sans-serif; padding:5px 7px; border-radius:5px; white-space:nowrap; }
.farm-status>span { width:5px; height:5px; border-radius:50%; background:currentColor; }
.farm-status-confirmed { background:var(--good-soft); color:var(--brand); }
.farm-status-suggested { background:var(--warn-soft); color:var(--warn); }
.farm-status-none { background:var(--surface-2); color:var(--text-2); }
.farm-no-pin { color:var(--text-2); font-size:12px; }
.farm-record-facts { margin:0; display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.farm-record-facts dt { font-size:12px; color:var(--text-2); margin-bottom:3px; }
.farm-record-facts dd { margin:0; color:var(--text-2); font-size:12px; font-weight:500; line-height:1.4; overflow-wrap:anywhere; }
.farm-record-footer { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-top:14px; padding-top:12px; border-top:1px solid var(--line); }
.farm-record-footer>span { font-size:12px; color:var(--text-2); }
.farm-next-link { display:inline-flex; align-items:center; gap:6px; font-size:13px; font-weight:600; color:var(--brand); text-decoration:none; line-height:1.5; }
.farm-next-link:hover { color:var(--brand-strong); text-decoration:underline; }
.farm-next-link svg { width:14px; height:14px; }
.farm-map-popup { display:flex; flex-direction:column; gap:8px; min-width:150px; color:var(--text); padding:3px; }
.farm-map-popup strong { font-size:13px; }
.farm-map-popup>span:not(.farm-status) { font-size:12px; color:var(--text-2); }
.farm-map-popup a { color:var(--brand); font-size:12px; font-weight:600; }
.farm-table { width:100%; }
.farm-table tbody tr { cursor:pointer; }
.farm-table tbody tr:focus-visible { outline:2px solid var(--brand); outline-offset:-2px; }
.farm-table tbody tr:hover { background:var(--surface-2); }
.farm-table tbody tr:active { background:var(--surface-3); }
.farm-table thead th.right { text-align:right; }
.farm-table td { vertical-align:middle; }
.farm-table td>a:not(.btn) { color:var(--brand); }
.farm-workspace #farm-showrest { display:block; margin:18px auto !important; font-size:12px; }
.farm-no-results { text-align:center; padding:35px 20px; border-top:1px solid var(--farm-line); }
.farm-no-results>span { display:block; margin-bottom:12px; color:var(--brand); }
.farm-no-results h3 { font-size:16px; font-weight:600; margin:0 0 8px; }
.farm-no-results p { color:var(--text-2); font-size:12px; margin:0 0 18px; }
.farm-first { background:var(--surface); border:1px solid var(--farm-line); border-radius:20px; text-align:center; padding:48px 28px 32px; }
.farm-first-art { width:74px; height:74px; border:1px solid var(--line-strong); border-radius:24px; background:var(--good-soft); color:var(--brand); display:grid; place-items:center; margin:0 auto 24px; }
.farm-first-art svg { width:39px; height:39px; }
.farm-first h2 { font-family:Inter,system-ui,sans-serif; font-size:28px; font-weight:600; letter-spacing:-1px; margin:12px 0; }
.farm-first>p { font-size:13px; line-height:1.8; max-width:440px; margin:0 auto 24px; color:var(--text-2); }
.farm-first-actions { display:flex; justify-content:center; gap:10px; }
.farm-first-steps { display:flex; justify-content:center; align-items:center; gap:30px; margin-top:38px; padding-top:26px; border-top:1px solid var(--line); font-size:12px; color:var(--text-2); }
.farm-first-steps>span { display:flex; align-items:center; gap:8px; }
.farm-first-steps b { width:23px; height:23px; border-radius:50%; background:var(--surface-2); color:var(--brand); display:grid; place-items:center; font-size:12px; font-weight:500; }
.farm-workspace button:focus-visible,.farm-workspace a:focus-visible { outline:2px solid var(--brand); outline-offset:3px; }
@media (min-width:1500px) { .farm-map-layout { grid-template-columns:minmax(0,1.65fr) minmax(330px,1fr); } }
@media (max-width:1150px) { .farm-metrics { grid-template-columns:repeat(2,minmax(0,1fr)); } .farm-map-layout { grid-template-columns:minmax(0,1fr) minmax(275px,1fr); gap:12px; padding:0 16px 16px; } .farm-record { padding:15px 12px; } .farm-map-caption { align-items:flex-start; flex-direction:column; gap:4px; } .farm-map-stage { height:472px; } }
@media (max-width:850px) { .farm-map-layout { grid-template-columns:1fr; } .farm-map-stage { height:340px; } .farm-map-caption { flex-direction:row; } .farm-card-list { max-height:none; overflow:visible; padding-right:0; display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); } .farm-record-footer { align-items:flex-start; flex-direction:column; gap:7px; } }
@media (max-width:560px) { .farm-metrics { gap:9px; margin-bottom:17px; } .farm-metric { padding:15px 12px; gap:8px; border-radius:12px; } .farm-metric-icon { width:27px; height:27px; border-radius:8px; } .farm-metric-icon svg { width:16px; height:16px; } .farm-metric-label { font-size:12px; } .farm-metric strong { font-size:27px; } .farm-metric-detail { font-size:12px; } .farm-demo-note { align-items:flex-start; gap:10px; font-size:12px; } .farm-demo-note .btn { font-size:12px; } .farm-directory { border-radius:15px; } .farm-directory > .card { margin:0 11px 12px; } .farm-directory-head { padding:20px 16px 16px; align-items:flex-start; gap:12px; } .farm-directory h2 { font-size:17px; letter-spacing:-.5px; } .farm-eyebrow { font-size:12px; letter-spacing:1.2px; } .farm-view-toggle { padding:3px; } .farm-view-toggle button { padding:7px 9px; gap:5px; font-size:12px; min-height:32px; } .farm-view-toggle button svg { width:13px; height:13px; } .farm-map-layout { padding:0 11px 12px; } .farm-map-stage { height:290px; min-height:290px; } .farm-map-caption { font-size:12px; } .farm-map-legend { gap:10px; font-size:12px; } .farm-card-list { grid-template-columns:1fr; gap:9px; } .farm-record { padding:16px; } .farm-record-footer { flex-direction:row; align-items:center; } .farm-first { padding:33px 20px 24px; } .farm-first h2 { font-size:23px; } .farm-first-actions { flex-direction:column; } .farm-first-steps { flex-direction:column; align-items:flex-start; gap:12px; padding-left:15px; } .farm-map-empty { width:calc(100% - 64px); padding:18px; } }
@media (prefers-reduced-motion:reduce) { .farm-record { transition:none; } }

@media (max-width:600px) {
  .farm-directory-head { flex-wrap:wrap; }
  .farm-view-toggle button,.farm-workspace .btn,.farm-workspace .btn-primary { min-height:44px; }
  .farm-record h3 { font-size:16px; }
  .farm-record-facts dd,.farm-next-link,.farm-first>p { font-size:14px; }
  .farm-next-link { min-height:44px; }
  .farm-record-footer { flex-wrap:wrap; }
}
#fo-map .farm-map-message { min-height:240px; }

@media (max-width:1400px) { .farm-metric-detail { display:none; } }

/* The network at a glance: four small charts drawn from the farm list itself. */
.farm-charts { grid-template-columns:minmax(0, 1.5fr) repeat(3, minmax(0, 1fr)); margin-bottom:24px; }
@media (max-width:1150px) { .farm-charts { grid-template-columns:repeat(2, minmax(0, 1fr)); } }
@media (max-width:560px) { .farm-charts { grid-template-columns:1fr; gap:10px; margin-bottom:17px; } }

/* Add a farm: two steps and a review. No field has a fixed width, so the
   form fits a 390 px phone; the chosen answer shows by aria-pressed. */
.fo-modes { display:grid; gap:8px; }
.fo-mode.btn { display:block; width:100%; text-align:left; padding:12px 14px; min-height:44px; }
.fo-mode span { display:block; }
.fo-mode[aria-pressed="true"] { border-color:var(--brand); background:var(--good-soft); box-shadow:inset 0 0 0 1px var(--brand); }
.fo-fields { display:grid; gap:8px; }
.fo-fields > div, .fo-when-set { margin-top:8px; }
.fo-fields input[type="text"], .fo-fields input[type="number"], .fo-fields select { display:block; width:100%; box-sizing:border-box; margin-top:4px; }
.fo-pair, .fo-when { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(170px,100%),1fr)); gap:12px; }
.fo-when-set { border:0; padding:0; min-width:0; }
#fo-map { height:240px; margin-top:6px; border:1px solid var(--line); border-radius:6px; }
.fo-pin-row { display:flex; gap:10px; align-items:center; flex-wrap:wrap; margin:6px 0 8px; }
#fo-msg { margin:10px 0 0; }
#fo-msg.fo-error { color:var(--bad); }
.fo-list { margin:6px 0 0 18px; }
.fo-dupes { margin-top:14px; border-left:3px solid var(--warn); padding-left:10px; }
.fo-dupes p { margin:6px 0; }
.fo-actions { margin-top:18px; display:flex; gap:10px; flex-wrap:wrap; }
@media (max-width:600px) { .fo-fields input, .fo-fields select { font-size:16px; } #fo-map { height:200px; } }
/* Farm performance: numbers sit under their own header, and a clicked row
   draws no ring, only a row reached by keyboard does. */
#main[data-page="portfolio"] thead th.right { text-align:right; }
#main[data-page="portfolio"] td.right { font-variant-numeric:tabular-nums; }
#main[data-page="portfolio"] tbody tr[data-farm]:focus-visible { outline:2px solid var(--brand); outline-offset:-2px; }
#main[data-page="portfolio"] tbody tr[data-farm]:hover { background:var(--surface-2); }
