{% extends "base.html" %}
{% block title %}Dashboard{% endblock %}
{% block style %}
/* The approved mockup (operator, 2026-10-30): greeting and claim search
on top, today's tiles, the lime Agent run card beside results by day,
then today's reasons beside today's runs. */
header.hello { display: flex; flex-wrap: wrap; gap: 14px;
align-items: center; justify-content: space-between;
margin-bottom: 18px; }
header.hello h1 { font-size: 34px; }
header.hello .sub { margin: 0; font-size: 15px; }
form.find { display: flex; gap: 8px; }
form.find input { width: 240px; height: 44px; background: var(--panel); }
form.find button { height: 44px; }
.tiles .tile .head { display: flex; justify-content: space-between;
align-items: center; }
.tile .pct { float: right; font-size: 12px; font-weight: 700;
padding: 2px 9px; border-radius: 999px; margin-top: 2px; }
.tile.Pass .pct { background: var(--pass-bg); color: var(--pass); }
.tile.Fail .pct { background: var(--fail-bg); color: var(--fail); }
.tile.Review .pct { background: var(--review-bg); color: var(--review); }
.tile .rate { display: block; margin-top: 6px; font-size: 12px;
color: var(--pass); font-weight: 600; }
.row2 { display: flex; flex-wrap: wrap; gap: 18px; margin-bottom: 18px; }
.row2 > .card { margin-bottom: 0; flex: 1 1 340px; min-width: 0; }
.row2 > #week, .row2 > #runs-today { flex: 2 1 420px; }
.card-h { display: flex; justify-content: space-between;
align-items: baseline; margin-bottom: 14px; gap: 10px; }
.card-h h2 { margin: 0; }
/* Agent run: the lime card. */
.botrun { background: var(--lime); color: var(--text); }
.botrun .row { display: flex; gap: 12px; align-items: center;
flex-wrap: wrap; }
.botrun .row + .row { margin-top: 12px; }
.botrun h2 { margin: 0; }
#br-message { color: var(--navy); font-weight: 600; }
.botrun button { background: var(--text); border-color: var(--text); }
.botrun button:hover { background: #000; }
.botrun button.plain { background: rgba(255, 255, 255, .6);
border-color: transparent; color: var(--text); }
.botrun button.stop { background: var(--fail-bar); border-color: var(--fail-bar); }
.botrun .note { color: var(--navy); }
.botrun progress { width: 220px; height: 10px; accent-color: var(--navy); }
.botrun pre { background: rgba(255, 255, 255, .6); padding: 10px;
border-radius: 12px; max-height: 260px; overflow: auto;
font-size: 12px; white-space: pre-wrap; }
.botrun summary { cursor: pointer; color: var(--navy); margin-top: 10px;
font-weight: 600; }
.chip { padding: 2px 9px; border-radius: 999px; font-size: 12px;
font-weight: 600; }
/* `.row { display: flex }` beats the browser's [hidden] rule. */
.botrun [hidden] { display: none; }
/* Results by day. */
.week { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr));
gap: 12px; align-items: end; height: 190px; }
a.wd { display: flex; flex-direction: column; align-items: center;
justify-content: flex-end; height: 100%; color: var(--text);
text-decoration: none; }
a.wd .col { display: flex; flex-direction: column; width: 70%;
max-width: 44px; border-radius: 8px; overflow: hidden;
background: var(--head); min-height: 4px; height: 0; }
a.wd:hover .col { outline: 2px solid var(--accent); outline-offset: 2px; }
a.wd .col i { display: block; }
a.wd .col i.Pass { background: var(--pass-bar); }
a.wd .col i.Fail { background: var(--fail-bar); }
a.wd .col i.Review { background: var(--review-bar); }
a.wd .cnt { font-size: 12px; font-weight: 700; margin-bottom: 4px; }
a.wd .lbl { font-size: 12px; color: var(--muted); margin-top: 6px; }
.legend { display: flex; gap: 14px; font-size: 13px; color: var(--muted); }
.legend span::before { content: ""; display: inline-block; width: 10px;
height: 10px; border-radius: 3px; margin-right: 6px; }
.legend .Pass::before { background: var(--pass-bar); }
.legend .Fail::before { background: var(--fail-bar); }
.legend .Review::before { background: var(--review-bar); }
/* Today's reasons and runs. */
ol.reasons, ol.runs { list-style: none; margin: 0; padding: 0; }
ol.reasons li, ol.runs li { display: flex; gap: 12px; align-items: center;
padding: 9px 0; border-bottom: 1px solid var(--line); }
ol.reasons li:last-child, ol.runs li:last-child { border-bottom: 0; }
ol.reasons b { min-width: 34px; text-align: center; border-radius: 999px;
padding: 2px 9px; font-size: 12px; }
ol.reasons b.Fail { background: var(--fail-bg); color: var(--fail); }
ol.reasons b.Review { background: var(--review-bg); color: var(--review); }
ol.reasons span { overflow: hidden; text-overflow: ellipsis;
white-space: nowrap; }
ol.runs .t { font-weight: 600; width: 72px; }
ol.runs .m { font-size: 11px; font-weight: 700; padding: 2px 9px;
border-radius: 999px; background: var(--head); color: var(--navy); }
ol.runs .c { margin-left: auto; color: var(--muted); }
ol.runs .c b { color: var(--text); }
ol.runs .cat { min-width: 40px; text-align: center; }
#live-summary { color: var(--muted); margin: 0 0 10px; }
#live-list { list-style: none; margin: 0; padding: 0; }
#live-list li { display: flex; gap: 10px; align-items: center;
padding: 7px 8px; border-bottom: 1px solid var(--line); }
#live-list li.opens { cursor: pointer; }
#live-list li.opens:hover { background: var(--hilite); }
#live-list .n { color: var(--muted); width: 34px; }
#live-list .id { font-weight: 600; width: 100px; }
#live-list .st { margin-left: auto; }
#live-list li.st-checking { background: var(--hilite); }
#live-list li.st-checking .st { color: var(--accent); font-weight: 600; }
#live-list li.st-idle .st { color: var(--muted); }
@media (max-width: 760px) {
form.find, form.find input { width: 100%; }
}
/* The last Run ended badly (EEWA-33). */
.alert { background: var(--fail-bg); color: var(--fail);
border-radius: 16px; padding: 12px 16px; margin-bottom: 18px; }
.alert a { color: var(--fail); font-weight: 600; text-decoration: underline; }
{% endblock %}
{% block content %}
{{ today.day | longdate }} · Medcor Ready queue{{ greeting }}, {{ (user.display_name or "").split(" ")[0] }}
VERIFY mode — nothing is saved to eCW. CAPTCHA and 2FA boxes still come up on this PC when the login needs a person.
No claims checked in the last 7 days.
{% endif %}No Fail or Review today.
{% endif %}No runs today yet.
{% endif %}No results saved yet. Run the bot with RESULTS_DB=1
in .env; each day's claims appear under Claim status.