:root{--fleuren-navy:#0b2743;--fleuren-blue:#145a86;--fleuren-light:#eef6fb;--fleuren-orange:#ee6b3e;--line:#cdd8e3}
.hours-app-page{margin:0;background:linear-gradient(180deg,#eef6fb,#f7fafc 34%,#fff);color:#162432;font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;min-height:100vh}
.hours-header{background:linear-gradient(135deg,#09243d,#114f77);color:#fff;padding:18px max(18px,env(safe-area-inset-left));display:grid;grid-template-columns:auto 74px 1fr;gap:16px;align-items:center;box-shadow:0 8px 30px #09243d33}
.hours-logo{width:70px;height:70px;object-fit:contain;background:#fff;border-radius:18px;padding:7px}.hours-back{color:#fff;text-decoration:none;font-weight:800}.hours-header h1{margin:2px 0;font-size:clamp(24px,5vw,36px)}.hours-header p{margin:0;opacity:.85}.hours-kicker{font-size:12px;text-transform:uppercase;letter-spacing:.12em;opacity:.78;font-weight:800}
.hours-shell{max-width:1180px;margin:24px auto;padding:0 16px 48px}.hours-steps{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:16px}.hours-step{border:1px solid #c7d5e2;background:#fff;border-radius:16px;padding:12px;display:flex;align-items:center;gap:10px;font-weight:800;color:#52687c}.hours-step b{width:31px;height:31px;border-radius:50%;background:#e7eff5;display:grid;place-items:center}.hours-step.active{border-color:#145a86;color:#0b2743;box-shadow:0 5px 18px #145a8618}.hours-step.active b{background:#145a86;color:#fff}
.hours-panel{background:#fff;border:1px solid #dce5ed;border-radius:22px;padding:clamp(16px,3vw,28px);box-shadow:0 12px 36px #163c5a14}.hours-panel.hidden{display:none}.hours-panel-title{display:flex;justify-content:space-between;align-items:center;gap:16px}.hours-panel-title h2{margin:2px 0 8px;font-size:25px}.hours-panel-title>span{font-size:34px}.hours-source-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin:22px 0}.hours-source-card{border:2px solid #dbe5ed;background:#f9fcfe;border-radius:18px;padding:18px;display:flex;flex-direction:column;gap:8px;text-align:left;color:inherit;cursor:pointer}.hours-source-card:hover{border-color:#82acc8}.hours-source-card input{width:100%}.hours-source-icon{font-size:30px}.hours-source-status{font-size:12px;font-weight:800;color:#145a86}.hours-prompt-card{border:1px solid #d6e2eb;border-radius:16px;background:#f8fbfd;overflow:hidden}.hours-prompt-card summary{padding:15px 18px;cursor:pointer;display:grid;grid-template-columns:auto 1fr;column-gap:10px}.hours-prompt-card summary small{grid-column:2;color:#63798c}.hours-prompt-body{padding:0 18px 18px}.hours-prompt-body textarea{width:100%;min-height:250px;border:1px solid #cad7e1;border-radius:12px;padding:12px;font:13px/1.45 ui-monospace,SFMono-Regular,Menlo,monospace;background:#fff}.hours-next-row{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:10px;margin-top:22px}
.hours-toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:18px 0}.hours-validation{margin-left:auto;font-weight:800;color:#52687c}.hours-validation.good{color:#16814c}.hours-validation.bad{color:#b2382e}.hours-table-wrap{overflow:auto;border:1px solid #d9e3eb;border-radius:14px}.hours-table{border-collapse:collapse;min-width:900px;width:100%}.hours-table th,.hours-table td{border-bottom:1px solid #e1e8ee;padding:7px}.hours-table th{background:#edf4f8;text-align:left;font-size:12px;text-transform:uppercase;letter-spacing:.05em}.hours-table input,.hours-table select{width:100%;box-sizing:border-box;border:1px solid #c7d4de;border-radius:8px;padding:8px;background:#fff}.hours-table .delete-row{border:0;background:#ffe9e5;color:#a62d22;border-radius:8px;padding:8px 10px}.hours-overnights{margin-top:20px;border-top:1px solid #e1e8ee;padding-top:18px}.hours-overnights h3{margin:0 0 12px}.hours-overnights #overnightGrid{display:grid;grid-template-columns:repeat(5,minmax(130px,1fr));gap:8px}.overnight-item{display:flex;align-items:center;gap:8px;background:#f4f8fb;border-radius:10px;padding:10px}.overnight-item input{width:20px;height:20px}.hours-standard-card{background:#eef7fc;border-left:5px solid #145a86;padding:15px;border-radius:12px;margin:15px 0}.hours-standard-card p{margin:5px 0 0}.hours-export-grid{display:grid;grid-template-columns:2fr 1.2fr .7fr .8fr;gap:10px}.hours-export-grid label{display:flex;flex-direction:column;gap:5px;font-weight:800}.hours-export-grid input{padding:11px;border:1px solid #c6d3dd;border-radius:10px}.hours-summary{margin-top:18px;display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}.summary-box{padding:14px;border-radius:12px;background:#f4f8fb}.summary-box span{display:block;color:#60758a;font-size:12px}.summary-box strong{font-size:20px}.hours-warning-list{margin-top:14px;padding:12px;border-radius:12px;background:#fff6e5;color:#7d5615}.hours-warning-list.hidden{display:none}.hours-footnote{font-size:12px;color:#677b8d;margin-top:16px}
@media(max-width:760px){.hours-header{grid-template-columns:auto 54px 1fr}.hours-logo{width:50px;height:50px}.hours-source-grid{grid-template-columns:1fr}.hours-steps span{font-size:12px}.hours-export-grid{grid-template-columns:1fr 1fr}.hours-overnights #overnightGrid{grid-template-columns:1fr 1fr}.hours-shell{margin-top:14px}.hours-panel{border-radius:16px}.hours-header p{display:none}}
@media print{.hours-header,.hours-steps,.hours-next-row,.hours-footnote{display:none!important}.hours-shell{margin:0;max-width:none}.hours-panel{box-shadow:none;border:0}.hours-panel[data-step-panel="3"]{display:block!important}}

.timeline-week-filter{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px;align-items:end}.timeline-week-filter label{display:grid;gap:4px;font-size:12px;font-weight:700;color:#124e70}.timeline-week-filter input{width:100%;box-sizing:border-box;border:1px solid #c8d6df;border-radius:10px;padding:9px;background:#fff}.timeline-week-filter button{grid-column:1/-1;width:100%}

.hours-source-card button.compact{margin-top:6px;width:100%;padding:10px 12px}.hours-source-card button:disabled{opacity:.5;cursor:not-allowed}.message{display:block;min-height:1.2em;color:#52687c}.hours-import-card{margin-top:14px;border:1px solid #d6e2eb;border-radius:16px;background:#f8fbfd;padding:15px 18px;display:grid;gap:10px}.hours-import-card>div{display:grid;gap:3px}.hours-import-card small{color:#63798c}.hours-import-card input{width:100%}

.template-picker{margin-top:6px;padding:11px;border:1px solid #c9d9e5;border-radius:12px;background:#fff;display:grid;gap:7px}.template-picker strong{font-size:13px}.template-picker small{color:#63798c}.template-picker .compact{width:auto;justify-self:start;padding:7px 10px}
.hours-admin-details{margin-top:18px;border:1px dashed #c8d6df;border-radius:14px;padding:12px;background:#fafcfd}.hours-admin-details summary{cursor:pointer;font-weight:800;color:#52687c}.hours-background-fields{position:absolute!important;left:-10000px!important;width:1px!important;height:1px!important;overflow:hidden!important}.pdf-action-card{margin-top:14px;border:1px solid #d6e2eb;border-radius:16px;background:#f8fbfd;padding:16px;display:grid;gap:9px}.pdf-action-card small{color:#63798c}.pdf-action-card .primary{justify-self:start}.pdf-preview-wrap{margin-top:16px;border:1px solid #cbd9e3;border-radius:16px;overflow:hidden;background:#e8eef3}.pdf-preview-wrap.hidden{display:none}.pdf-preview-wrap iframe{display:block;width:100%;height:min(72vh,820px);border:0;background:#fff}.admin-tools{justify-content:flex-start;margin-top:10px}

/* v263 — één gezamenlijk invoervak */
.hours-source-main{grid-column:1/-1}
.hours-subblock{margin-top:12px;padding:12px;border-radius:10px;background:rgba(23,49,62,.04);border:1px solid rgba(23,49,62,.1)}
.hours-subblock>strong{display:block;margin-bottom:6px;font-size:.9rem}
.geo-lookup{margin-top:10px;display:flex;flex-direction:column;gap:6px}
.geo-lookup button{width:100%}

/* v266 — kaartkoppeling per regel */
.loc-cell{display:flex;align-items:center;gap:6px}
.loc-cell input{flex:1;min-width:0}
.map-link{flex:none;text-decoration:none;font-size:1.05rem;line-height:1;padding:6px;border-radius:8px;background:rgba(23,49,62,.07)}
.map-link:hover{background:rgba(0,109,161,.16)}

/* v267 — gemiddelde snelheid */
.speed-source{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:10px 0}
.speed-source label{font-size:.85rem;font-weight:600}
.speed-source small{opacity:.65;font-size:.78rem;flex-basis:100%}
.speed-cell{text-align:right;white-space:nowrap}
.speed-value{font-variant-numeric:tabular-nums;font-weight:600}
.speed-value.geschat{opacity:.7;font-weight:500}
.speed-empty{opacity:.35}

/* v269 — regels die nog aandacht nodig hebben */
#timeRows tr.rij-controle > td{background:#ffdfae}
#timeRows tr.rij-controle > td:first-child{box-shadow:inset 5px 0 0 #e07b00}
#timeRows tr.rij-fout > td{background:#ffd3ce}
#timeRows tr.rij-fout > td:first-child{box-shadow:inset 5px 0 0 #c62828}
#timeRows tr.rij-controle input,#timeRows tr.rij-controle select,
#timeRows tr.rij-fout input,#timeRows tr.rij-fout select{background:rgba(255,255,255,.75)}
.row-legend{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin:10px 0 4px;font-size:.82rem}
.legend-item{display:inline-flex;align-items:center;gap:6px;opacity:.8}
.swatch{width:14px;height:14px;border-radius:4px;display:inline-block;border:1px solid rgba(23,49,62,.2)}
.swatch.controle{background:#ffdfae;box-shadow:inset 4px 0 0 #e07b00}
.swatch.fout{background:#ffd3ce;box-shadow:inset 4px 0 0 #c62828}
#rowAttentionCount{margin-left:auto}

/* v271 — leesbaar op een telefoon zonder draaien of schuiven.
   Onder 760px wordt elke tabelregel een kaartje. */
@media (max-width:760px){
  .hours-table-wrap{overflow:visible;border:0;border-radius:0}
  .hours-table{min-width:0;width:100%;display:block}
  .hours-table thead{display:none}
  .hours-table tbody{display:block}
  .hours-table tr{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:10px 12px;
    padding:14px;
    margin-bottom:12px;
    border:1px solid #d9e3eb;
    border-radius:14px;
    background:#fff;
  }
  .hours-table td{display:block;border:0;padding:0}
  .hours-table td::before{
    content:attr(data-label);
    display:block;
    font-size:11px;
    text-transform:uppercase;
    letter-spacing:.05em;
    color:#60758a;
    margin-bottom:4px;
  }
  .hours-table td.del-cell::before{content:none}
  /* Datum, activiteit en locatie over de volle breedte; de rest naast elkaar. */
  .hours-table td[data-label="Datum"],
  .hours-table td[data-label="Activiteit"],
  .hours-table td[data-label="Locatie"]{grid-column:1/-1}
  .hours-table td.speed-cell{text-align:left}
  .hours-table td.del-cell{grid-column:1/-1;display:flex;justify-content:flex-end}
  .hours-table .delete-row{width:auto;padding:9px 16px}
  .hours-table input,.hours-table select{font-size:16px}  /* voorkomt inzoomen op iPhone */

  /* Kleurmarkering op het hele kaartje in plaats van per cel. */
  #timeRows tr.rij-controle{background:#ffdfae;border-color:#e07b00;border-left-width:6px}
  #timeRows tr.rij-controle > td{background:transparent;box-shadow:none}
  #timeRows tr.rij-fout{background:#ffd3ce;border-color:#c62828;border-left-width:6px}
  #timeRows tr.rij-fout > td{background:transparent;box-shadow:none}

  .row-legend{font-size:.78rem;gap:8px}
  #rowAttentionCount{margin-left:0;flex-basis:100%}
  .speed-source{margin:8px 0 14px}
}

/* v273 — akkoordknop en goedgekeurde regels */
.ok-row{border:1px solid #bcd3c4;background:#eef7f1;color:#1c6b45;border-radius:8px;padding:8px 12px;font-weight:600;white-space:nowrap;margin-right:6px}
.ok-row.aan{background:#1c6b45;border-color:#1c6b45;color:#fff}
#timeRows tr.rij-akkoord > td{background:#f0f8f3}
#timeRows tr.rij-akkoord > td:first-child{box-shadow:inset 5px 0 0 #1c6b45}
.del-cell{display:flex;gap:6px;align-items:center;justify-content:flex-end}
@media (max-width:760px){
  #timeRows tr.rij-akkoord{background:#f0f8f3;border-color:#1c6b45;border-left-width:6px}
  #timeRows tr.rij-akkoord > td{background:transparent;box-shadow:none}
  .ok-row{flex:1}
}

/* v275 — opgeslagen weekdossiers en veilige prullenbak */
.hours-saved-weeks{margin-top:14px;border:1px solid #d6e2eb;border-radius:16px;background:#f8fbfd;padding:15px 18px;display:grid;gap:10px}
.saved-weeks-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.saved-weeks-head>div{display:grid;gap:3px}.saved-weeks-head small{color:#63798c}
.saved-weeks-list{display:grid;gap:8px}.saved-week{display:flex;gap:10px;align-items:center;justify-content:space-between;padding:10px 12px;border:1px solid #d9e3eb;border-radius:12px;background:#fff}.saved-week-main{display:grid;gap:2px}.saved-week-main small{color:#63798c}.saved-week-actions{display:flex;gap:7px;flex-wrap:wrap}.saved-week button{padding:8px 10px}
.draft-badge{display:inline-flex;align-items:center;width:max-content;border-radius:999px;padding:3px 8px;font-size:11px;font-weight:800}.draft-badge.concept{background:#fff3d5;color:#825a00}.draft-badge.checked{background:#e7f5eb;color:#176a40}.draft-badge.final{background:#e7f0ff;color:#174b8a}
.hours-excluded{margin-top:16px;border:1px dashed #c8d6df;border-radius:14px;background:#fafcfd;padding:12px}.hours-excluded summary{cursor:pointer;font-weight:800;color:#52687c}.hours-excluded p{font-size:12px;color:#677b8d}.excluded-list{display:grid;gap:8px;margin-top:10px}.excluded-item{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:center;padding:10px;border-radius:10px;background:#fff;border:1px solid #dce5ec}.excluded-item small{display:block;color:#63798c;margin-top:2px}.restore-row{border:1px solid #bcd3c4;background:#eef7f1;color:#1c6b45;border-radius:8px;padding:8px 10px;font-weight:700}.exclude-row{border:1px solid #e8cfb8;background:#fff5ea;color:#8b4b14;border-radius:8px;padding:8px 10px;font-weight:700}.draft-save-note{font-size:12px;color:#60758a}
@media(max-width:760px){.saved-weeks-head,.saved-week{align-items:stretch;flex-direction:column}.saved-week-actions{width:100%}.saved-week-actions button{flex:1}.excluded-item{grid-template-columns:1fr}.restore-row{width:100%}.hours-table td.del-cell{flex-wrap:wrap}.exclude-row,.ok-row{flex:1}}
