:root{--green:#087f4f;--green-dark:#05603c;--green-soft:#e9f7ef;--navy:#082f55;--blue:#1877d2;--blue-soft:#eaf4ff;--amber:#a45d00;--amber-soft:#fff3d9;--red:#a72d2d;--line:#cddce8;--muted:#60758b;--surface:#fff;--background:#f4f8fa;--shadow:0 12px 32px rgba(8,47,85,.08);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--navy);background:var(--background)}
*{box-sizing:border-box}
.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.pickup-items{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0}.pickup-item{display:inline-flex;padding:5px 8px;border-radius:999px;background:var(--green-soft);color:var(--green-dark);font-size:.78rem;font-weight:850}
body{margin:0;background:var(--background);color:var(--navy)}
button,input,textarea,select{font:inherit}
button,a{touch-action:manipulation}
button{cursor:pointer}
[hidden]{display:none!important}
.login-view{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at 80% 10%,#d9f4e4,transparent 35%),linear-gradient(150deg,#f8fbfc,#edf5f2)}
.login-card{width:min(440px,100%);padding:30px;border:1px solid var(--line);border-radius:24px;background:#fff;box-shadow:var(--shadow)}
.login-card h1{font-size:2rem;margin:4px 0 8px}.login-card p{color:var(--muted);line-height:1.55}.login-card form{display:grid;gap:14px;margin:24px 0 18px}.login-card label,.form-grid label{display:grid;gap:7px;font-weight:700}.login-card input,.form-grid input,.form-grid textarea,.form-grid select,.product-entry input,.product-entry select,#locationFilter{width:100%;border:1px solid var(--line);border-radius:12px;padding:12px 13px;color:var(--navy);background:#fff;outline:none}.login-card input:focus,.form-grid input:focus,.form-grid textarea:focus,.form-grid select:focus,.product-entry input:focus,.product-entry select:focus,#locationFilter:focus{border-color:var(--green);box-shadow:0 0 0 3px rgba(8,127,79,.12)}
.login-card>a{color:var(--green-dark);font-weight:700}.brand-mark{display:grid;place-items:center;width:42px;height:42px;border-radius:14px;background:linear-gradient(145deg,var(--green),#20a468);color:#fff;font-weight:900;letter-spacing:-1px}.eyebrow{display:block;color:#2462a0;font-size:.72rem;font-weight:900;letter-spacing:.08em;text-transform:uppercase}
.app-shell{min-height:100vh;padding-bottom:80px}.app-header{position:sticky;z-index:500;top:0;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px clamp(16px,3vw,34px);border-bottom:1px solid var(--line);background:rgba(255,255,255,.96);backdrop-filter:blur(12px)}.header-brand{display:flex;align-items:center;gap:12px}.header-brand strong{display:block;font-size:1.1rem}.header-brand small{display:block;color:var(--muted)}.header-actions{display:flex;align-items:center;gap:8px}.icon-button,.secondary-button,.primary-button{min-height:44px;border-radius:12px;border:1px solid var(--line);padding:10px 15px;font-weight:800;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:7px}.icon-button,.secondary-button{background:#fff;color:var(--navy)}.primary-button{border-color:var(--green);background:var(--green);color:#fff}.primary-button:hover{background:var(--green-dark)}.primary-button:disabled,.secondary-button:disabled{opacity:.45;cursor:not-allowed}.network-status{display:flex;align-items:center;gap:6px;color:var(--muted);font-size:.85rem;font-weight:800}.network-status i{width:9px;height:9px;border-radius:50%;background:#20a468}.network-status.offline i{background:#d48b0b}.network-status.offline{color:var(--amber)}
main{width:min(1500px,100%);margin:0 auto;padding:28px clamp(14px,3vw,34px)}.app-view{display:none}.app-view.active{display:block}.view-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:20px}.view-heading h1{margin:4px 0 5px;font-size:clamp(1.65rem,3vw,2.35rem);letter-spacing:-.035em}.view-heading p{margin:0;color:var(--muted);max-width:760px}.mode-badge{padding:8px 12px;border-radius:999px;background:var(--green-soft);color:var(--green-dark);font-size:.8rem;font-weight:900}.surface{border:1px solid var(--line);border-radius:18px;background:var(--surface);box-shadow:0 4px 18px rgba(8,47,85,.04)}
.workspace-grid{display:grid;grid-template-columns:minmax(310px,390px) minmax(0,1fr);gap:20px;align-items:start}.search-panel{position:sticky;top:88px;padding:18px;display:grid;gap:15px}.location-card{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:11px;padding:13px;border:1px solid #bfe3cf;border-radius:14px;background:var(--green-soft)}.location-actions{display:grid;gap:3px}.text-button{border:0;background:transparent;color:var(--muted);padding:4px;font-size:.72rem;font-weight:750;text-decoration:underline}.location-icon{font-size:2rem;color:var(--green)}.location-card small,.location-card strong,.location-card span{display:block}.location-card span{color:var(--muted);font-size:.78rem;margin-top:2px}.field-label{font-weight:850}.field-label span{font-weight:500;color:var(--muted)}.product-entry{display:grid;grid-template-columns:1fr auto;gap:8px}.product-chips{display:flex;flex-wrap:wrap;gap:8px;min-height:8px}.product-chip{border:0;border-radius:999px;padding:8px 11px;background:var(--green-soft);color:var(--green-dark);font-weight:850}.product-chip span{margin-left:6px}.check-row{display:flex!important;align-items:flex-start;gap:10px;padding:11px;border:1px solid var(--line);border-radius:12px;font-weight:400!important}.check-row input{width:20px!important;height:20px;margin:1px 0 0;accent-color:var(--green)}.check-row strong,.check-row small{display:block}.check-row small{margin-top:2px;color:var(--muted);font-weight:400}.check-row.fixed{background:#f8fbfc}.search-button{width:100%;font-size:1.05rem}.privacy-note,.route-disclosure{padding:10px 12px;border-radius:11px;background:#f0f5f8;color:var(--muted);font-size:.8rem;line-height:1.45}
.empty-state{text-align:center;padding:60px 22px}.empty-state h2{margin:8px 0}.empty-state p{margin:0;color:var(--muted)}.empty-icon{font-size:2.8rem;color:var(--green)}.results-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 16px;margin-bottom:12px}.results-toolbar strong,.results-toolbar small{display:block}.results-toolbar small{color:var(--muted);margin-top:2px}.segmented-control{display:flex;padding:3px;border-radius:11px;background:#edf3f6}.segmented-control button{border:0;border-radius:8px;padding:8px 14px;background:transparent;color:var(--muted);font-weight:800}.segmented-control button.active{background:#fff;color:var(--green-dark);box-shadow:0 2px 8px rgba(8,47,85,.08)}.map-panel{height:320px;border:1px solid var(--line);border-radius:18px;margin-bottom:12px;overflow:hidden}.farmer-results{display:grid;gap:11px}.farmer-card{display:grid;grid-template-columns:minmax(220px,1.15fr) minmax(180px,.8fr) minmax(200px,1fr) auto;align-items:center;gap:16px;padding:15px;border:1px solid var(--line);border-radius:16px;background:#fff}.farmer-identity{display:flex;align-items:center;gap:11px}.avatar{display:grid;place-items:center;width:48px;height:48px;flex:0 0 auto;border-radius:16px;background:#c9efca;color:var(--green-dark);font-weight:900}.farmer-card strong,.farmer-card small{display:block}.farmer-card small{margin-top:3px;color:var(--muted)}.farmer-distance strong{font-size:1.05rem}.farmer-evidence{display:flex;flex-wrap:wrap;gap:6px}.evidence-badge,.status-badge{display:inline-flex;align-items:center;border-radius:999px;padding:5px 9px;background:var(--blue-soft);color:#145f9f;font-size:.75rem;font-weight:850}.evidence-badge.legacy{background:var(--amber-soft);color:var(--amber)}.product-badge{display:inline-flex;border-radius:999px;padding:5px 9px;background:var(--green-soft);color:var(--green-dark);font-size:.75rem;font-weight:850}.farmer-actions{display:flex;gap:6px}.farmer-actions a,.farmer-actions button{min-width:46px;border:1px solid var(--line);border-radius:11px;background:#fff;color:var(--navy);padding:9px;text-decoration:none;text-align:center;font-size:.78rem;font-weight:800}.farmer-actions .confirm-action{border-color:var(--green);background:var(--green);color:#fff}
.confirmation-toolbar{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:13px;margin-bottom:14px}.filter-chips{display:flex;flex-wrap:wrap;gap:7px}.filter-chips button{border:1px solid var(--line);border-radius:999px;background:#fff;padding:8px 12px;color:var(--muted);font-weight:800}.filter-chips button.active{border-color:var(--green);background:var(--green-soft);color:var(--green-dark)}.confirmation-list,.run-list{display:grid;gap:11px}.confirmation-card{display:grid;grid-template-columns:auto 1.2fr .8fr .9fr auto;align-items:center;gap:15px;padding:15px;border:1px solid var(--line);border-radius:16px;background:#fff}.confirmation-card>input{width:21px;height:21px;accent-color:var(--green)}.confirmation-card h3{margin:0 0 4px}.confirmation-card p{margin:2px 0;color:var(--muted);font-size:.86rem}.confirmation-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:6px}.confirmation-actions button{border:1px solid var(--line);border-radius:10px;padding:8px 10px;background:#fff;color:var(--navy);font-weight:800}.confirmation-actions button.ready{background:var(--green);border-color:var(--green);color:#fff}.confirmation-actions button.danger{border-color:#e5bcbc;color:var(--red)}.status-badge.confirmed{background:var(--blue-soft);color:var(--blue)}.status-badge.pickup_ready{background:var(--green-soft);color:var(--green-dark)}.status-badge.paused{background:var(--amber-soft);color:var(--amber)}.status-badge.routed{background:#eee8ff;color:#6143a4}.status-badge.collected{background:#dff6e3;color:#18743c}.status-badge.declined,.status-badge.cancelled,.status-badge.expired{background:#f4e7e7;color:var(--red)}
.runs-layout{display:grid;grid-template-columns:minmax(280px,360px) minmax(0,1fr);gap:16px}.run-card{border:1px solid var(--line);border-radius:15px;background:#fff;padding:14px;text-align:left;color:var(--navy)}.run-card.active{border-color:var(--green);box-shadow:0 0 0 2px rgba(8,127,79,.12)}.run-card header{display:flex;justify-content:space-between;gap:10px}.run-card h3{margin:4px 0}.run-card p{margin:5px 0;color:var(--muted)}.run-metrics{display:flex;gap:14px;margin-top:10px;font-size:.82rem;font-weight:800}.run-detail{min-height:520px;padding:16px}.run-detail-header{display:flex;justify-content:space-between;gap:15px;margin-bottom:13px}.run-detail-header h2{margin:3px 0}.run-detail-header p{margin:2px 0;color:var(--muted)}.run-header-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:7px}.route-map{height:360px;border-radius:15px;overflow:hidden;border:1px solid var(--line)}.route-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin:12px 0}.route-summary div{padding:11px;border-radius:12px;background:#f2f7f9}.route-summary strong,.route-summary small{display:block}.route-summary small{color:var(--muted)}.stop-list{display:grid;gap:8px}.stop-card{display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:center;padding:12px;border:1px solid var(--line);border-radius:13px}.stop-number{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:var(--green);color:#fff;font-weight:900}.stop-card h4{margin:0}.stop-card p{margin:3px 0;color:var(--muted);font-size:.84rem}.stop-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:5px}.stop-actions a,.stop-actions button{border:1px solid var(--line);border-radius:9px;background:#fff;padding:7px 9px;color:var(--navy);text-decoration:none;font-weight:800;font-size:.78rem}.stop-card.collected{background:#f2fbf5}.stop-card.skipped{opacity:.68}
.bottom-navigation{position:fixed;z-index:600;bottom:0;left:0;right:0;display:flex;justify-content:center;border-top:1px solid var(--line);background:rgba(255,255,255,.97);padding-bottom:env(safe-area-inset-bottom)}.bottom-navigation button{min-width:150px;border:0;background:transparent;color:var(--muted);padding:9px 18px;font-weight:800}.bottom-navigation button span{display:block;font-size:1.25rem}.bottom-navigation button.active{color:var(--green-dark)}
dialog{width:min(720px,calc(100% - 24px));max-height:92vh;border:0;border-radius:22px;padding:0;box-shadow:0 28px 80px rgba(8,47,85,.28);color:var(--navy)}dialog::backdrop{background:rgba(3,24,42,.58);backdrop-filter:blur(3px)}dialog form{padding:20px}dialog header,dialog footer{display:flex;align-items:center;justify-content:space-between;gap:15px}dialog h2{margin:3px 0}dialog footer{margin-top:18px;justify-content:flex-end}.dialog-close{border:0;background:#edf3f6;border-radius:50%;width:40px;height:40px;font-size:1.5rem;color:var(--navy)}.confirmation-context{padding:12px 14px;border-radius:13px;background:var(--green-soft);margin:14px 0}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:13px}.form-grid .wide{grid-column:1/-1}.form-grid label{font-size:.85rem}.inline-message{padding:10px 12px;margin-top:12px;border-radius:10px;background:#fbe7e7;color:var(--red);font-weight:700}.toast{position:fixed;z-index:1000;right:18px;bottom:90px;max-width:360px;padding:12px 16px;border-radius:12px;background:var(--navy);color:#fff;box-shadow:var(--shadow);opacity:0;transform:translateY(10px);pointer-events:none;transition:.2s}.toast.show{opacity:1;transform:none}.toast.warning{background:var(--amber)}.toast.error{background:var(--red)}
.operator-marker{position:relative;width:24px!important;height:24px!important;border:4px solid #fff;border-radius:50%;background:var(--blue);box-shadow:0 0 0 5px rgba(24,119,210,.22)}.operator-marker-label{position:absolute;left:50%;top:calc(100% + 8px);transform:translateX(-50%);padding:3px 7px;border:2px solid #fff;border-radius:999px;background:var(--blue);color:#fff;font-size:.68rem;font-weight:900;line-height:1;white-space:nowrap;box-shadow:0 2px 7px rgba(8,47,85,.2)}.farmer-marker{display:grid!important;place-items:center;width:30px!important;height:30px!important;border:3px solid #fff;border-radius:50% 50% 50% 0;background:var(--green);color:#fff;font-size:.72rem;font-weight:900;transform:rotate(-45deg);box-shadow:0 3px 10px rgba(8,47,85,.25)}.farmer-marker span{transform:rotate(45deg)}
.evidence-legend{display:flex;flex-wrap:wrap;gap:7px 14px;margin-top:8px;color:var(--muted);font-size:.72rem}.evidence-legend>span,.evidence-pair{display:inline-flex;align-items:center;gap:6px}.evidence-icon{position:relative;display:inline-grid;place-items:center;width:24px;height:24px;flex:0 0 auto;border-radius:50%;cursor:help}.evidence-icon svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.evidence-icon.legacy{background:var(--amber-soft);color:var(--amber)}.evidence-icon.product{background:var(--blue-soft);color:#145f9f}.evidence-icon::after{content:attr(data-tooltip);position:absolute;z-index:1100;left:50%;bottom:calc(100% + 7px);transform:translateX(-50%) translateY(3px);padding:5px 8px;border-radius:7px;background:var(--navy);color:#fff;font-size:.7rem;font-style:normal;font-weight:750;white-space:nowrap;opacity:0;pointer-events:none;transition:.15s}.evidence-icon:hover::after,.evidence-icon:focus-visible::after{opacity:1;transform:translateX(-50%) translateY(0)}.farmer-map-popup,.operator-map-popup{display:grid;gap:4px;min-width:210px;color:var(--navy)}.farmer-map-popup>span,.operator-map-popup>span{color:var(--muted);font-size:.78rem}.map-popup-distance{font-weight:800;color:var(--blue)!important}.map-popup-actions{display:flex;flex-wrap:wrap;gap:5px;margin-top:7px}.map-popup-action{border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--navy);padding:6px 8px;text-decoration:none;font:inherit;font-size:.72rem;font-weight:800;cursor:pointer}.map-popup-action.confirm-action{border-color:var(--green);background:var(--green);color:#fff}
.sourcing-target-picker{display:grid;gap:7px;padding:12px;border:1px solid var(--line);border-radius:13px;background:#f8fbfc}.sourcing-target-picker>small{color:var(--muted);line-height:1.4}.sourcing-tally{padding:15px;margin-bottom:12px}.sourcing-tally-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.sourcing-tally-head strong{display:block;margin-top:3px}.sourcing-tally-grid{display:grid;grid-template-columns:repeat(6,minmax(90px,1fr));gap:8px;margin-top:13px}.sourcing-tally-grid>div{padding:10px;border-radius:11px;background:#f1f6f8}.sourcing-tally-grid>div.remaining{background:var(--green-soft);color:var(--green-dark)}.sourcing-tally-grid strong,.sourcing-tally-grid small{display:block}.sourcing-tally-grid small{margin-top:2px;color:var(--muted);font-size:.72rem}.unit-warning{margin-top:10px;padding:8px 10px;border-radius:9px;background:var(--amber-soft);color:var(--amber);font-size:.8rem;font-weight:700}.sourcing-tally details{margin-top:11px}.sourcing-tally summary{cursor:pointer;color:var(--muted);font-size:.82rem;font-weight:800}.contact-history{display:grid;gap:7px;margin-top:8px}.contact-history article{display:grid;grid-template-columns:minmax(120px,.7fr) minmax(220px,1.2fr) 2fr;gap:9px;padding:8px 10px;border-radius:9px;background:#f6f9fa}.contact-history span,.contact-history small{color:var(--muted);font-size:.76rem}.voice-note-field{gap:9px!important}.voice-note-controls{display:flex;align-items:center;gap:10px}.voice-note-controls small{color:var(--muted);font-weight:500}.voice-consent{display:flex!important;align-items:flex-start;gap:9px;padding:10px;border-radius:10px;background:#f0f5f8;font-weight:500!important;line-height:1.4}.voice-consent input{width:20px!important;height:20px;flex:0 0 auto;margin:0;accent-color:var(--green)}.suggestion-notice{padding:10px 12px;border:1px solid #b7d7f4;border-radius:10px;background:var(--blue-soft);color:#145f9f;font-size:.82rem;font-weight:700}
@media(max-width:980px){.workspace-grid,.runs-layout{grid-template-columns:1fr}.search-panel{position:static}.farmer-card{grid-template-columns:1fr 1fr}.farmer-actions{grid-column:1/-1}.run-detail{min-height:420px}.confirmation-card{grid-template-columns:auto 1fr 1fr}.confirmation-actions{grid-column:2/-1;justify-content:flex-start}}
@media(max-width:640px){.app-header{padding:10px 12px}.header-brand small,.header-actions .icon-button[href="/admin"],#installButton{display:none}.header-actions{gap:5px}.icon-button{padding:8px 10px;min-height:40px}.network-status{font-size:0}.network-status i{width:11px;height:11px}.brand-mark{width:38px;height:38px}.view-heading{display:block}.mode-badge{display:inline-block;margin-top:10px}main{padding:18px 10px 90px}.workspace-grid{gap:12px}.search-panel{padding:13px}.location-card{grid-template-columns:auto 1fr}.location-card button{grid-column:1/-1;width:100%}.results-toolbar{position:sticky;top:64px;z-index:400}.map-panel{height:260px}.farmer-card{grid-template-columns:1fr;padding:13px}.farmer-actions{grid-column:auto;display:grid;grid-template-columns:repeat(4,1fr)}.farmer-actions a,.farmer-actions button{min-height:44px}.confirmation-toolbar{align-items:stretch;flex-direction:column}.confirmation-card{grid-template-columns:auto 1fr}.confirmation-card>div:nth-of-type(n+2){grid-column:2}.confirmation-actions{grid-column:1/-1}.runs-layout{display:block}.run-list{margin-bottom:12px}.run-detail{padding:11px}.route-map{height:280px}.route-summary{grid-template-columns:1fr 1fr}.stop-card{grid-template-columns:auto 1fr}.stop-actions{grid-column:1/-1;justify-content:stretch}.stop-actions a,.stop-actions button{flex:1;text-align:center}.bottom-navigation button{min-width:0;flex:1;padding:8px 5px;font-size:.75rem}.form-grid{grid-template-columns:1fr}.form-grid .wide{grid-column:auto}dialog form{padding:15px}}
@media(max-width:640px){.sourcing-tally-grid{grid-template-columns:1fr 1fr}.contact-history article{grid-template-columns:1fr}.voice-note-controls{align-items:stretch;flex-direction:column}.farmer-actions{grid-template-columns:repeat(2,1fr)}.run-detail-header{display:grid}.run-header-actions{justify-content:stretch}.run-header-actions>*{flex:1;text-align:center}}
@media print{.app-header,.bottom-navigation,.header-actions,.farmer-actions,.confirmation-actions,.stop-actions{display:none!important}.app-shell{padding:0}main{padding:0}.surface,.farmer-card,.confirmation-card,.run-detail{box-shadow:none}}
