:root{
  --bg:#f4f6f5;--panel:#ffffff;--text:#17201c;--muted:#66736d;--line:#dfe5e1;
  --brand:#173f2f;--brand2:#286247;--shadow:0 10px 30px rgba(18,45,34,.08);
  --v0l:#94b8d6;--v0m:#4a86b8;--v0h:#23557d;
  --v1l:#a8d8b7;--v1m:#4fa66b;--v1h:#1f6b39;
  --v2l:#ffd59e;--v2m:#f3a541;--v2h:#b86b00;
  --v3l:#f4aaaa;--v3m:#de5d5d;--v3h:#9c2929;
  --v4l:#d4b7e7;--v4m:#9a67bd;--v4h:#623484;
}
*{box-sizing:border-box}body{margin:0;font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:var(--bg);color:var(--text)}
button,input,select,textarea{font:inherit}button{cursor:pointer}.app-header{position:sticky;top:0;z-index:1000;background:rgba(255,255,255,.96);backdrop-filter:blur(12px);border-bottom:1px solid var(--line);padding:14px 20px;display:flex;justify-content:space-between;gap:16px;align-items:center}.brand{font-weight:800;font-size:1.3rem;color:var(--brand)}.subtitle{color:var(--muted);font-size:.84rem;margin-top:2px}.header-actions,.button-row{display:flex;gap:8px;align-items:center}.year-picker{display:flex;gap:8px;align-items:center;font-size:.9rem;color:var(--muted)}.year-picker select{padding:8px;border:1px solid var(--line);border-radius:10px;background:white}.tabs{display:flex;gap:4px;padding:8px 16px;background:white;border-bottom:1px solid var(--line);position:sticky;top:69px;z-index:999;overflow:auto}.tab{border:0;background:transparent;padding:10px 14px;border-radius:10px;color:var(--muted);font-weight:700;white-space:nowrap}.tab.active{background:#e8f0ec;color:var(--brand)}main{padding:20px;max-width:1500px;margin:0 auto}.view{display:none}.view.active{display:block}.toolbar{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:16px}.wrap{flex-wrap:wrap}h1{margin:0;font-size:1.75rem}h2{margin:0 0 12px;font-size:1.05rem}.muted{color:var(--muted)}.small{font-size:.84rem}.btn{border-radius:11px;padding:10px 14px;border:1px solid transparent;font-weight:750;background:white}.btn.primary{background:var(--brand);color:white}.btn.primary:hover{background:var(--brand2)}.btn.secondary{border-color:var(--line);color:var(--text)}.btn.danger{border-color:#efc8c8;color:#9b2626;background:#fff8f8}.btn.linkish{display:inline-block;text-decoration:none;border-color:var(--line);color:var(--text)}.stats-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:16px}.stat-card,.panel{background:var(--panel);border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow)}.stat-card{padding:18px}.stat-card span{display:block;color:var(--muted);font-size:.85rem;margin-bottom:8px}.stat-card strong{font-size:1.65rem}.panel{padding:16px}.panel-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.panel-title-row{display:flex;justify-content:space-between;align-items:center;gap:8px}.distribution{display:grid;gap:8px}.dist-row{display:grid;grid-template-columns:80px 1fr 52px;gap:10px;align-items:center}.dist-bar{height:12px;border-radius:999px;background:#edf0ee;overflow:hidden}.dist-fill{height:100%;border-radius:999px}.priority-list{display:grid;gap:8px}.priority-item{display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:center;padding:10px;border:1px solid var(--line);border-radius:12px}.priority-item .badge{width:14px;height:14px;border-radius:50%}.filters,.map-filters{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:10px;margin-bottom:12px}.field{width:100%;border:1px solid #d7dfda;border-radius:10px;padding:10px 11px;background:#fff;color:var(--text)}textarea.field{resize:vertical}.table-wrap{overflow:auto;padding:0}table{border-collapse:collapse;width:100%;min-width:840px}th,td{padding:12px 14px;border-bottom:1px solid #edf0ee;text-align:left;font-size:.92rem}th{font-size:.78rem;text-transform:uppercase;letter-spacing:.03em;color:var(--muted);background:#fbfcfb;position:sticky;top:0}tbody tr:hover{background:#fbfdfc}.customer-name{font-weight:750}.status-pill{display:inline-flex;align-items:center;gap:7px;padding:5px 8px;border-radius:999px;font-size:.78rem;font-weight:750;color:#fff}.pin-mini{width:11px;height:11px;border-radius:50%;border:1px solid rgba(0,0,0,.08)}.empty-state{padding:24px;text-align:center;color:var(--muted)}.map{height:62vh;min-height:430px;border-radius:16px;border:1px solid var(--line);overflow:hidden;background:#dbe5df}.legend{display:flex;gap:16px;align-items:center;flex-wrap:wrap;margin-top:10px}.legend>div{display:flex;align-items:center;gap:6px}.dot{width:12px;height:12px;border-radius:50%;display:inline-block}.leaflet-marker-icon.rep-marker{background:transparent;border:0}.rep-pin{width:24px;height:24px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);border:2px solid white;box-shadow:0 2px 7px rgba(0,0,0,.28)}.rep-pin::after{content:"";width:6px;height:6px;border-radius:50%;background:rgba(255,255,255,.92);position:absolute;left:7px;top:7px}.leaflet-popup-content{min-width:230px}.popup-name{font-weight:800;font-size:1rem}.popup-meta{margin:5px 0;color:#5f6c65;font-size:.85rem}.popup-actions{display:flex;gap:6px;margin-top:8px}.popup-actions button{border:1px solid #dfe5e1;background:white;padding:6px 8px;border-radius:8px}.check-inline{display:flex;align-items:center;gap:7px}.route-list{display:grid;gap:8px;padding-left:26px}.route-list li{padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:#fff}.route-card-row{display:flex;justify-content:space-between;gap:12px;align-items:center}.stack{display:grid;gap:8px}.top-gap{margin-top:12px}.dialog{border:0;padding:0;border-radius:18px;max-width:min(900px,94vw);width:100%;box-shadow:0 24px 80px rgba(0,0,0,.25)}.dialog::backdrop{background:rgba(15,24,19,.46);backdrop-filter:blur(3px)}.dialog-card{padding:18px}.dialog-card.narrow{max-width:560px;margin:auto}.dialog-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:14px}.icon-btn{border:0;background:transparent;font-size:1.2rem}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.form-grid label,.panel label,.dialog-card>label{display:grid;gap:6px;font-size:.84rem;color:var(--muted)}.form-grid .full{grid-column:1/-1}.dialog-actions{display:flex;justify-content:space-between;gap:10px;margin-top:16px}.visit-history{margin-top:18px;border-top:1px solid var(--line);padding-top:14px}.visit-row{display:grid;grid-template-columns:110px 1fr auto;gap:10px;padding:8px 0;border-bottom:1px solid #edf0ee}.toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%) translateY(20px);opacity:0;pointer-events:none;background:#16231d;color:white;padding:10px 14px;border-radius:11px;z-index:4000;transition:.2s}.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}.file-btn{display:inline-flex}.visit-0.low{background:var(--v0l)}.visit-0.mid{background:var(--v0m)}.visit-0.high{background:var(--v0h)}.visit-1.low{background:var(--v1l)}.visit-1.mid{background:var(--v1m)}.visit-1.high{background:var(--v1h)}.visit-2.low{background:var(--v2l)}.visit-2.mid{background:var(--v2m)}.visit-2.high{background:var(--v2h)}.visit-3.low{background:var(--v3l)}.visit-3.mid{background:var(--v3m)}.visit-3.high{background:var(--v3h)}.visit-4.low{background:var(--v4l)}.visit-4.mid{background:var(--v4m)}.visit-4.high{background:var(--v4h)}
@media(max-width:900px){.stats-grid{grid-template-columns:1fr 1fr}.panel-grid{grid-template-columns:1fr}.filters{grid-template-columns:1fr 1fr}.map-filters{grid-template-columns:1fr 1fr}.subtitle{display:none}.tabs{top:64px}}
@media(max-width:600px){main{padding:12px}.app-header{padding:12px}.header-actions{gap:5px}.year-picker{font-size:.78rem}.tabs{padding:6px 8px}.tab{padding:9px 10px}.stats-grid{grid-template-columns:1fr 1fr}.stat-card{padding:14px}.stat-card strong{font-size:1.35rem}.filters,.map-filters{grid-template-columns:1fr}.form-grid{grid-template-columns:1fr}.form-grid .full{grid-column:auto}.dialog-actions{flex-direction:column}.dialog-actions .button-row{flex-wrap:wrap}.map{height:58vh;min-height:390px}.visit-row{grid-template-columns:90px 1fr}.visit-row button{grid-column:2}.toolbar{align-items:flex-start}.subtitle{display:none}}
.compact-list{margin:10px 0 14px;padding-left:20px}.compact-list li+li{margin-top:5px}.custom-fields-section{border-top:1px solid var(--line);margin-top:4px;padding-top:10px}.custom-fields-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.custom-fields-title{font-weight:800;color:var(--text);margin-bottom:8px}.import-dialog{max-width:min(1180px,96vw)}.import-controls{display:grid;grid-template-columns:1fr 180px;gap:10px;margin-bottom:12px}.import-controls label{display:grid;gap:6px;font-size:.84rem;color:var(--muted)}.import-help{padding:11px 12px;border-radius:12px;background:#eef4f1;color:#365044;font-size:.88rem;margin-bottom:12px}.mapping-table-wrap{overflow:auto;border:1px solid var(--line);border-radius:13px;max-height:55vh}.mapping-table{min-width:920px}.mapping-table th{top:0;z-index:1}.mapping-table td{vertical-align:middle}.mapping-header{font-weight:750}.mapping-sample{max-width:260px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mapping-detail[hidden]{display:none}.import-options{display:flex;gap:18px;flex-wrap:wrap;margin-top:14px;padding:12px;border:1px solid var(--line);border-radius:12px;background:#fbfcfb}.mapping-warning{color:#9a6200;font-weight:700}.mapping-ok{color:var(--brand2);font-weight:700}
@media(max-width:700px){.custom-fields-grid{grid-template-columns:1fr}.import-controls{grid-template-columns:1fr}.mapping-table-wrap{max-height:52vh}.import-dialog .dialog-card{padding:14px}.import-options{display:grid;gap:10px}}

/* Searchable customer picker for visit registration */
.visit-customer-picker{display:grid;gap:6px;font-size:.84rem;color:var(--muted)}
.customer-search-wrap{position:relative}
.customer-search-icon{position:absolute;left:12px;top:50%;transform:translateY(-50%);font-size:1.15rem;color:#728078;pointer-events:none}
.customer-search-field{padding-left:38px;-webkit-appearance:none;appearance:none}
.visit-customer-results{border:1px solid var(--line);border-radius:12px;background:#fff;max-height:300px;overflow-y:auto;-webkit-overflow-scrolling:touch;box-shadow:0 8px 24px rgba(18,42,30,.08)}
.visit-customer-results:empty{display:none}
.customer-result{width:100%;display:flex;justify-content:space-between;align-items:center;gap:12px;text-align:left;border:0;border-bottom:1px solid #edf0ee;background:#fff;padding:12px 13px;color:var(--text)}
.customer-result:last-child{border-bottom:0}
.customer-result:active,.customer-result:hover{background:#f1f6f3}
.customer-result.selected{background:#e8f0ec}
.customer-result-name{font-weight:780;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.customer-result-number{font-size:.78rem;color:var(--muted);white-space:nowrap}
.customer-result-empty{padding:14px;color:var(--muted);text-align:center}
.customer-search-help{line-height:1.35}
@media(max-width:600px){.visit-customer-results{max-height:38vh}.customer-result{padding:14px 12px}.customer-result-name{font-size:1rem}.customer-search-help{font-size:.76rem}}
.map-location-panel{display:flex;justify-content:space-between;gap:14px;align-items:center;margin-bottom:12px}.map-location-copy{min-width:0;flex:1}.map-location-actions{flex-wrap:wrap}.geocode-progress{height:8px;background:#edf0ee;border-radius:999px;overflow:hidden;margin-top:9px;max-width:560px}.geocode-progress-bar{height:100%;width:0;background:var(--brand);border-radius:999px;transition:width .2s}.map-warning-text{color:#9a6200}.map-ok-text{color:var(--brand2)}
@media(max-width:600px){.map-location-panel{align-items:stretch;flex-direction:column}.map-location-actions .btn{flex:1}}

/* RepFlow v5 usability refinements */
.stats-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
.order-stat{background:linear-gradient(180deg,#fff,#fbfdfc)}
.compact-btn{padding:7px 10px;font-size:.8rem}.route-active{background:#e8f0ec!important;border-color:#b9cfc2!important;color:var(--brand)!important}
.location-card{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px;border:1px solid var(--line);border-radius:12px;background:#fbfcfb}
.top-gap-small{margin-top:6px}.route-add-panel{margin-bottom:12px}
.order-box{border:1px solid var(--line);border-radius:14px;background:#fbfcfb;padding:12px;margin-top:4px}
.order-toggle{display:flex!important;grid-template-columns:none!important;flex-direction:row!important;align-items:flex-start;gap:10px!important;color:var(--text)!important;cursor:pointer}
.order-toggle input{margin-top:4px;width:19px;height:19px;flex:0 0 auto}
.order-toggle span{display:grid;gap:2px}.order-toggle small{font-weight:400;color:var(--muted);line-height:1.35}
.order-fields{display:grid;grid-template-columns:1fr 180px;gap:10px;margin-top:12px;padding-top:12px;border-top:1px solid var(--line)}
.order-fields[hidden]{display:none}.visit-order-summary{display:grid;gap:3px;margin-top:7px;padding:8px 10px;border-radius:10px;background:#eef4f1;color:var(--brand)}.visit-order-summary span{color:var(--muted);font-size:.84rem}.visit-row-actions{justify-self:end}
.advanced-import{margin:10px 0 12px;border:1px solid var(--line);border-radius:12px;background:#fbfcfb}.advanced-import summary{cursor:pointer;padding:10px 12px;font-weight:750;color:var(--muted);font-size:.84rem}.advanced-import-body{padding:0 12px 12px;display:grid;grid-template-columns:180px 1fr 1fr;gap:12px;align-items:end}.advanced-import-body>label:first-child{display:grid;gap:6px;font-size:.84rem;color:var(--muted)}
.import-result-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:8px 0 14px}.import-result-grid>div{display:grid;gap:3px;padding:14px;border:1px solid var(--line);border-radius:12px;text-align:center}.import-result-grid strong{font-size:1.6rem;color:var(--brand)}.import-result-grid span{font-size:.8rem;color:var(--muted)}.import-map-hint{padding:12px;border-radius:12px;background:#eef4f1;display:grid;gap:4px}.import-map-hint[hidden]{display:none}
.dialog{max-height:92dvh;overflow:auto}.dialog-card{padding-bottom:max(18px,env(safe-area-inset-bottom))}

@media(max-width:900px){.stats-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:700px){
  .stats-grid{grid-template-columns:1fr 1fr}
  .order-fields{grid-template-columns:1fr}
  .location-card{align-items:stretch;flex-direction:column}.location-card .btn{width:100%}
  .advanced-import-body{grid-template-columns:1fr}
  .import-result-grid{grid-template-columns:1fr 1fr}.import-result-grid>div:last-child:nth-child(odd){grid-column:1/-1}

  /* Customer list becomes touch-friendly cards instead of a wide desktop table. */
  .table-wrap{overflow:visible;background:transparent;border:0;box-shadow:none;padding:0}
  .table-wrap table{min-width:0;display:block}.table-wrap thead{display:none}.table-wrap tbody{display:grid;gap:10px}.table-wrap tr{display:grid;background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);padding:12px}.table-wrap td{display:flex;justify-content:space-between;align-items:center;gap:12px;border:0;padding:6px 0;font-size:.9rem}.table-wrap td::before{content:attr(data-label);font-size:.75rem;text-transform:uppercase;letter-spacing:.03em;color:var(--muted);font-weight:750;flex:0 0 auto}.table-wrap td[data-label="Klant"]{display:block;padding-top:0;border-bottom:1px solid #edf0ee;padding-bottom:10px;margin-bottom:2px}.table-wrap td[data-label="Klant"]::before{display:none}.table-wrap td[data-label="Acties"]{padding-top:10px}.table-wrap td[data-label="Acties"] .button-row{width:100%}.table-wrap td[data-label="Acties"] .btn{flex:1}.table-wrap td[data-label="Route"]{position:absolute;right:24px;margin-top:0}.table-wrap tr{position:relative}.table-wrap td[data-label="Route"]::before{display:none}.table-wrap td[data-label="Klant"]{padding-right:82px}

  /* Import mapping also becomes cards on iPhone; no horizontal scrolling required. */
  .mapping-table-wrap{overflow:visible;border:0;max-height:none}.mapping-table{min-width:0;display:block}.mapping-table thead{display:none}.mapping-table tbody{display:grid;gap:10px}.mapping-table tr{display:grid;gap:8px;border:1px solid var(--line);border-radius:13px;padding:12px;background:#fff}.mapping-table td{display:grid;grid-template-columns:105px minmax(0,1fr);gap:10px;align-items:center;border:0;padding:2px 0;max-width:none;white-space:normal}.mapping-table td::before{content:attr(data-label);font-size:.75rem;color:var(--muted);font-weight:750}.mapping-table .mapping-header{font-size:1rem;grid-template-columns:1fr;padding-bottom:6px;border-bottom:1px solid #edf0ee}.mapping-table .mapping-header::before{display:none}.mapping-table .mapping-sample{white-space:normal;overflow:visible;text-overflow:clip}
  .visit-row{grid-template-columns:90px 1fr}.visit-row-actions{grid-column:2;justify-self:start;flex-wrap:wrap}
}
.custom-fields-details{border:1px solid var(--line);border-radius:12px;background:#fbfcfb}.custom-fields-details summary{cursor:pointer;padding:10px 12px;font-weight:750;color:var(--muted)}.custom-fields-details .custom-fields-grid{padding:0 12px 12px}

/* RepFlow v6: revenue comparison + post-import column management */
.revenue-delta{display:block;margin-top:5px;font-size:.76rem;line-height:1.25;font-weight:650}
.revenue-delta.positive{color:#287747}.revenue-delta.negative{color:#a33b3b}.revenue-delta.neutral{color:var(--muted)}
.stat-card .revenue-delta{margin-bottom:0}
.top-gap-small{margin-top:8px}
#columnManagerDialog .mapping-table-wrap{max-height:58vh}
@media(max-width:600px){
  .revenue-delta{font-size:.72rem}
  #columnManagerDialog .mapping-table{min-width:760px}
}

/* RepFlow v7: account, cloud sync and subscriptions */
.sync-mini{display:inline-flex;align-items:center;gap:6px;padding:6px 9px;border-radius:999px;font-size:.74rem;font-weight:800;background:#eef1ef;color:var(--muted);white-space:nowrap}.sync-mini::before{content:'';width:7px;height:7px;border-radius:50%;background:currentColor}.sync-mini.synced{background:#e9f5ed;color:#287747}.sync-mini.syncing{background:#eef4f8;color:#356b92}.sync-mini.offline{background:#fff3df;color:#9a6200}.sync-mini.error{background:#fdecec;color:#a33b3b}
.status-pill{display:inline-flex;align-items:center;padding:5px 9px;border-radius:999px;background:#eef1ef;color:var(--muted);font-size:.74rem;font-weight:800;white-space:nowrap}.status-pill.good{background:#e9f5ed;color:#287747}.status-pill.warn{background:#fff3df;color:#9a6200}.status-pill.bad{background:#fdecec;color:#a33b3b}.status-pill.local{background:#eef1ef;color:var(--muted)}
.account-row{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:10px 0}.pricing-mini,.pricing-lock{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:12px}.price-choice{position:relative;border:1px solid var(--line);border-radius:14px;background:#fff;padding:14px;text-align:left;display:grid;gap:3px;color:var(--text)}.price-choice:hover,.price-choice:active{border-color:#9ebaae;background:#f8fbf9}.price-choice span{font-size:.8rem;color:var(--muted);font-weight:750}.price-choice strong{font-size:1.25rem;color:var(--brand)}.price-choice small{font-size:.74rem;color:var(--muted)}.price-choice.recommended{border:2px solid var(--brand2);background:#f6fbf8}.price-choice.recommended::after{content:'Beste keuze';position:absolute;right:9px;top:8px;font-size:.62rem;text-transform:uppercase;letter-spacing:.04em;background:var(--brand);color:#fff;border-radius:999px;padding:3px 6px;font-weight:800}.tiny{font-size:.72rem}
.subscription-lock{position:fixed;inset:0;z-index:5000;background:rgba(17,29,23,.72);backdrop-filter:blur(7px);display:grid;place-items:center;padding:20px}.subscription-lock[hidden]{display:none}.subscription-lock-card{width:min(520px,100%);background:#fff;border-radius:22px;padding:24px;box-shadow:0 28px 70px rgba(0,0,0,.25);text-align:center}.subscription-lock-card h2{margin:12px 0 8px}.subscription-lock-card p{color:var(--muted);line-height:1.5}.subscription-lock-card .price-choice{text-align:left}.subscription-lock-card .btn{margin-top:14px}
body.cloud-locked main,body.cloud-locked .tabs{filter:blur(1px);pointer-events:none;user-select:none}
.cloud-note{padding:10px 12px;border-radius:12px;background:#eef4f1;color:#365044;font-size:.8rem;line-height:1.4;margin-top:10px}.cloud-note.warn{background:#fff3df;color:#7c5208}.cloud-note.bad{background:#fdecec;color:#873333}
@media(max-width:700px){.sync-mini{display:none}.pricing-mini,.pricing-lock{grid-template-columns:1fr}.subscription-lock-card{padding:20px}.header-actions{gap:6px}.header-actions #accountBtn{padding:8px 10px}}
.price-choice:disabled{opacity:.5;cursor:not-allowed;background:#f5f6f5;border-color:var(--line)}

/* RepFlow v8: developer dashboard, promo codes and subscription switch */
.promo-redeem{margin-top:12px;padding:12px;border:1px solid var(--line);border-radius:12px;background:#fbfcfb;display:grid;gap:7px}.promo-redeem-row{display:grid;grid-template-columns:1fr auto;gap:8px}.promo-redeem-row .btn{white-space:nowrap}.lock-promo{text-align:left;margin-top:14px}.developer-access{border-color:#b9cfc2;background:linear-gradient(180deg,#fff,#f7fbf8)}
.developer-dialog{max-width:min(980px,96vw)}.developer-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:14px}.developer-stats article{border:1px solid var(--line);border-radius:14px;padding:14px;background:#fbfcfb;display:grid;gap:5px}.developer-stats span{font-size:.78rem;color:var(--muted);font-weight:750}.developer-stats strong{font-size:1.5rem;color:var(--brand)}.developer-section{border:1px solid var(--line);border-radius:15px;padding:15px;margin-top:12px;background:#fff}.developer-section h3{margin:0 0 4px;font-size:1rem}.developer-section p{margin:0}.developer-form-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:12px}.developer-form-grid label{display:grid;gap:6px;font-size:.82rem;color:var(--muted)}.developer-warning{margin-top:12px;padding:10px 12px;border-radius:11px;background:#fff3df;color:#7c5208}.switch-row{display:flex!important;align-items:center;gap:8px!important;color:var(--text)!important;font-weight:800!important;white-space:nowrap}.switch-row input{width:20px;height:20px}.developer-codes-list{display:grid;gap:8px;margin-top:12px}.developer-code-card{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:center;border:1px solid var(--line);border-radius:12px;padding:11px 12px;background:#fbfcfb}.developer-code-main{display:grid;gap:3px}.developer-code-title{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.developer-code-title code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-weight:800;font-size:.95rem;color:var(--brand)}.developer-code-meta{font-size:.78rem;color:var(--muted)}.developer-code-actions{display:flex;gap:6px}.promo-builder{grid-template-columns:repeat(3,minmax(0,1fr))}.subscription-panel[hidden],#subscriptionPricing[hidden],#promoRedeemBox[hidden],#developerAccessPanel[hidden]{display:none!important}
@media(max-width:700px){.developer-stats{grid-template-columns:1fr 1fr 1fr}.developer-form-grid,.promo-builder{grid-template-columns:1fr}.developer-code-card{grid-template-columns:1fr}.developer-code-actions .btn{width:100%}.promo-redeem-row{grid-template-columns:1fr}.promo-redeem-row .btn{width:100%}}
@media(max-width:430px){.developer-stats{grid-template-columns:1fr}.developer-section .panel-title-row{align-items:flex-start;flex-direction:column}.switch-row{white-space:normal}}

/* RepFlow v10 — premium dark interface */
:root{
  --bg:#06131b;--panel:rgba(9,24,34,.92);--text:#effaf7;--muted:#91aaa3;--line:rgba(181,255,230,.11);
  --brand:#22e79a;--brand2:#10b86f;--shadow:0 18px 48px rgba(0,0,0,.32);
}
html{background:#06131b}body{min-height:100vh;background:
  radial-gradient(circle at 100% 0%,rgba(20,210,151,.22),transparent 30%),
  radial-gradient(circle at 0% 100%,rgba(56,125,255,.12),transparent 25%),
  linear-gradient(180deg,#06151e 0%,#041019 100%);color:var(--text);letter-spacing:-.01em}
body::before{content:"";position:fixed;inset:0;pointer-events:none;background:linear-gradient(120deg,transparent 0 65%,rgba(34,231,154,.025) 65% 66%,transparent 66%);opacity:.8}
.app-header{background:rgba(5,18,26,.9);border-bottom:1px solid var(--line);backdrop-filter:blur(18px);padding:15px 20px}.brand{font-size:1.65rem;color:#f4fffb;display:flex;align-items:center;gap:8px}.brand>span:last-child{color:var(--brand)}.brand-mark{display:inline-grid;place-items:center;width:38px;height:38px;border-radius:12px;background:linear-gradient(180deg,#0b4a38,#09251f);box-shadow:inset 0 0 0 1px rgba(255,255,255,.1),0 0 24px rgba(34,231,154,.18);color:white}.subtitle{color:#8eaaa2}.year-picker select{background:#0b1c26;color:var(--text);border-color:var(--line)}
.tabs{background:rgba(5,18,26,.92);border-bottom:1px solid var(--line);top:69px;padding:9px 16px;gap:8px}.tab{color:#9bb3ac;border:1px solid transparent;padding:10px 15px}.tab.active{background:linear-gradient(180deg,rgba(18,100,73,.92),rgba(10,60,46,.95));color:white;border-color:rgba(48,246,173,.2);box-shadow:0 0 24px rgba(28,224,151,.09)}main{max-width:1550px;padding:22px}.toolbar h1,h1{font-weight:800;letter-spacing:-.035em}.btn{border-radius:14px;min-height:44px;background:rgba(255,255,255,.04);color:var(--text);box-shadow:none}.btn.primary{background:linear-gradient(90deg,#0e9e61,#22db8b);color:#fff;box-shadow:0 10px 28px rgba(18,194,120,.16)}.btn.primary:hover{background:linear-gradient(90deg,#13b471,#2bea9c)}.btn.secondary{background:rgba(255,255,255,.035);border-color:rgba(255,255,255,.08);color:#e8faf5}.btn.danger{background:rgba(173,38,69,.18);border-color:rgba(255,92,119,.25);color:#ff9caf}.btn.linkish{background:rgba(255,255,255,.035);border-color:var(--line);color:#e6f7f2}
.stat-card,.panel{background:linear-gradient(180deg,rgba(12,30,42,.94),rgba(7,20,29,.94));border-color:rgba(255,255,255,.065);box-shadow:var(--shadow);backdrop-filter:blur(16px)}.stat-card{position:relative;overflow:hidden;border-radius:20px}.stat-card::after{content:"";position:absolute;width:120px;height:120px;border-radius:50%;right:-70px;bottom:-75px;background:radial-gradient(circle,rgba(36,234,158,.14),transparent 70%)}.stat-card span{color:#8ba69f}.stat-card strong{color:#f3fffb}.order-stat{border-color:rgba(139,92,246,.17)}.panel{border-radius:20px}.field{background:rgba(255,255,255,.035);border-color:rgba(255,255,255,.085);color:var(--text);border-radius:13px;min-height:44px}.field::placeholder{color:#627d76}.field:focus{outline:none;border-color:rgba(34,231,154,.5);box-shadow:0 0 0 3px rgba(34,231,154,.07)}select.field{color:var(--text)}option{background:#0a1b25;color:#effaf7}.dist-bar{background:rgba(255,255,255,.06)}.priority-item,.route-list li{background:rgba(255,255,255,.025);border-color:rgba(255,255,255,.06);color:var(--text)}.priority-item:hover{border-color:rgba(34,231,154,.25);background:rgba(34,231,154,.035)}
.table-wrap{border-radius:20px}th{background:#091923;color:#90aaa2;border-color:rgba(255,255,255,.06)}td{border-color:rgba(255,255,255,.055)}tbody tr:hover{background:rgba(255,255,255,.025)}.customer-name{color:#f4fffb}.empty-state{color:#78928b}.map{border-color:rgba(255,255,255,.08);background:#0b1b24;box-shadow:var(--shadow)}.legend{background:rgba(9,24,34,.92)}.leaflet-popup-content-wrapper,.leaflet-popup-tip{background:#0b1e29;color:#effaf7}.leaflet-popup-content .popup-meta{color:#92aaa3}.popup-actions button{background:#0d2430;border-color:rgba(255,255,255,.1);color:white}
.dialog{background:transparent;box-shadow:none}.dialog::backdrop{background:rgba(0,5,9,.72);backdrop-filter:blur(10px)}.dialog-card{background:linear-gradient(180deg,#0b202c,#071721);border:1px solid rgba(255,255,255,.08);border-radius:24px;box-shadow:0 30px 90px rgba(0,0,0,.5);color:var(--text)}.icon-btn{color:#bcd0ca}.visit-history{border-color:rgba(255,255,255,.08)}.visit-row{border-color:rgba(255,255,255,.06)}.order-box,.location-card,.custom-fields-details,.import-help,.import-map-hint,.cloud-note,.promo-redeem,.developer-section,.developer-code-card,.developer-stats article,.price-choice,.subscription-lock-card{background:rgba(255,255,255,.035)!important;border-color:rgba(255,255,255,.075)!important;color:var(--text)!important}.mapping-table-wrap,.import-options{border-color:rgba(255,255,255,.08);background:transparent}.mapping-table tr{background:rgba(255,255,255,.02)!important;border-color:rgba(255,255,255,.07)!important}.mapping-table td,.mapping-table th{border-color:rgba(255,255,255,.05)}.mapping-warning,.developer-warning{background:rgba(245,158,11,.11)!important;color:#f6c45c!important}.mapping-ok{color:var(--brand)}.revenue-delta.positive{color:#37e9a0}.revenue-delta.negative{color:#ff7e92}.status-pill,.sync-mini{background:rgba(255,255,255,.055);color:#a7bdb7}.status-pill.good,.sync-mini.synced{background:rgba(34,231,154,.11);color:#46efaa}.status-pill.warn,.sync-mini.offline{background:rgba(245,158,11,.11);color:#f7c45f}.status-pill.bad,.sync-mini.error{background:rgba(255,92,119,.11);color:#ff879b}.sync-mini.syncing{background:rgba(80,215,255,.1);color:#7bdfff}.price-choice strong,.developer-stats strong,.developer-code-title code{color:#65f2ba}.price-choice.recommended{background:rgba(34,231,154,.055)!important;border-color:rgba(34,231,154,.4)!important}.subscription-lock{background:rgba(0,6,10,.82)}.developer-access{background:linear-gradient(180deg,rgba(17,49,40,.92),rgba(8,29,28,.94))!important;border-color:rgba(34,231,154,.18)!important}.switch-row{color:var(--text)!important}
.toast{background:#071821;border:1px solid rgba(255,255,255,.08);box-shadow:0 14px 42px rgba(0,0,0,.42)}

.processing-hero{display:grid;grid-template-columns:110px 1fr;gap:20px;align-items:center;margin-bottom:14px;background:linear-gradient(115deg,rgba(8,47,39,.96),rgba(7,24,34,.96));border-color:rgba(34,231,154,.16)}.cloud-orb{display:grid;place-items:center;width:92px;height:92px;border-radius:28px;font-size:46px;background:radial-gradient(circle at 40% 35%,#32efaa,#0e6d54 60%,#092d28);box-shadow:0 0 55px rgba(34,231,154,.25),inset 0 0 0 1px rgba(255,255,255,.12)}.processing-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:14px}.processing-jobs-list{display:grid;gap:10px}.processing-job-card{padding:14px;border-radius:16px;background:rgba(255,255,255,.028);border:1px solid rgba(255,255,255,.065)}.processing-job-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.processing-job-stats{display:flex;gap:12px;flex-wrap:wrap;margin-top:9px;color:#9bb2ac}.geocode-progress{height:10px;border-radius:999px;background:rgba(255,255,255,.07);overflow:hidden;margin-top:10px}.geocode-progress-bar{height:100%;border-radius:999px;background:linear-gradient(90deg,#14a96a,#35f1ac);box-shadow:0 0 18px rgba(53,241,172,.22)}.processing-note{margin-top:14px;border-color:rgba(80,215,255,.16);background:linear-gradient(180deg,rgba(12,40,49,.92),rgba(7,23,31,.94))}

@media(max-width:900px){.processing-stats{grid-template-columns:1fr 1fr}.tabs{top:68px}.stats-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:700px){
  main{padding:12px}.app-header{padding:11px 12px}.brand{font-size:1.35rem}.brand-mark{width:34px;height:34px}.tabs{top:61px;padding:7px 8px}.tab{padding:9px 11px}.stats-grid,.processing-stats{grid-template-columns:1fr 1fr}.processing-hero{grid-template-columns:1fr;text-align:left}.cloud-orb{width:76px;height:76px;border-radius:22px;font-size:38px}.table-wrap tr{background:linear-gradient(180deg,rgba(12,30,42,.96),rgba(7,20,29,.96));border-color:rgba(255,255,255,.07)}.table-wrap td[data-label="Klant"]{border-bottom-color:rgba(255,255,255,.06)}.mapping-table tr{background:linear-gradient(180deg,rgba(12,30,42,.96),rgba(7,20,29,.96))!important}.mapping-table .mapping-header{border-bottom-color:rgba(255,255,255,.06)}
}

/* RepFlow v10.1 — mobile chrome fix + recovery card */
.account-recovery-card{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:16px;border-color:rgba(34,231,154,.18);background:linear-gradient(110deg,rgba(10,49,39,.94),rgba(7,24,34,.96))}
.account-recovery-card[hidden]{display:none!important}

@media(max-width:700px){
  /* Op iPhone verdwijnt de bovenbalk gewoon mee bij scrollen. Geen dubbele sticky lagen meer. */
  .app-header{position:relative!important;top:auto!important;z-index:20!important;padding:8px 10px!important;min-height:58px;display:flex;align-items:center;gap:8px;background:rgba(5,18,26,.96)}
  .app-header>div:first-child{min-width:0;flex:1}
  .brand{font-size:1.18rem!important;gap:6px!important;white-space:nowrap}
  .brand-mark{width:30px!important;height:30px!important;border-radius:9px!important;font-size:.9rem}
  .subtitle{display:none!important}
  .header-actions{margin-left:auto;gap:5px!important;flex-wrap:nowrap!important}
  .sync-mini{display:none!important}
  .year-picker{font-size:0!important;gap:0!important}
  .year-picker select{font-size:.82rem!important;padding:7px 27px 7px 9px!important;min-width:70px;border-radius:11px}
  #accountBtn{font-size:.78rem!important;min-height:36px!important;padding:7px 9px!important;border-radius:11px!important;max-width:92px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  #installBtn{display:none!important}

  /* Hoofdnavigatie onderaan zoals een echte app, zodat ze geen schermhoogte bovenaan opeet. */
  .tabs{position:fixed!important;top:auto!important;left:0;right:0;bottom:0;z-index:1200!important;padding:6px 5px calc(6px + env(safe-area-inset-bottom,0px))!important;gap:2px!important;border-top:1px solid rgba(255,255,255,.08)!important;border-bottom:0!important;background:rgba(4,16,24,.96)!important;backdrop-filter:blur(18px);overflow-x:auto;justify-content:space-between}
  .tab{flex:1 1 0;min-width:0!important;padding:8px 4px!important;font-size:.66rem!important;border-radius:10px!important;text-align:center}
  main{padding:12px 12px calc(82px + env(safe-area-inset-bottom,0px))!important}
  .account-recovery-card{align-items:stretch;flex-direction:column;padding:14px!important}
  .account-recovery-card .btn{width:100%}
}

/* RepFlow v10.3 — high-contrast customer pickers on dark UI */
.visit-customer-results,
#routeCustomerResults,
#visitCustomerResults {
  background: linear-gradient(180deg,#0b202b 0%,#071821 100%) !important;
  color: #f4fffb !important;
  border: 1px solid rgba(255,255,255,.10) !important;
  box-shadow: 0 18px 48px rgba(0,0,0,.46) !important;
  border-radius: 16px !important;
  overflow-y: auto !important;
  overscroll-behavior: contain;
  scrollbar-color: rgba(46,231,163,.45) rgba(255,255,255,.04);
}

.customer-result,
.visit-customer-results .customer-result,
#routeCustomerResults .customer-result,
#visitCustomerResults .customer-result {
  background: transparent !important;
  color: #f4fffb !important;
  border: 0 !important;
  border-bottom: 1px solid rgba(255,255,255,.075) !important;
  min-height: 58px;
  padding: 13px 15px !important;
  opacity: 1 !important;
}

.customer-result:last-child,
#routeCustomerResults .customer-result:last-child,
#visitCustomerResults .customer-result:last-child {
  border-bottom: 0 !important;
}

.customer-result-name,
#routeCustomerResults .customer-result-name,
#visitCustomerResults .customer-result-name {
  color: #f7fffc !important;
  font-weight: 800 !important;
  opacity: 1 !important;
}

.customer-result-number,
#routeCustomerResults .customer-result-number,
#visitCustomerResults .customer-result-number {
  color: #8fb8ab !important;
  font-weight: 700;
  opacity: 1 !important;
}

.customer-result:hover,
.customer-result:active,
.customer-result:focus-visible,
#routeCustomerResults .customer-result:hover,
#routeCustomerResults .customer-result:active,
#visitCustomerResults .customer-result:hover,
#visitCustomerResults .customer-result:active {
  background: rgba(34,231,154,.09) !important;
  outline: none !important;
}

.customer-result.selected,
#routeCustomerResults .customer-result.selected,
#visitCustomerResults .customer-result.selected {
  background: linear-gradient(90deg,rgba(20,169,106,.22),rgba(34,231,154,.08)) !important;
  box-shadow: inset 3px 0 0 #2ee7a3;
}

.customer-result-empty,
#routeCustomerResults .customer-result-empty,
#visitCustomerResults .customer-result-empty {
  color: #9db8b0 !important;
  background: transparent !important;
}

@media(max-width:700px){
  .visit-customer-results,
  #routeCustomerResults,
  #visitCustomerResults {
    max-height: 300px !important;
    border-radius: 15px !important;
  }
  .customer-result,
  #routeCustomerResults .customer-result,
  #visitCustomerResults .customer-result {
    min-height: 56px;
    padding: 12px 14px !important;
  }
  .customer-result-name {font-size: .98rem !important;}
  .customer-result-number {font-size: .76rem !important;}
}

/* RepFlow v10.4 — mobile column manager / import layout fix */
@media(max-width:700px){
  /* Eén scrollvlak. Geen afgekapt mapping-vak waar de knoppen overheen vallen. */
  #columnManagerDialog,
  #importDialog{
    width:calc(100vw - 16px)!important;
    max-width:calc(100vw - 16px)!important;
    max-height:calc(100dvh - 18px)!important;
    margin:auto!important;
    overflow:auto!important;
    border-radius:20px!important;
  }

  #columnManagerDialog .dialog-card,
  #importDialog .dialog-card{
    width:100%!important;
    min-width:0!important;
    overflow:visible!important;
    padding:14px!important;
    padding-bottom:calc(18px + env(safe-area-inset-bottom,0px))!important;
  }

  #columnManagerDialog .mapping-table-wrap,
  #importDialog .mapping-table-wrap{
    display:block!important;
    width:100%!important;
    max-height:none!important;
    height:auto!important;
    overflow:visible!important;
    border:0!important;
  }

  #columnManagerDialog .mapping-table,
  #importDialog .mapping-table{
    display:block!important;
    width:100%!important;
    min-width:0!important;
    max-width:100%!important;
  }

  #columnManagerDialog .mapping-table tbody,
  #importDialog .mapping-table tbody{
    display:grid!important;
    gap:12px!important;
    width:100%!important;
  }

  #columnManagerDialog .mapping-table tr,
  #importDialog .mapping-table tr{
    display:grid!important;
    width:100%!important;
    min-width:0!important;
    gap:10px!important;
    padding:14px!important;
    border-radius:16px!important;
    overflow:hidden!important;
  }

  #columnManagerDialog .mapping-table td,
  #importDialog .mapping-table td{
    display:grid!important;
    grid-template-columns:1fr!important;
    gap:5px!important;
    width:100%!important;
    min-width:0!important;
    padding:0!important;
    align-items:stretch!important;
  }

  #columnManagerDialog .mapping-table td::before,
  #importDialog .mapping-table td::before{
    display:block!important;
    font-size:.72rem!important;
    letter-spacing:.01em!important;
    color:#8fa9a1!important;
  }

  #columnManagerDialog .mapping-table .mapping-header,
  #importDialog .mapping-table .mapping-header{
    font-size:1.18rem!important;
    font-weight:850!important;
    color:#f3fffb!important;
    padding-bottom:10px!important;
    margin-bottom:2px!important;
    border-bottom:1px solid rgba(255,255,255,.07)!important;
  }

  #columnManagerDialog .mapping-table .mapping-sample,
  #importDialog .mapping-table .mapping-sample{
    color:#9eb6ae!important;
    font-size:.95rem!important;
    overflow-wrap:anywhere!important;
  }

  #columnManagerDialog .field,
  #importDialog .field{
    min-width:0!important;
    width:100%!important;
    max-width:100%!important;
  }

  /* Acties zijn gewone inhoud onder de laatste kolomkaart. */
  #columnManagerDialog .dialog-actions,
  #importDialog .dialog-actions{
    position:static!important;
    inset:auto!important;
    transform:none!important;
    z-index:auto!important;
    width:100%!important;
    margin-top:16px!important;
    padding:14px 0 2px!important;
    background:transparent!important;
    border:0!important;
    box-shadow:none!important;
    display:grid!important;
    gap:10px!important;
  }

  #columnManagerDialog .dialog-actions .button-row,
  #importDialog .dialog-actions .button-row{
    display:grid!important;
    grid-template-columns:1fr!important;
    gap:8px!important;
    width:100%!important;
  }

  #columnManagerDialog .dialog-actions .btn,
  #importDialog .dialog-actions .btn{
    width:100%!important;
    min-height:50px!important;
  }

  #columnManagerValidation,
  #importValidation{
    position:static!important;
    width:100%!important;
    line-height:1.35!important;
    padding:0 2px!important;
  }
}

/* v10.5 geocode review */
.processing-job-card .review-addresses-btn{margin-top:12px;width:100%}
.geocode-review-list{display:grid;gap:10px;max-height:58vh;overflow:auto;padding-right:2px}
.geocode-review-item{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:center;padding:14px;border:1px solid var(--line);border-radius:14px;background:rgba(255,255,255,.035)}
.geocode-review-item strong{display:block;color:var(--text);margin-bottom:4px}
.geocode-review-address{color:var(--muted);line-height:1.35;overflow-wrap:anywhere}
.geocode-review-status{margin-top:7px;display:inline-flex;padding:4px 8px;border-radius:999px;background:rgba(255,181,71,.12);color:#ffd48b;font-size:.78rem;font-weight:800}
@media(max-width:700px){.geocode-review-list{max-height:none}.geocode-review-item{grid-template-columns:1fr}.geocode-review-item .btn{width:100%}.geocode-review-dialog .dialog-card{max-height:92dvh;overflow:auto}}

/* RepFlow v10.10 — Agenda & planning */
.dashboard-planning-panel{grid-column:1/-1}
.agenda-mini-list{display:grid;gap:8px;margin-top:12px}
.agenda-mini-item{width:100%;display:grid;grid-template-columns:70px 1fr;gap:12px;align-items:center;text-align:left;padding:11px 12px;border-radius:13px;border:1px solid rgba(255,255,255,.065);background:rgba(255,255,255,.025);color:var(--text)}
.agenda-mini-item:hover{border-color:rgba(34,231,154,.24);background:rgba(34,231,154,.035)}
.agenda-mini-time{font-weight:850;color:#36eaa9}
.agenda-mini-item small{display:block;margin-top:3px;color:var(--muted)}

.agenda-controls{display:flex;justify-content:space-between;gap:14px;align-items:center;margin-bottom:14px}
.agenda-mode-tabs{display:flex;gap:7px;flex-wrap:wrap}
.agenda-mode-btn,.quick-date-btn{border:1px solid rgba(255,255,255,.08);background:rgba(255,255,255,.035);color:#b9d0c9;border-radius:999px;padding:8px 13px;font-weight:800}
.agenda-mode-btn.active,.quick-date-btn:active{background:linear-gradient(90deg,#0e8857,#19c982);color:white;border-color:rgba(47,239,172,.28)}
.agenda-navigator{display:grid;grid-template-columns:44px minmax(150px,190px) 44px;gap:7px;align-items:center}
.agenda-navigator .btn{padding:6px;min-height:44px;font-size:1.3rem}
.agenda-title-row{align-items:flex-start}
.agenda-list{display:grid;gap:14px;margin-top:14px}
.agenda-day{border:1px solid rgba(255,255,255,.065);border-radius:18px;overflow:hidden;background:rgba(255,255,255,.018)}
.agenda-day-head{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;background:rgba(255,255,255,.025);border-bottom:1px solid rgba(255,255,255,.06)}
.agenda-day-head>div{display:grid;gap:2px}.agenda-day-head span{color:var(--muted);font-size:.78rem}
.agenda-day-items{display:grid}
.agenda-item{display:grid;grid-template-columns:82px minmax(0,1fr) auto;gap:14px;align-items:center;padding:14px;border-bottom:1px solid rgba(255,255,255,.055);position:relative}
.agenda-item:last-child{border-bottom:0}
.agenda-item.completed{background:linear-gradient(90deg,rgba(21,132,84,.08),transparent)}
.agenda-item.overdue{background:linear-gradient(90deg,rgba(238,166,50,.06),transparent)}
.agenda-time{display:grid;gap:2px}.agenda-time strong{font-size:1.12rem;color:#effdf8}.agenda-time span{font-size:.72rem;color:var(--muted)}
.agenda-item-main{min-width:0}.agenda-item-top{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:3px}.agenda-item-top>strong{font-size:1rem}
.agenda-status{display:inline-flex;padding:4px 8px;border-radius:999px;font-size:.7rem;font-weight:850;border:1px solid transparent}
.agenda-status.planned{color:#7df5bf;background:rgba(27,202,128,.1);border-color:rgba(27,202,128,.16)}
.agenda-status.completed{color:#8fffc9;background:rgba(27,202,128,.13);border-color:rgba(27,202,128,.22)}
.agenda-status.overdue{color:#ffd183;background:rgba(240,163,39,.12);border-color:rgba(240,163,39,.18)}
.agenda-status.cancelled{color:#abb9b5;background:rgba(255,255,255,.04);border-color:rgba(255,255,255,.07)}
.agenda-item-actions{display:flex;gap:7px;flex-wrap:wrap;justify-content:flex-end}
.agenda-empty{display:grid;gap:6px}

.quick-date-row{display:flex;gap:8px;flex-wrap:wrap;margin:4px 0 14px}
.appointment-form-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin-bottom:12px}
#appointmentDialog .dialog-card>label{margin-top:10px}

.more-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.more-card{display:grid;grid-template-columns:52px 1fr auto;gap:14px;align-items:center;text-align:left;padding:18px;border-radius:19px;border:1px solid rgba(255,255,255,.065);background:linear-gradient(180deg,rgba(12,30,42,.94),rgba(7,20,29,.94));color:var(--text);box-shadow:var(--shadow)}
.more-card:hover{border-color:rgba(34,231,154,.24)}
.more-card>span:nth-child(2){display:grid;gap:4px}.more-card small{color:var(--muted);font-weight:500}
.more-icon{width:48px;height:48px;display:grid;place-items:center;border-radius:15px;background:linear-gradient(180deg,rgba(23,130,93,.42),rgba(8,61,45,.45));color:#52f5b7;font-size:1.3rem;border:1px solid rgba(58,240,176,.14)}
.more-chevron{font-size:2rem;color:#63847a}

@media(max-width:700px){
  .dashboard-planning-panel{grid-column:auto}
  .agenda-controls{align-items:stretch;flex-direction:column}
  .agenda-mode-tabs{display:grid;grid-template-columns:1fr 1fr 1fr 1fr;gap:5px}
  .agenda-mode-btn{padding:8px 6px;font-size:.75rem}
  .agenda-navigator{grid-template-columns:44px 1fr 44px;width:100%}
  .agenda-title-row{flex-direction:column;align-items:stretch!important;gap:10px}
  #agendaRouteDayBtn{width:100%}
  .agenda-item{grid-template-columns:58px minmax(0,1fr);gap:10px;padding:13px 12px}
  .agenda-item-actions{grid-column:1/-1;justify-content:stretch}
  .agenda-item-actions .btn{flex:1}
  .agenda-time strong{font-size:1rem}
  .appointment-form-grid{grid-template-columns:1fr 1fr}
  .appointment-form-grid label:last-child{grid-column:1/-1}
  .more-grid{grid-template-columns:1fr}
  .more-card{padding:15px;grid-template-columns:46px 1fr auto}
  .more-icon{width:44px;height:44px}
  #appointmentDialog .dialog-card{max-height:92dvh;overflow:auto;padding-bottom:calc(18px + env(safe-area-inset-bottom,0px))}
}

/* v10.11 — echte wegroute & daginschatting */
.route-overview-panel{display:grid;gap:14px}
.route-plan-head{display:flex;justify-content:space-between;align-items:flex-end;gap:14px;flex-wrap:wrap}
.route-plan-head>div{min-width:220px;flex:1}
.route-visit-duration{display:grid!important;gap:5px;min-width:150px;color:var(--muted);font-size:.8rem}
.route-visit-duration .field{min-height:40px;padding:8px 10px}
.route-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.route-metrics article{background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.065);border-radius:15px;padding:13px 14px;min-height:82px}
.route-metrics span{display:block;color:var(--muted);font-size:.78rem;margin-bottom:8px}
.route-metrics strong{display:block;color:var(--text);font-size:1.2rem}
.route-traffic-note{padding:9px 11px;border-radius:11px;background:rgba(74,134,184,.08);border:1px solid rgba(74,134,184,.12)}
.route-leg{display:block;color:#78dcb1;font-size:.79rem;font-weight:700;margin-top:5px}
.route-list li{position:relative}
@media(max-width:700px){
  .route-metrics{grid-template-columns:1fr 1fr}
  .route-plan-head{align-items:stretch}
  .route-visit-duration{width:100%}
  .route-overview-panel .button-row{display:grid;grid-template-columns:1fr 1fr;width:100%}
  .route-overview-panel .button-row .btn:first-child{grid-column:1/-1}
}

/* v10.12 routeplanning: start/eindadres + vaste afspraakuren */
.route-endpoints-panel{display:grid;gap:14px;margin-bottom:12px}
.route-endpoint-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.route-endpoint-card{display:grid;gap:9px;padding:13px;border:1px solid rgba(255,255,255,.065);border-radius:15px;background:rgba(255,255,255,.022)}
.route-endpoint-head{display:flex;align-items:center;justify-content:space-between;gap:10px}
.route-endpoint-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.route-endpoint-actions .small{flex:1;min-width:160px}
.route-time-row{display:grid;grid-template-columns:minmax(150px,210px) minmax(150px,210px) 1fr;gap:14px;align-items:end}
.route-time-row>label{display:grid;gap:6px;color:var(--muted);font-size:.84rem}
.route-time-help{padding:10px 12px;border-radius:12px;border:1px solid rgba(74,134,184,.12);background:rgba(74,134,184,.07)}
.route-fixed-time{display:inline-flex;align-items:center;gap:6px;margin-top:5px;padding:4px 8px;border-radius:999px;background:rgba(139,92,246,.12);border:1px solid rgba(139,92,246,.18);color:#d6c6ff;font-size:.76rem;font-weight:800}
.route-schedule-line{display:grid;grid-template-columns:72px minmax(0,1fr) auto;gap:10px;align-items:center;margin-top:7px;padding-top:7px;border-top:1px solid rgba(255,255,255,.055);font-size:.78rem}
.route-schedule-line strong{color:#effdf8;font-size:.86rem}
.route-schedule-line .late{color:#ffb36d;font-weight:850}
.route-schedule-line .ok{color:#7df5bf;font-weight:850}
.route-schedule-line .wait{color:#8ecdf4;font-weight:800}
.route-timing-warning{margin-top:10px;padding:10px 12px;border-radius:12px;background:rgba(234,147,47,.09);border:1px solid rgba(234,147,47,.16);color:#ffd499;font-size:.82rem;font-weight:750}
.route-timing-ok{margin-top:10px;padding:10px 12px;border-radius:12px;background:rgba(27,202,128,.08);border:1px solid rgba(27,202,128,.15);color:#8fffc9;font-size:.82rem;font-weight:750}
.route-metrics{grid-template-columns:repeat(5,minmax(0,1fr))}
@media(max-width:900px){.route-metrics{grid-template-columns:1fr 1fr 1fr}.route-endpoint-grid{grid-template-columns:1fr}}
@media(max-width:620px){
  .route-time-row{grid-template-columns:1fr}
  .route-metrics{grid-template-columns:1fr 1fr}
  .route-endpoint-actions{display:grid;grid-template-columns:auto 1fr;align-items:center}
  .route-endpoint-actions .small{min-width:0}
  .route-schedule-line{grid-template-columns:62px minmax(0,1fr)}
  .route-schedule-line>*:last-child{grid-column:2}
}

/* v10.13 — Bedrijfsdashboard / multi-company */
.company-view{padding-bottom:20px}
.company-toolbar{align-items:center}
.company-gate,.company-create{max-width:900px;margin:0 auto 18px}
.company-create-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;margin-top:16px}
.company-head-panel{margin-bottom:16px;background:linear-gradient(135deg,rgba(16,57,54,.96),rgba(7,27,38,.98));border-color:rgba(54,238,167,.17)}
.company-head-main{display:flex;justify-content:space-between;gap:18px;align-items:flex-start}
.company-head-main h2{font-size:clamp(1.7rem,4vw,2.4rem);margin:4px 0 5px}
.eyebrow{text-transform:uppercase;letter-spacing:.12em;font-size:.73rem;color:#51e7a8;font-weight:800}
.company-head-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.company-filter-grid{display:grid;grid-template-columns:1fr 1fr 1.2fr auto;gap:10px;align-items:end;margin-top:18px}
.company-filter-grid label{display:grid;gap:6px;color:var(--muted);font-size:.9rem}
.company-kpi-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px;margin:0 0 16px}
.company-kpi{background:linear-gradient(180deg,#0d2430,#091b24);border:1px solid rgba(255,255,255,.07);border-radius:20px;padding:17px;box-shadow:0 15px 38px rgba(0,0,0,.2)}
.company-kpi.accent{background:linear-gradient(135deg,#104f3c,#0b2d2f);border-color:rgba(50,239,161,.22)}
.company-kpi span,.company-kpi small{display:block;color:var(--muted)}
.company-kpi strong{display:block;font-size:clamp(1.5rem,3vw,2rem);margin:9px 0 4px;color:#f5fffb}
.company-kpi.accent strong{color:#4bf0ad}
.company-dashboard-grid{display:grid;grid-template-columns:1.02fr .98fr;gap:16px;margin-bottom:16px}
.company-rep-cards,.company-activity-list,.company-members-list,.company-invites-list{display:grid;gap:10px}
.company-rep-card{background:#0d222d;border:1px solid rgba(255,255,255,.07);border-radius:18px;padding:15px}
.company-rep-top,.company-rep-foot,.company-member,.company-invite,.activity-top{display:flex;justify-content:space-between;align-items:center;gap:12px}
.company-rep-top strong{font-size:1.08rem}.company-rep-top small{display:block;color:var(--muted);margin-top:2px}
.company-rep-filter-btn{background:rgba(48,227,157,.08);border:1px solid rgba(48,227,157,.18);color:#68efb5;border-radius:999px;padding:7px 10px;font-weight:700;cursor:pointer}
.company-rep-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-top:13px}
.company-rep-metrics span{background:rgba(255,255,255,.035);border-radius:12px;padding:10px;color:var(--muted);font-size:.82rem}
.company-rep-metrics b{display:block;color:#f4fffb;font-size:1rem;margin-bottom:3px}
.company-rep-foot{margin-top:10px;color:var(--muted);font-size:.78rem;flex-wrap:wrap;justify-content:flex-start}
.company-activity-list{max-height:670px;overflow:auto;padding-right:3px}
.company-activity-item{display:grid;grid-template-columns:42px minmax(0,1fr);gap:11px;background:#0d222d;border:1px solid rgba(255,255,255,.06);border-radius:17px;padding:13px}
.activity-icon{width:42px;height:42px;border-radius:14px;display:grid;place-items:center;font-weight:900;background:rgba(53,233,162,.11);color:#5bf0b1;border:1px solid rgba(53,233,162,.14)}
.activity-icon.appointment{background:rgba(79,151,255,.1);color:#85b8ff;border-color:rgba(79,151,255,.14)}
.company-activity-copy{min-width:0}.activity-top strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.activity-top span{color:var(--muted);font-size:.78rem;flex:0 0 auto}
.activity-note{margin-top:7px;color:#d7e7e2;font-size:.88rem;line-height:1.35}.activity-order{display:block;margin-top:8px;color:#62edaf;font-weight:700;font-size:.84rem}
.company-invite-grid{display:grid;grid-template-columns:1fr 1.2fr .75fr auto;gap:10px;margin:14px 0 16px}
.company-member,.company-invite{background:#0c202a;border:1px solid rgba(255,255,255,.06);border-radius:16px;padding:12px 13px}
.company-member.inactive{opacity:.52}
.company-member-main{display:flex;align-items:center;gap:11px;min-width:0}.company-member-main strong,.company-member-main small{display:block}.company-member-main small,.company-invite small{color:var(--muted);margin-top:2px}
.company-avatar{width:38px;height:38px;border-radius:13px;background:linear-gradient(135deg,#1e7c5b,#104132);display:grid;place-items:center;color:white;font-weight:900;flex:0 0 auto}
.company-member-actions{display:flex;align-items:center;gap:9px}.team-role{border-radius:999px;padding:6px 9px;background:rgba(255,255,255,.05);color:var(--muted);font-size:.76rem;font-weight:800}.team-role.owner{color:#ffd77c;background:rgba(255,192,75,.09)}.team-role.manager{color:#72d9ff;background:rgba(76,184,255,.09)}.team-role.rep{color:#71efb7;background:rgba(50,229,158,.08)}
.company-pending-title{color:#f3c769;font-size:.82rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em;margin:4px 0 0}
.company-more-card{border-color:rgba(49,236,163,.16)!important;background:linear-gradient(135deg,rgba(23,91,67,.36),rgba(9,30,41,.94))!important}

@media(max-width:1180px){.company-kpi-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.company-dashboard-grid{grid-template-columns:1fr}.company-filter-grid{grid-template-columns:1fr 1fr}.company-filter-grid .btn{min-height:52px}.company-invite-grid{grid-template-columns:1fr 1fr}}
@media(max-width:680px){
  .company-head-main{display:block}.company-head-actions{justify-content:flex-start;margin-top:12px}.company-filter-grid{grid-template-columns:1fr 1fr}.company-filter-grid label:nth-child(3){grid-column:1/-1}.company-filter-grid .btn{grid-column:1/-1}
  .company-kpi-grid{grid-template-columns:1fr 1fr;gap:9px}.company-kpi{padding:14px}.company-kpi strong{font-size:1.55rem}.company-kpi small{font-size:.75rem}
  .company-invite-grid{grid-template-columns:1fr}.company-rep-metrics{grid-template-columns:1fr 1fr}.company-rep-top{align-items:flex-start}.company-rep-foot{display:grid;gap:3px}.company-activity-list{max-height:none}
  .company-member,.company-invite{align-items:flex-start}.company-member-actions{flex-direction:column;align-items:flex-end}.company-member-main{min-width:0}.company-member-main div{min-width:0}.company-member-main small{word-break:break-word}
  .activity-top{align-items:flex-start}.activity-top span{white-space:nowrap}.company-create-row{grid-template-columns:1fr}
}

/* v10.14 – rustiger manageractiviteiten + Excel acties */
.company-activity-controls{display:flex;gap:10px;align-items:center;justify-content:space-between;flex-wrap:wrap;margin:10px 0 12px}
.company-activity-range{display:flex;gap:6px;padding:4px;background:rgba(255,255,255,.035);border:1px solid rgba(255,255,255,.06);border-radius:14px}
.activity-range-btn{border:0;background:transparent;color:var(--muted);font-weight:800;padding:8px 11px;border-radius:10px;cursor:pointer}
.activity-range-btn.active{background:linear-gradient(135deg,rgba(35,207,138,.26),rgba(20,116,85,.28));color:#effff8;box-shadow:inset 0 0 0 1px rgba(55,235,165,.13)}
.company-activity-type{width:auto;min-width:180px;min-height:42px}
.company-activity-item.compact{padding:10px 11px;grid-template-columns:36px minmax(0,1fr);gap:10px;border-radius:14px}
.company-activity-item.compact .activity-icon{width:36px;height:36px;border-radius:12px;font-size:.9rem}
.company-activity-item.compact .activity-top strong{font-size:.96rem}
.company-activity-item.compact .activity-top span{font-size:.75rem}
.company-activity-item.compact .activity-order{display:inline-flex;margin-top:5px;padding:3px 7px;border-radius:999px;background:rgba(52,233,162,.075);font-size:.77rem}
.activity-details{margin-top:5px;color:var(--muted);font-size:.8rem}
.activity-details summary{cursor:pointer;color:#a9c4bc;font-weight:700}
.activity-details>div{padding-top:5px;color:#d7e7e2;line-height:1.35}
.company-activity-more{width:100%;margin-top:10px}
@media(max-width:680px){
  .company-toolbar .button-row{width:100%;display:grid;grid-template-columns:1fr 1fr;gap:8px}
  .company-toolbar .button-row .status-pill{grid-column:1/-1;width:max-content}
  .company-toolbar .button-row .btn{min-height:44px;padding-inline:10px;font-size:.84rem}
  .company-activity-controls{display:grid;grid-template-columns:1fr;gap:8px}
  .company-activity-range{width:100%;display:grid;grid-template-columns:1fr 1fr}
  .activity-range-btn{width:100%}
  .company-activity-type{width:100%}
}

/* v10.14 commercial dashboard refinements: targets + compact upcoming planning */
.target-panel{background:linear-gradient(145deg,#0e2b29,#0b202b);border-color:rgba(52,233,162,.18)}
.target-percent{font-size:1.45rem;color:#48efac}
.target-main{display:flex;align-items:baseline;gap:8px;margin:10px 0}.target-main>strong{font-size:clamp(1.8rem,5vw,2.45rem)}.target-main span{color:var(--muted)}
.target-progress{height:12px;background:rgba(255,255,255,.06);border-radius:999px;overflow:hidden}.target-progress>span{display:block;height:100%;width:0;background:linear-gradient(90deg,#11b977,#31edab);border-radius:999px;transition:width .3s ease}
.target-foot{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-top:10px;color:var(--muted);font-size:.9rem}.target-foot .good{color:#45e7a5}.target-foot .warn{color:#f1c168}
.company-kpi-grid{grid-template-columns:repeat(7,minmax(0,1fr))}.company-kpi.target-kpi{background:linear-gradient(145deg,#0f3930,#0b252d);border-color:rgba(52,233,162,.22)}.company-kpi.target-kpi strong{color:#49eead}
.company-upcoming-panel{margin-bottom:16px}.company-upcoming-filter{width:auto;min-width:190px}.company-upcoming-list{display:grid;gap:8px}.company-upcoming-item{display:grid;grid-template-columns:92px minmax(0,1fr) auto;align-items:center;gap:12px;background:#0d222d;border:1px solid rgba(255,255,255,.06);border-radius:15px;padding:11px 13px}.company-upcoming-date{font-weight:800;color:#b9d8cf}.company-upcoming-main{min-width:0}.company-upcoming-main strong{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.company-upcoming-main small{display:block;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.company-upcoming-time{font-weight:800;color:#46e9a9;text-align:right}.company-upcoming-time.no-time{color:var(--muted)}
.company-target-controls{display:grid;grid-template-columns:180px minmax(220px,1fr) auto;gap:10px;align-items:end}.company-rep-target-list{display:grid;gap:9px;margin-top:14px}.company-rep-target-row{display:grid;grid-template-columns:minmax(180px,1fr) minmax(180px,260px) auto;gap:10px;align-items:center;background:#0d222d;border:1px solid rgba(255,255,255,.06);border-radius:15px;padding:11px}.company-rep-target-row small{display:block;color:var(--muted)}
.company-rep-target-progress{margin-top:8px;height:7px;background:rgba(255,255,255,.06);border-radius:999px;overflow:hidden}.company-rep-target-progress span{display:block;height:100%;background:linear-gradient(90deg,#12b978,#31e9a8);border-radius:999px}
.company-rep-card .rep-target-summary{margin-top:10px;padding-top:10px;border-top:1px solid rgba(255,255,255,.06)}.company-rep-card .rep-target-summary strong{color:#49e9aa}.company-rep-card .rep-target-summary small{color:var(--muted)}
@media(max-width:1180px){.company-kpi-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.company-target-controls{grid-template-columns:1fr 1fr}.company-target-controls .btn{grid-column:1/-1}.company-rep-target-row{grid-template-columns:1fr 220px auto}}
@media(max-width:680px){.company-kpi-grid{grid-template-columns:1fr 1fr}.company-upcoming-filter{width:100%;min-width:0}.company-upcoming-panel .panel-title-row{display:grid;gap:10px}.company-upcoming-item{grid-template-columns:74px minmax(0,1fr);gap:8px}.company-upcoming-time{grid-column:2;text-align:left;margin-top:-2px}.company-target-controls,.company-rep-target-row{grid-template-columns:1fr}.company-rep-target-row .btn{width:100%}.target-foot{display:grid}.company-kpi.target-kpi{grid-column:1/-1}}

/* v10.16 — planning en bezoeken strikt gescheiden */
.visit-duplicate-warning{
  display:flex;flex-direction:column;gap:6px;margin:10px 0 14px;padding:14px 16px;
  border-radius:16px;border:1px solid rgba(245,165,65,.35);background:rgba(245,165,65,.10);color:#ffe4b7;
}
.visit-duplicate-warning span{color:#c8b99e;font-size:.92rem;line-height:1.4;}
.duplicate-pill{display:inline-flex;margin-left:7px;padding:3px 7px;border-radius:999px;background:rgba(245,165,65,.16);color:#ffd28a;font-size:.72rem;vertical-align:middle;}
#visitSubmitBtn:disabled{opacity:.62;cursor:wait;}

.planning-separate{margin-top:6px;color:#91aaa2;font-size:.78rem;line-height:1.25;}

/* RepFlow v10.16 updated — app-level Back navigation */
.header-brand-wrap{min-width:0;flex:1}
.app-back-btn{
  display:inline-flex;align-items:center;justify-content:center;gap:5px;
  min-height:40px;padding:7px 11px;border-radius:12px;
  border:1px solid rgba(255,255,255,.10);
  background:rgba(255,255,255,.045);color:#effbf7;font-weight:800;
  flex:0 0 auto;
}
.app-back-btn[hidden]{display:none!important}
.app-back-btn>span:first-child{font-size:1.55rem;line-height:.8;margin-top:-1px;color:var(--brand)}
.app-back-btn:hover,.app-back-btn:active{background:rgba(34,231,154,.09);border-color:rgba(34,231,154,.24)}
.app-back-label{font-size:.8rem}

@media(max-width:700px){
  .app-header{justify-content:flex-start!important}
  .header-brand-wrap{min-width:0;flex:1!important}
  .app-back-btn{min-width:38px!important;min-height:38px!important;padding:6px 8px!important;border-radius:11px!important}
  .app-back-label{display:none!important}
  .app-back-btn>span:first-child{font-size:1.65rem!important}
  .app-back-btn:not([hidden]) + .header-brand-wrap .brand-mark{display:none!important}
  .app-back-btn:not([hidden]) + .header-brand-wrap .brand{font-size:1.08rem!important}
}

/* v10.16 routekaart: alleen geplande stops, altijd genummerd en niet geclusterd */
.leaflet-marker-icon.rep-route-marker{background:transparent!important;border:0!important}
.route-number-pin{width:38px;height:38px;border-radius:50%;border:3px solid #fff;box-shadow:0 4px 14px rgba(0,0,0,.42),0 0 0 2px rgba(7,19,27,.28);display:flex;align-items:center;justify-content:center;color:#fff;font-weight:900;font-size:16px;line-height:1;text-shadow:0 1px 2px rgba(0,0,0,.55)}
.route-number-pin span{display:block;transform:none}
@media(max-width:700px){.route-number-pin{width:36px;height:36px;font-size:15px}.leaflet-marker-icon.rep-route-marker{width:36px!important;height:36px!important}}

/* v10.16 navigation chooser */
.navigation-choice-list{display:grid;gap:10px;margin-top:12px}.navigation-choice{display:grid;grid-template-columns:44px 1fr auto;align-items:center;gap:12px;width:100%;text-align:left;border:1px solid rgba(255,255,255,.1);background:#0d2430;color:#effaf7;border-radius:14px;padding:12px 14px}.navigation-choice:hover,.navigation-choice:focus{border-color:#24d995;background:#103126}.navigation-choice strong,.navigation-choice small{display:block}.navigation-choice small{color:#91aaa2;margin-top:2px}.navigation-app-icon{width:38px;height:38px;border-radius:12px;display:grid;place-items:center;background:rgba(255,255,255,.07);font-weight:900;font-size:1.1rem}.navigation-dialog .dialog-card{max-width:520px}.route-card-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.popup-actions{flex-wrap:wrap}
@media(max-width:700px){.navigation-choice{min-height:64px}.route-card-actions{justify-content:flex-start;margin-top:10px}.route-card-row{align-items:flex-start;flex-direction:column}}


/* v17 — automatische updatecontrole op alle toestellen */
.app-update-banner{position:fixed;left:50%;bottom:calc(84px + env(safe-area-inset-bottom));transform:translateX(-50%);z-index:100000;width:min(92vw,560px);display:flex;align-items:center;justify-content:space-between;gap:14px;padding:13px 14px;border-radius:16px;border:1px solid rgba(52,233,162,.28);background:rgba(7,27,32,.97);box-shadow:0 14px 40px rgba(0,0,0,.4);backdrop-filter:blur(16px)}
.app-update-banner[hidden]{display:none!important}.app-update-banner strong,.app-update-banner span{display:block}.app-update-banner strong{color:#effff8}.app-update-banner span{margin-top:3px;color:#9fb7b0;font-size:.8rem;line-height:1.3}.app-update-banner button{border:0;border-radius:12px;background:linear-gradient(135deg,#22d995,#17b778);color:#062018;font-weight:900;padding:10px 13px;white-space:nowrap}
@media(max-width:560px){.app-update-banner{align-items:flex-start}.app-update-banner button{align-self:center}.app-update-banner span{font-size:.75rem}}
\n\n/* v17 mobile WebKit hardening — Safari + Chrome on iPhone */\nbutton,.btn,.tab,.more-card,[role="button"],[data-open-view],[data-open-customer],[data-navigate-customer]{touch-action:manipulation;-webkit-tap-highlight-color:rgba(50,235,161,.14)}\nhtml:not(.repflow-identity-open) [class*="netlify-identity-widget"],\nhtml:not(.repflow-identity-open) [id*="netlify-identity-widget"]{pointer-events:none!important}\n@supports (-webkit-touch-callout:none){\n  body{-webkit-text-size-adjust:100%}\n  .bottom-nav,.more-card,.btn,.tab{cursor:pointer}\n}\n
/* v17.0.3 — vaste dagroute en volgende-stop bediening */
.route-progress-panel{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:14px 0;padding:14px 16px;border:1px solid rgba(103,232,190,.22);border-radius:16px;background:rgba(22,217,147,.055)}
.route-progress-panel>div:first-child{display:flex;flex-direction:column;gap:4px;min-width:0}
.route-current-stop{outline:2px solid rgba(103,232,190,.42);outline-offset:-2px;border-radius:16px}
.route-past-stop{opacity:.68}
.route-current-badge,.route-done-badge{display:inline-flex;align-items:center;margin-left:9px;padding:3px 8px;border-radius:999px;font-size:.72rem;font-weight:800;vertical-align:2px}
.route-current-badge{background:rgba(22,217,147,.16);color:#71e8bd;border:1px solid rgba(22,217,147,.28)}
.route-done-badge{background:rgba(148,163,184,.12);color:#aab7c4;border:1px solid rgba(148,163,184,.18)}
@media(max-width:720px){.route-progress-panel{align-items:stretch;flex-direction:column}.route-progress-panel .button-row{display:grid;grid-template-columns:1fr 1fr}.route-progress-panel .btn{width:100%}}
@media(max-width:430px){.route-progress-panel .button-row{grid-template-columns:1fr}}

/* v17.0.4 — handmatige vaste routevolgorde */
.route-title-line{display:inline-flex;align-items:center;gap:9px;max-width:100%}
.route-drag-handle{display:inline-grid;place-items:center;width:34px;height:34px;flex:0 0 34px;border:1px solid rgba(255,255,255,.12);border-radius:10px;background:rgba(255,255,255,.045);color:var(--muted);font-size:1.08rem;font-weight:800;line-height:1;cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
.route-drag-handle:active{cursor:grabbing}
.route-drag-help{display:block;margin-top:4px;line-height:1.35}
.route-reordering{user-select:none;-webkit-user-select:none}
.route-list li.route-dragging{z-index:20;transform:scale(1.015);border-color:rgba(34,231,154,.55);box-shadow:0 14px 34px rgba(0,0,0,.28);opacity:.96}
.route-reordering [data-route-item]:not(.route-dragging){transition:transform .12s ease}
@media(max-width:700px){.route-drag-handle{width:38px;height:38px;flex-basis:38px}.route-title-line{gap:7px}}


/* v17.0.5 — iPhone-style swipe back */
.swipe-back-indicator{position:fixed;left:max(8px,env(safe-area-inset-left));top:50%;z-index:5000;width:44px;height:44px;border-radius:50%;display:grid;place-items:center;pointer-events:none;opacity:0;transform:translate(-22px,-50%) scale(.82);background:rgba(5,24,31,.94);border:1px solid rgba(34,231,154,.28);box-shadow:0 8px 24px rgba(0,0,0,.28);transition:opacity .12s ease,transform .12s ease,border-color .12s ease}
.swipe-back-indicator span{font-size:2rem;line-height:1;color:var(--brand);transform:translateX(-1px)}
.swipe-back-indicator.active{opacity:calc(.45 + (var(--swipe-progress,0) * .55));transform:translate(calc(-22px + (var(--swipe-progress,0) * 24px)),-50%) scale(calc(.82 + (var(--swipe-progress,0) * .18)))}
.swipe-back-indicator.ready{border-color:rgba(34,231,154,.72)}

/* v17.0.7 — bezochte klanten uit actieve dagroute */
.route-card-actions .route-visited-btn{background:linear-gradient(135deg,#0aa86e,#20d58d);border-color:#20d58d;color:#fff;font-weight:800}
.route-completed-wrap{list-style:none!important;margin-top:14px;padding:0!important;border:0!important;background:transparent!important}
.route-completed-section{border:1px solid rgba(74,214,157,.3);border-radius:16px;background:rgba(13,57,48,.25);overflow:hidden}
.route-completed-section summary{cursor:pointer;padding:14px 16px;font-weight:800;color:#78e3b9;list-style:none}
.route-completed-section summary::-webkit-details-marker{display:none}
.route-completed-section summary::after{content:'⌄';float:right;opacity:.75}
.route-completed-section[open] summary::after{content:'⌃'}
.route-completed-list{display:grid;gap:0;border-top:1px solid rgba(74,214,157,.18)}
.route-completed-row{display:flex;align-items:flex-start;gap:10px;padding:11px 16px;border-bottom:1px solid rgba(255,255,255,.06)}
.route-completed-row:last-child{border-bottom:0}
.route-completed-row span:last-child{display:grid;gap:2px}
.route-completed-row small{color:var(--muted,#94a9a5);font-size:.82rem}
.route-completed-check{display:grid;place-items:center;width:24px;height:24px;border-radius:50%;background:rgba(32,213,141,.14);color:#65e7b3;font-weight:900;flex:0 0 24px}
@media(max-width:640px){.route-card-actions{flex-wrap:wrap}.route-card-actions .btn{flex:1 1 calc(50% - 6px)}.route-card-actions .route-visited-btn{order:2}.route-card-actions .danger{order:3}}

/* v17.0.7 — zichtbaar fysiek verslepen van dagroute-kaarten */
.route-list li.route-drag-origin{opacity:.22;border-style:dashed;box-shadow:none;transform:none}
.route-drag-ghost{position:fixed!important;z-index:10000!important;margin:0!important;pointer-events:none!important;touch-action:none!important;opacity:.98!important;transform:scale(1.018)!important;transform-origin:center center;box-shadow:0 22px 55px rgba(0,0,0,.48)!important;border-color:rgba(34,231,154,.72)!important;background:var(--panel)!important;will-change:left,top,transform;transition:none!important}
.route-drag-ghost .route-drag-handle{cursor:grabbing}
.route-reordering{cursor:grabbing}

/* v17.0.7 mobile bezoekformulier: voorkom iOS auto-zoom en hou het formulier boven het toetsenbord */
@media(max-width:700px){
  #visitDialog{
    max-height:calc(var(--repflow-vvh, 100dvh) - 8px);
    margin:4px auto;
    overflow:auto;
  }
  #visitDialog .dialog-card{
    max-height:calc(var(--repflow-vvh, 100dvh) - 8px);
    overflow:auto;
    -webkit-overflow-scrolling:touch;
    padding-bottom:calc(20px + env(safe-area-inset-bottom,0px));
  }
  #visitDialog .field,
  #appointmentDialog .field,
  #customerDialog .field{
    font-size:16px!important;
  }
}

/* RepFlow v18: automatische bezoekplanning en winkelverrijking */
.planning-proposal-list{display:grid;gap:10px;margin-top:12px}.planner-day{border:1px solid var(--border,#dfe5ea);border-radius:14px;padding:12px;background:var(--card,#fff)}.planner-day-head{display:flex;justify-content:space-between;gap:10px;align-items:center;margin-bottom:8px}.planner-day-head span{font-size:.78rem;color:var(--muted,#68737d)}.planner-suggestion{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:8px 0;border-top:1px solid rgba(120,130,140,.14)}.planner-suggestion:first-of-type{border-top:0}.planner-suggestion span:first-child{display:flex;flex-direction:column;gap:2px}.planner-suggestion small{color:var(--muted,#68737d)}.planner-tier-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px;align-items:center}.opening-hours-preview{display:flex;flex-direction:column;gap:4px}.planner-proposal-panel .panel-title-row{align-items:center}@media(max-width:640px){.planner-proposal-panel .panel-title-row{align-items:stretch;flex-direction:column}.planner-tier-grid{grid-template-columns:1fr 1fr}}

.verification-stats-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.verification-stats-grid>div{display:flex;flex-direction:column;gap:2px;padding:10px;border:1px solid var(--border,#dfe5ea);border-radius:12px}.verification-stats-grid strong{font-size:1.08rem}.verification-stats-grid span{font-size:.75rem;color:var(--muted,#68737d)}.verification-status-panel .geocode-progress{display:block;overflow:hidden}.verification-status-panel .geocode-progress-bar{transition:width .25s ease}@media(min-width:720px){.verification-stats-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}
.legal-page{max-width:850px;margin:0 auto;padding:32px 20px 64px;line-height:1.6}.legal-page h1,.legal-page h2{margin-top:1.3em}.privacy-account-panel a{color:inherit}.btn.danger{border-color:#a52222;color:#a52222}
.smart-summary-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px;margin:12px 0}.smart-kpi{padding:12px;border:1px solid var(--border,#d9e0e7);border-radius:12px}.smart-kpi strong{display:block;font-size:1.35rem}.timeline-list{display:grid;gap:8px;margin-top:10px}.timeline-item{padding:10px 12px;border-left:3px solid currentColor;background:rgba(127,127,127,.07);border-radius:8px}.status-overdue{font-weight:700}.frequency-pill{font-size:.78rem;padding:3px 7px;border-radius:999px;background:rgba(127,127,127,.12)}

/* v20.4 speech recording controls */
#visitDictateBtn.recording{border-color:#ff5d73;background:rgba(255,93,115,.12);color:#ffd7dd;box-shadow:0 0 0 3px rgba(255,93,115,.08)}
#visitDictateStatus.recording{display:inline-flex;align-items:center;min-height:24px;font-weight:750;color:#ff8ea0;animation:visitRecordingPulse 1.15s ease-in-out infinite}
@keyframes visitRecordingPulse{0%,100%{opacity:1}50%{opacity:.52}}
@media(max-width:600px){#visitDictateBtn{min-height:48px}#visitDictateStatus{flex:1;min-width:130px}}


/* RepFlow v20.5 — beter leesbare planvoorstellen + klant vervangen */
.planner-proposal-panel .planner-day{background:#102631!important;border-color:rgba(82,211,160,.30)!important;color:#f4fbf8!important;box-shadow:none!important}
.planner-proposal-panel .planner-day-head strong{color:#f4fbf8!important}
.planner-proposal-panel .planner-day-head span{color:#9db8b0!important}
.planner-proposal-panel .planner-suggestion{border-top-color:rgba(157,184,176,.18)!important}
.planner-proposal-panel .planner-suggestion-copy{display:flex;flex-direction:column;gap:4px;min-width:0;flex:1}
.planner-proposal-panel .planner-suggestion-copy strong{color:#f4fbf8!important;font-weight:800;line-height:1.22}
.planner-proposal-panel .planner-suggestion-copy small{color:#a7c1b9!important;font-size:.82rem;line-height:1.3}
.planner-proposal-panel .planner-suggestion-actions{display:flex;align-items:center;gap:8px;flex:0 0 auto}
.planner-proposal-panel .planner-replace-btn{padding:7px 10px!important;min-height:36px!important;font-size:.78rem!important;border-radius:10px!important}
@media(max-width:640px){.planner-proposal-panel .planner-suggestion{align-items:flex-start}.planner-proposal-panel .planner-suggestion-actions{flex-direction:column;align-items:flex-end;gap:6px}.planner-proposal-panel .planner-replace-btn{padding:6px 9px!important}}

/* v20.6 — verlof & automatische voorplanning */
.leave-periods-list{display:grid;gap:8px;margin-top:10px}.leave-period-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:11px 12px;border:1px solid var(--border);border-radius:12px;background:rgba(255,255,255,.025)}.leave-period-row>div{display:flex;flex-direction:column;gap:3px}.leave-period-row small{color:var(--muted)}.agenda-leave-day{border-color:rgba(255,196,92,.32)!important}.leave-day-card{display:flex;flex-direction:column;gap:3px;padding:14px;border-radius:12px;background:rgba(255,196,92,.08);border:1px dashed rgba(255,196,92,.35)}.leave-day-card strong{color:#ffd278}.leave-day-card span{color:var(--muted)}@media(max-width:640px){.leave-period-row{align-items:flex-start;flex-direction:column}.leave-period-row .btn{width:100%}}

/* v20.8: keep leave management available without pushing the working agenda down */
.leave-planning-panel-bottom{margin-top:18px}
.leave-periods-details{margin-top:10px}
.leave-periods-details>summary{cursor:pointer;font-weight:700;color:var(--muted);padding:10px 0;list-style-position:inside}
.leave-periods-details[open]>summary{margin-bottom:8px}

/* v21.1.7 - Team beheren / uitnodigen responsive */
.company-invite-grid{
  display:grid;
  grid-template-columns:
    minmax(180px,1fr)
    minmax(220px,1.2fr)
    minmax(170px,.75fr)
    auto;
  gap:12px;
  align-items:end;
  width:100%;
}

.company-invite-grid > *{
  min-width:0;
  max-width:100%;
}

.company-invite-grid .btn{
  white-space:nowrap;
}

@media (max-width:1100px){
  .company-invite-grid{
    grid-template-columns:1fr 1fr;
  }

  .company-invite-grid .btn{
    width:100%;
  }
}

@media (max-width:700px){
  .company-invite-grid{
    grid-template-columns:1fr;
  }
}
