/* Overzicht (ticket 8436): het tabblad met de facturen per soort. Eigen
   bestand naast stijl.css, met de kleuren en maten uit de huisstijl daar
   (CLAUDE.md §9). Alle namen beginnen met ov-, zodat er niets botst met de
   rest van de app; stijl.css blijft ongemoeid. */

/* Het tabblad blijft verborgen tot de server zegt dat de gebruiker finance is. */
body.geen-finance #tab-overzicht{display:none}

.ov-uitleg{background:#fff;border:1px solid var(--kaartrand);border-radius:14px;padding:12px 18px;margin-bottom:12px;box-shadow:var(--kaartschaduw);font-size:14px;line-height:1.55;max-width:1240px}

/* ---------- De stand van de aanlevering ---------- */
.ov-aanlevering{background:var(--hairline);border:1px solid var(--blauw-soft);border-radius:14px;padding:12px 18px;margin-bottom:14px;font-size:13.5px;line-height:1.6;max-width:1240px}
.ov-aanlevering h3{font-size:12px;font-weight:800;color:var(--blauw);text-transform:uppercase;letter-spacing:.05em;margin-bottom:4px}
.ov-aanlevering b{font-weight:800;color:var(--blauw-black);font-variant-numeric:tabular-nums}
.ov-aanlevering .ov-fout{color:var(--rood);font-weight:700}
.ov-aanlevering-uit{color:var(--grijs)}
/* Automatisch boeken (versie 1.49.0) */
.ov-auto{margin-top:6px}
.ov-auto-lijst{margin:4px 0 0 18px;padding:0}
.ov-auto-lijst li{margin:2px 0}
.ov-auto-stop{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:8px}
.ov-auto-stop input{flex:1 1 220px;min-width:0;box-sizing:border-box;border:1px solid var(--grijs-thin);border-radius:8px;padding:7px 9px;font:inherit;font-size:13px;background:#fff;color:var(--blauw-black)}
/* Op een telefoon 16px, zodat de browser bij het typen niet inzoomt. */
@media (max-width:720px){.ov-auto-stop input{font-size:16px}}

/* ---------- De BC-wachtrij (V1): het aantal en de knop om te verversen ---------- */
.ov-bcw{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 18px;background:#fff;border:1px solid var(--kaartrand);border-left:4px solid var(--blauw);border-radius:14px;padding:12px 18px;margin-bottom:14px;font-size:13.5px;line-height:1.6;max-width:1240px;box-shadow:var(--kaartschaduw)}
.ov-bcw h3{font-size:12px;font-weight:800;color:var(--blauw);text-transform:uppercase;letter-spacing:.05em;margin-bottom:2px}
.ov-bcw-tekst{flex:1 1 320px;min-width:0}
.ov-bcw-tekst p{margin:0}
.ov-bcw b{font-weight:800;color:var(--blauw-black);font-variant-numeric:tabular-nums}
.ov-bcw-uitkomst{margin-top:4px!important;overflow-wrap:anywhere}
.ov-bcw-uitkomst[hidden]{display:none}
.ov-bcw-bezig{color:var(--grijs)}
.ov-bcw-uit{color:var(--geel-tekst)}
.ov-bcw-fout{color:var(--rood)}
.ov-bcw-ok,.ov-bcw-deels{color:var(--blauw-black)}
.ov-bcw .ov-fout{color:var(--rood);font-weight:700}
.ov-bcw-knop{display:inline-flex;align-items:center;gap:7px;flex:none}
.ov-bcw-knop svg{width:15px;height:15px}
.ov-bcw-knop:disabled{opacity:.6;cursor:progress}

/* ---------- Filters ---------- */
.ov-balk{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px 14px;margin-bottom:12px}
.ov-balk label{display:flex;flex-direction:column;gap:4px;font-size:11.5px;font-weight:700;color:var(--grijs);text-transform:uppercase;letter-spacing:.04em;min-width:0}
.ov-balk select{font-family:'Exo',Arial,sans-serif;font-size:13px;font-weight:600;color:var(--blauw);border:1px solid var(--kaartrand);border-radius:999px;padding:8px 32px 8px 14px;background:#fff;cursor:pointer;box-shadow:0 1px 3px rgba(3,21,63,.06);max-width:100%;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23073889' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;background-size:12px;text-transform:none;letter-spacing:0}
.ov-balk select:hover{border-color:var(--blauw)}
.ov-wis{font-family:'Exo',Arial,sans-serif;font-size:12.5px;font-weight:700;color:var(--oranje-donker);background:none;border:none;cursor:pointer;text-decoration:underline;text-underline-offset:3px;padding:9px 2px}
.ov-wis[hidden]{display:none}
.ov-niet{font-size:12.5px;color:var(--grijs);margin:0 0 12px}
.ov-niet:empty{display:none}

/* Alleen voor schermlezers: wat er net gebeurde. */
.ov-status{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* ---------- De drie groepen ---------- */
.ov-groep{background:#fff;border:1px solid var(--kaartrand);border-left:5px solid var(--blauw-soft);border-radius:14px;margin-bottom:14px;box-shadow:var(--kaartschaduw);overflow:hidden}
.ov-groep-klopt{border-left-color:var(--groen)}
.ov-groep-wachtOpUren{border-left-color:var(--geel)}
.ov-groep-wijktAf{border-left-color:var(--rood)}
.ov-groep>summary{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;padding:14px 18px;cursor:pointer;list-style:none}
.ov-groep>summary::-webkit-details-marker{display:none}
.ov-groep>summary::before{content:"";width:9px;height:9px;flex:none;border-right:2.5px solid var(--blauw);border-bottom:2.5px solid var(--blauw);transform:rotate(-45deg);transition:transform .15s;margin-right:2px}
.ov-groep[open]>summary::before{transform:rotate(45deg)}
.ov-groep>summary:focus-visible{outline:none;box-shadow:var(--focusring-binnen)}
.ov-groepnaam{font-weight:800;font-size:17px;color:var(--blauw);letter-spacing:-.2px}
.ov-aantal{display:inline-block;min-width:24px;text-align:center;background:var(--hairline);color:var(--blauw);border-radius:999px;font-size:12px;font-weight:800;padding:2px 8px;font-variant-numeric:tabular-nums}
.ov-groep-wijktAf>summary .ov-aantal{background:var(--oranje);color:#fff}
.ov-groepuitleg{flex:1 1 260px;font-size:13px;color:var(--grijs);min-width:0}
.ov-leeg{padding:4px 18px 16px;color:var(--grijs);font-size:13.5px}
.ov-lijst{display:flex;flex-direction:column;border-top:1px solid var(--grijs-thin)}

/* ---------- Eén factuur ---------- */
.ov-regel{display:grid;grid-template-columns:minmax(0,1fr);gap:6px;width:100%;text-align:left;background:#fff;border:none;border-bottom:1px solid var(--grijs-thin);padding:12px 18px;font-family:'Exo',Arial,sans-serif;font-size:14px;color:var(--blauw-black);cursor:pointer;transition:background-color .15s}
.ov-regel:last-child{border-bottom:none}
.ov-regel:hover{background:var(--blauw-hairline)}
.ov-regel:focus-visible{outline:none;box-shadow:var(--focusring-binnen)}
.ov-regel.ov-afgerond{cursor:default;opacity:.85}
.ov-regel.ov-afgerond:hover{background:#fff}
.ov-kop{display:flex;align-items:baseline;justify-content:space-between;gap:12px;min-width:0}
.ov-lev{font-weight:700;font-size:15px;overflow-wrap:anywhere;min-width:0}
.ov-levnr{font-weight:600;font-size:12.5px;color:var(--grijs);font-variant-numeric:tabular-nums}
.ov-bedrag{font-weight:800;font-size:15.5px;white-space:nowrap;font-variant-numeric:tabular-nums}
.ov-bedrag small{display:block;font-size:11px;font-weight:600;color:var(--grijs);text-align:right}
.ov-delen{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;font-size:12.5px;color:var(--grijs);min-width:0}
.ov-delen>*{min-width:0;overflow-wrap:anywhere}
.ov-veld b{color:var(--blauw-black);font-weight:700}
.ov-zekerheid{font-weight:700;color:var(--blauw)}
.ov-verval.ov-zacht{color:var(--grijs);background:#fff;border-color:var(--grijs-thin)}
/* Een vervaldatum die de app niet berekende (alleen volgens de factuur): een
   stippelrand en het label erbij, zodat finance ziet dat de datum onzeker is. */
.ov-verval.ov-verval-factuur{border-style:dashed}
.ov-verval-bron{font-weight:800}
/* De soort met de omschrijving van de inkoopstraat: die kan lang zijn en op een
   telefoon over twee regels lopen, dus een ronde hoek in plaats van een pil. */
.ov-soort{font-size:12px;font-weight:700;line-height:1.35;color:var(--oranje-donker);background:var(--oranje-bg);border:1px solid #f7d3b8;border-radius:10px;padding:2px 10px;max-width:100%}
.ov-onder{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;font-size:13px;min-width:0}
.ov-wacht{color:var(--geel-tekst);font-weight:700;overflow-wrap:anywhere}
.ov-reden{color:var(--blauw-black);overflow-wrap:anywhere;min-width:0}
.ov-status-chip{font-size:11.5px;font-weight:800;color:var(--grijs);background:var(--grijs-thin);border-radius:999px;padding:2px 9px;text-transform:uppercase;letter-spacing:.04em}

/* Afgewezen of teruggestuurd: onder de open uitzonderingen, standaard dicht. */
.ov-afgerond-blok{border-top:1px solid var(--grijs-thin)}
.ov-afgerond-blok>summary{display:flex;align-items:center;gap:8px;padding:10px 18px;font-size:13px;font-weight:700;color:var(--grijs);cursor:pointer}
.ov-afgerond-blok>summary:focus-visible{outline:none;box-shadow:var(--focusring-binnen)}

/* Op een breed scherm staan bedrag, kenmerken en reden naast elkaar. */
@media (min-width:1100px){
  .ov-regel{grid-template-columns:minmax(220px,1.1fr) minmax(0,2fr);column-gap:22px;align-items:start}
  .ov-kop{grid-column:1/-1}
  .ov-delen{grid-column:1/2}
  .ov-onder{grid-column:2/3}
  .ov-regel:not(:has(.ov-onder)) .ov-delen{grid-column:1/-1}
}
@media (max-width:720px){
  .ov-groep>summary{padding:12px 14px}
  .ov-regel{padding:12px 14px}
  .ov-aanlevering,.ov-uitleg,.ov-bcw{padding:10px 14px}
  .ov-bcw-knop{width:100%;justify-content:center}
  .ov-balk label{flex:1 1 100%}
  .ov-balk select{width:100%}
}
@media (prefers-reduced-motion:reduce){.ov-regel,.ov-groep>summary::before{transition:none}}
