/* ================================================================ farmers */
.farm-shell { display:grid; gap:16px; }
.farm-eyebrow { font-size:11px; font-weight:800; letter-spacing:.08em; text-transform:uppercase; color: var(--accent); }
.farm-head { display:flex; flex-wrap:wrap; justify-content:space-between; align-items:flex-end; gap:12px; }
.farm-head h2 { margin:2px 0 4px; font-size:26px; color: var(--text-primary); }
.farm-head p { margin:0; color: var(--text-secondary); font-size:13.5px; }
.farm-head-actions, .farm-hero-actions { display:flex; gap:8px; flex-wrap:wrap; }
.farm-stats { display:grid; grid-template-columns:repeat(auto-fit, minmax(150px, 1fr)); gap:10px; }
.farm-stat { padding:14px 16px; border-radius:16px; background: var(--bg-raised); border:1px solid var(--border); display:grid; gap:4px; }
.farm-stat span { font-size:11.5px; font-weight:700; text-transform:uppercase; letter-spacing:.05em; color: var(--text-secondary); }
.farm-stat strong { font-size:22px; color: var(--text-primary); font-variant-numeric: tabular-nums; }
.farm-toolbar { display:flex; flex-wrap:wrap; gap:8px; align-items:center; }
.farm-toolbar input[type="search"] { flex:1 1 240px; min-width:0; }
.farm-toolbar input, .farm-toolbar select { padding:9px 12px; border-radius:12px; border:1px solid var(--border); background: var(--bg-raised); color: var(--text-primary); font:inherit; font-size:13px; }
.farm-tabs { display:inline-flex; padding:3px; border-radius:12px; background: var(--bg-hover, rgba(0,0,0,.05)); }
.farm-tabs button { border:0; background:transparent; padding:7px 14px; border-radius:9px; font:inherit; font-size:13px; font-weight:700; color: var(--text-secondary); cursor:pointer; }
.farm-tabs button.active { background: var(--bg-raised); color: var(--accent); box-shadow:0 1px 3px rgba(0,0,0,.12); }

.farm-grid { display:grid; grid-template-columns:repeat(auto-fill, minmax(250px, 1fr)); gap:12px; }
.farm-card { display:grid; gap:10px; padding:16px; border-radius:18px; background: var(--bg-raised); border:1px solid var(--border); cursor:pointer; transition: border-color .15s, transform .15s; }
.farm-card:hover, .farm-card:focus-visible { border-color: var(--accent); transform: translateY(-2px); outline:none; }
.farm-card-top { display:flex; gap:12px; align-items:center; min-width:0; }
.farm-card-id { display:grid; min-width:0; }
.farm-card-id strong { font-size:15px; color: var(--text-primary); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.farm-card-id span { font-size:12px; color: var(--text-secondary); font-variant-numeric: tabular-nums; }
.farm-card-place { font-size:12.5px; color: var(--text-secondary); }
.farm-card-facts { display:grid; grid-template-columns:repeat(3, 1fr); gap:6px; margin:0; padding:10px 0; border-block:1px dashed var(--border); }
.farm-card-facts div { display:grid; gap:2px; text-align:center; }
.farm-card-facts dt { font-size:10.5px; text-transform:uppercase; letter-spacing:.05em; color: var(--text-secondary); }
.farm-card-facts dd { margin:0; font-weight:800; font-size:16px; color: var(--text-primary); font-variant-numeric: tabular-nums; }
.farm-card-agent { font-size:12px; color: var(--text-secondary); }

.farm-avatar { width:48px; height:48px; border-radius:14px; object-fit:cover; flex-shrink:0; }
.farm-avatar.sm { width:32px; height:32px; border-radius:10px; font-size:12px; }
.farm-avatar.lg { width:96px; height:96px; border-radius:24px; font-size:30px; }
.farm-avatar-initials { display:grid; place-items:center; font-weight:800; color: var(--accent); background: var(--accent-soft); }

.farm-table-wrap { overflow-x:auto; border:1px solid var(--border); border-radius:16px; background: var(--bg-raised); }
.farm-table { min-width:1300px; }
.farm-table tbody tr { cursor:pointer; }
.farm-table tbody tr:hover, .farm-table tbody tr:focus-visible { background: var(--bg-hover); outline:none; }
.farm-table td { white-space:nowrap; font-variant-numeric: tabular-nums; }

.farm-empty { display:grid; gap:4px; justify-items:center; padding:40px 16px; text-align:center; border:1px dashed var(--border); border-radius:18px; color: var(--text-secondary); }
.farm-empty strong { color: var(--text-primary); }

.farm-back { font-size:13px; font-weight:700; color: var(--accent); text-decoration:none; }
.farm-hero { display:flex; flex-wrap:wrap; gap:18px; align-items:center; padding:20px; border-radius:22px; background: var(--bg-raised); border:1px solid var(--border); }
.farm-hero-id { flex:1 1 240px; display:grid; gap:4px; min-width:0; }
.farm-hero-id h2 { margin:0; font-size:26px; text-wrap:balance; color: var(--text-primary); }
.farm-hero-id p { margin:0; color: var(--text-secondary); font-size:13.5px; }
.farm-hero-links { display:flex; flex-wrap:wrap; gap:6px; margin-top:6px; }
.farm-chip { padding:5px 11px; border-radius:999px; border:1px solid var(--border); font-size:12.5px; color: var(--text-primary); text-decoration:none; }
.farm-chip:hover { border-color: var(--accent); color: var(--accent); }
.farm-danger { color: var(--danger) !important; border-color: var(--danger) !important; }

.farm-dash-grid { display:grid; grid-template-columns:minmax(0, 2fr) minmax(0, 1fr); gap:12px; align-items:start; }
@media (max-width: 860px) { .farm-dash-grid { grid-template-columns:minmax(0, 1fr); } }
.farm-panel { padding:18px; border-radius:18px; background: var(--bg-raised); border:1px solid var(--border); display:grid; gap:12px; }
.farm-panel h3 { margin:0; font-size:15px; display:flex; align-items:center; gap:8px; }
.farm-panel-map { grid-column: 1 / -1; }
.farm-count { font-size:12px; padding:1px 8px; border-radius:999px; background: var(--accent-soft); color: var(--accent); }
.farm-details { display:grid; grid-template-columns:repeat(auto-fit, minmax(140px, 1fr)); gap:12px 16px; margin:0; }
.farm-details dt { font-size:11px; text-transform:uppercase; letter-spacing:.05em; color: var(--text-secondary); }
.farm-details dd { margin:2px 0 0; font-size:14px; color: var(--text-primary); overflow-wrap:anywhere; }
.farm-notes { margin:0; padding:12px; border-radius:12px; background: var(--bg-hover, rgba(0,0,0,.04)); font-size:13.5px; line-height:1.6; white-space:pre-wrap; }
.farm-ponds { margin:0; padding:0; list-style:none; counter-reset:pond; display:grid; gap:6px; }
.farm-ponds li { counter-increment:pond; display:flex; gap:10px; align-items:center; padding:9px 12px; border-radius:12px; border:1px solid var(--border); font-size:14px; }
.farm-ponds li::before { content: counter(pond); display:grid; place-items:center; width:24px; height:24px; border-radius:8px; background: var(--accent-soft); color: var(--accent); font-size:12px; font-weight:800; }
.farm-map { height:320px; border-radius:14px; overflow:hidden; border:1px solid var(--border); }

.farm-modal { position:fixed; inset:0; z-index:10040; display:grid; place-items:center; padding:16px; background: rgba(15,23,42,.5); overflow:auto; }
.farm-form { width:min(760px, 100%); max-height:92vh; display:grid; grid-template-rows:auto 1fr auto; border-radius:22px; background: var(--bg-raised); color: var(--text-primary); box-shadow:0 30px 80px rgba(0,0,0,.35); overflow:hidden; }
.farm-form-head, .farm-form-foot { display:flex; align-items:center; justify-content:space-between; gap:8px; padding:16px 20px; border-bottom:1px solid var(--border); }
.farm-form-foot { border-bottom:0; border-top:1px solid var(--border); justify-content:flex-end; }
.farm-form-head h3 { margin:0; font-size:18px; }
.farm-close { border:0; background:transparent; font-size:24px; line-height:1; cursor:pointer; color: var(--text-secondary); }
.farm-form-body { overflow:auto; padding:6px 20px 16px; display:grid; gap:6px; }
.farm-form fieldset { border:0; border-top:1px solid var(--border); margin:10px 0 0; padding:14px 0 0; display:grid; gap:10px; }
.farm-form legend { font-size:11.5px; font-weight:800; text-transform:uppercase; letter-spacing:.07em; color: var(--accent); padding-right:8px; }
.farm-row { display:grid; grid-template-columns:repeat(auto-fit, minmax(200px, 1fr)); gap:10px; }
.farm-form label { display:grid; gap:5px; font-size:12.5px; font-weight:700; color: var(--text-secondary); }
.farm-form label b { color: var(--danger); }
.farm-form label small { font-weight:400; font-size:11.5px; }
.farm-form input:not([type="file"]), .farm-form select, .farm-form textarea {
    width:100%; box-sizing:border-box; padding:10px 12px; border-radius:11px; border:1px solid var(--border);
    background: var(--bg-surface, var(--bg-raised)); color: var(--text-primary); font:inherit; font-size:14px; font-weight:400;
}
.farm-photo-row { display:flex; gap:14px; align-items:center; flex-wrap:wrap; }
.farm-photo-preview { width:88px; height:88px; border-radius:20px; overflow:hidden; display:grid; place-items:center; background: var(--bg-hover, rgba(0,0,0,.05)); border:1px dashed var(--border); font-size:11.5px; color: var(--text-secondary); }
.farm-photo-preview img { width:100%; height:100%; object-fit:cover; }
.farm-photo-actions { display:grid; gap:6px; justify-items:start; }
.farm-file { cursor:pointer; }
.farm-pond-list { display:grid; gap:8px; }
.farm-pond-row { display:grid; grid-template-columns:28px 1fr 34px; gap:8px; align-items:center; }
.farm-pond-num { display:grid; place-items:center; width:28px; height:28px; border-radius:9px; background: var(--accent-soft); color: var(--accent); font-weight:800; font-size:12px; }
.farm-pond-remove { width:34px; height:34px; border-radius:10px; border:1px solid var(--border); background:transparent; color: var(--danger); font-size:18px; cursor:pointer; }
.farm-add-pond { justify-self:start; padding:8px 14px; border-radius:11px; border:1px dashed var(--accent); background:transparent; color: var(--accent); font:inherit; font-weight:700; cursor:pointer; }
.farm-loc-actions { display:flex; flex-wrap:wrap; gap:10px; align-items:center; }
.farm-hint { font-size:12px; color: var(--text-secondary); margin:0; }
.farm-map-form { height:240px; }
@media (max-width: 520px) {
    .farm-hero { padding:16px; }
    .farm-avatar.lg { width:72px; height:72px; font-size:24px; }
}

/* ------------------------------------------------------------- farmer map */
.farm-map-shell { display:grid; grid-template-columns:minmax(0, 1fr) 280px; grid-template-areas: "bar bar" "map side" "legend side"; gap:10px 12px; }
.farm-map-bar { grid-area:bar; display:flex; flex-wrap:wrap; gap:10px; align-items:center; font-size:13px; color: var(--text-secondary); }
.farm-map-bar b { color: var(--text-primary); }
.farm-map-bar #farmMapCount { margin-right:auto; }
.farm-map-toggle { display:flex; align-items:center; gap:6px; font-size:13px; font-weight:700; color: var(--text-primary); }
.farm-map-toggle select { padding:4px 8px; border-radius:8px; border:1px solid var(--border); background: var(--bg-raised); color: var(--text-primary); font:inherit; }
.farm-big-map { grid-area:map; height:min(68vh, 640px); min-height:380px; border-radius:18px; overflow:hidden; border:1px solid var(--border); }
.farm-legend { grid-area:legend; display:flex; flex-wrap:wrap; gap:6px 14px; font-size:12px; color: var(--text-secondary); }
.farm-legend i { display:inline-block; width:10px; height:10px; border-radius:50%; margin-right:5px; vertical-align:-1px; border:1.5px solid #fff; box-shadow:0 0 0 1px rgba(0,0,0,.2); }
.farm-map-side { grid-area:side; display:grid; gap:12px; align-content:start; max-height:min(72vh, 680px); overflow:auto; }
.farm-map-side section { padding:14px; border-radius:16px; background: var(--bg-raised); border:1px solid var(--border); display:grid; gap:8px; }
.farm-map-side h4 { margin:0; font-size:13px; display:flex; gap:8px; align-items:center; color: var(--text-primary); }
.farm-dist, .farm-nopin { list-style:none; margin:0; padding:0; display:grid; gap:4px; }
.farm-dist li { display:flex; justify-content:space-between; align-items:center; gap:8px; font-size:13px; }
.farm-dist button { border:0; background:none; padding:3px 0; color: var(--accent); font:inherit; font-weight:700; cursor:pointer; text-align:left; }
.farm-dist b { font-variant-numeric: tabular-nums; color: var(--text-primary); }
.farm-nopin li { display:grid; font-size:13px; }
.farm-nopin small { color: var(--text-secondary); font-size:11.5px; }
@media (max-width: 900px) {
    .farm-map-shell { grid-template-columns:minmax(0, 1fr); grid-template-areas: "bar" "map" "legend" "side"; }
    .farm-map-side { max-height:none; }
}

.farm-map-tip { font-size:12.5px; line-height:1.35; }
.farm-map-popup .leaflet-popup-content { margin:12px; }
.farm-pop { display:grid; gap:8px; min-width:230px; font-family:inherit; }
.farm-pop-head { display:flex; gap:10px; align-items:center; }
.farm-pop-head img, .farm-pop-i { width:42px; height:42px; border-radius:12px; object-fit:cover; flex-shrink:0; }
.farm-pop-i { display:grid; place-items:center; font-weight:800; background:#e0f2fe; color:#0369a1; }
.farm-pop-head strong { display:block; font-size:14px; }
.farm-pop-head small { color:#64748b; }
.farm-pop-stage { justify-self:start; font-size:11px; font-weight:800; padding:2px 9px; border-radius:999px; color:#fff; background: var(--stage); }
.farm-pop dl { margin:0; display:grid; gap:4px; }
.farm-pop dl div { display:grid; grid-template-columns:72px 1fr; gap:6px; font-size:12.5px; }
.farm-pop dt { color:#64748b; }
.farm-pop dd { margin:0; color:#0f172a; overflow-wrap:anywhere; }
.farm-pop-actions { display:flex; gap:6px; }
.farm-pop-actions a { flex:1; text-align:center; padding:7px 10px; font-size:12.5px; text-decoration:none; }

/* ------------------------------------------------- farmer map: links, full screen */
.farm-big-map { height:min(74vh, 720px); }
.farm-map-shell.is-full { position:fixed; inset:0; z-index:10050; padding:12px; margin:0; background: var(--bg-page, var(--bg-raised)); grid-template-rows:auto 1fr auto; overflow:auto; }
.farm-map-shell.is-full .farm-big-map { height:100%; min-height:0; }
.farm-map-shell.is-full .farm-map-side { max-height:none; }
.farm-legend-btn { display:inline-flex; align-items:center; gap:6px; padding:3px 9px; border-radius:999px; border:1px solid var(--border); background: var(--bg-raised); color: var(--text-primary); font:inherit; font-size:12px; cursor:pointer; }
.farm-legend-btn:hover { border-color: var(--accent); }
.farm-legend-btn b { font-variant-numeric: tabular-nums; }
.farm-route-dot { display:grid; place-items:center; }
.farm-route-dot span { display:grid; place-items:center; width:22px; height:22px; border-radius:50%; background:#111827; color:#fff; font-size:11px; font-weight:800; border:2px solid #fff; box-shadow:0 1px 4px rgba(0,0,0,.4); }
.farm-route-list { margin:0; padding-left:18px; display:grid; gap:3px; font-size:13px; }
.farm-route-list li { display:flex; justify-content:space-between; gap:8px; align-items:center; }
.farm-route-list button { border:0; background:none; color: var(--danger); font-size:15px; cursor:pointer; }
.farm-route-actions { display:flex; gap:8px; align-items:center; }
.farm-pop-route { width:100%; margin-top:2px; padding:6px 10px; border-radius:9px; border:1px dashed #0f172a; background:transparent; color:#0f172a; font:inherit; font-size:12.5px; font-weight:700; cursor:pointer; }
.farm-toolbar select { max-width:190px; }
