/* Copyright (c) 2024-2026 Ultimate Underwriting LLC. All rights reserved. */
/* Verify tab (workspace/_tab_verify.html).
   Lived inline in the fragment until the debt ratchet counted it. The tab is
   swapped in by htmx, so its stylesheet has to be loaded by the PAGE — see the
   link in templates/base.html. */
.ws-verify,.ws-verify *{box-sizing:border-box}
.ws-verify{display:flex;flex-direction:column;gap:12px;padding:4px}
.wv-tally{display:flex;gap:8px;flex-wrap:wrap}
.wv-pill{font-size:11px;padding:4px 10px;border-radius:999px;white-space:nowrap;
  font-variant-numeric:tabular-nums}
.wv-pill-ok{background:var(--success-bg);color:var(--success)}
.wv-pill-fix{background:var(--warning-bg);color:var(--warning)}
.wv-warn{font-size:12px;color:var(--warning);background:var(--warning-bg);
  padding:8px 12px;border-radius:8px}
.wv-card{padding:14px 16px}
.wv-card-head{display:flex;align-items:center;justify-content:space-between;
  gap:12px;margin-bottom:10px}
.wv-month{font-size:13px;font-weight:600;color:var(--text-primary);margin:0}
.wv-skip{font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;
  color:var(--warning);background:var(--warning-bg);padding:3px 8px;border-radius:999px}
.wv-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px}
/* min-width:0 on both: a grid item defaults to min-width:auto, so the long
   "not read" placeholder sized the input past its cell and painted it over the
   next field's value. Caught by rendering it, not by any test. */
.wv-field{display:flex;flex-direction:column;gap:4px;position:relative;min-width:0}
.wv-label{font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;
  color:var(--text-muted)}
.wv-input{width:100%;min-width:0;padding:7px 26px 7px 10px;border-radius:7px;
  text-overflow:ellipsis;
  border:1px solid var(--border-color,rgba(128,128,128,.28));
  background:var(--bg-input,rgba(128,128,128,.06));color:var(--text-primary);
  font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;
  font-variant-numeric:tabular-nums}
.wv-input:focus{outline:2px solid var(--accent-teal);outline-offset:1px;
  border-color:transparent}
.wv-input[readonly]{opacity:.55;cursor:not-allowed}
.is-abstained .wv-input{border-style:dashed;border-color:var(--warning)}
.is-abstained .wv-label{color:var(--warning)}
/* Saved state rides on the field, not a toast: twenty-five fields would be
   twenty-five toasts. */
.wv-state{position:absolute;right:8px;bottom:9px;width:12px;height:12px;
  font-size:11px;line-height:12px;text-align:center;opacity:0;
  transition:opacity .18s ease}
.wv-field[data-state] .wv-state{opacity:1}
.wv-field[data-state="saving"] .wv-state::after{content:"·";color:var(--text-muted)}
.wv-field[data-state="confirmed"] .wv-state::after{content:"✓";color:var(--success)}
.wv-field[data-state="corrected"] .wv-state::after{content:"✎";color:var(--warning)}
.wv-field[data-state="error"] .wv-state::after{content:"!";color:var(--danger)}
.wv-field[data-state="confirmed"] .wv-input{border-color:var(--success)}
.wv-field[data-state="corrected"] .wv-input{border-color:var(--warning)}
/* A correction the evaluation does not take. Same ✎ (the corpus DID learn it)
   over a muted, dashed rule, because the deal did not move — the field used to
   look identical to one that changed a verdict. `failed` is the loud one: the
   corpus kept it and the deal did not, and that is worth retyping. */
.wv-field[data-reach="none"] .wv-input,
.wv-field[data-reach="partial"] .wv-input,
.wv-field[data-reach="superseded"] .wv-input{border-color:var(--text-muted);border-style:dashed}
.wv-field[data-reach="none"] .wv-state::after,
.wv-field[data-reach="superseded"] .wv-state::after{color:var(--text-muted)}
.wv-field[data-reach="failed"] .wv-input{border-color:var(--danger);border-style:dashed}
.wv-field[data-reach="failed"] .wv-state::after{content:"!";color:var(--danger)}
.wv-pill-off{background:var(--bg-input);color:var(--text-muted)}
.wv-field[data-state="error"] .wv-input{border-color:var(--danger)}
.wv-more{margin-top:10px}
.wv-more summary{font-size:11.5px;color:var(--text-muted);cursor:pointer;
  padding:5px 0;user-select:none}
.wv-more summary:hover{color:var(--text-secondary)}
.wv-more .wv-grid{margin-top:8px}
.wv-empty{padding:22px;text-align:center;color:var(--text-muted);font-size:13px}
.wv-empty p{margin:8px 0 0}
@media (prefers-reduced-motion:reduce){.wv-state{transition:none}}
