/* SourceHub - staff dashboard only. Everything here is additive to app.css
 * (GuiLint SHARED CHANGES NEEDED note: a generic "work queue row" component
 * belongs in GUI/APP/components/blocks.js once a second page needs one; today
 * only the dashboard does, so the styling stays local per the file-ownership rule). */

/* "Le mie gare in chiusura" and "Le mie bozze" have no KPI tile above them (unlike the
 * other eight cards, whose tile in the row above already carries the count), so their own
 * card-header carries one directly: a card must never say only "icon + title" with no way
 * to tell zero from many without reading the list underneath. It is a real link to the same
 * filtered list a KPI tile would open (directive: every number is a link), so it needs the
 * pointer cursor a clickable element always gets (C1) and a hover cue; when its target is
 * not built yet home.js draws it as a plain span instead, which keeps the browser's default
 * cursor with nothing extra needed here. */
.card-header .sh-count { margin-left: auto; font-weight: 700; font-size: .8125rem; color: var(--sh-ink-3); font-variant-numeric: tabular-nums; text-decoration: none; }
.card-header a.sh-count { cursor: pointer; }
.card-header a.sh-count:hover { color: var(--sh-accent); }
.card-header .sh-count.sh-hot { color: var(--sh-amber); }
.card-header a.sh-count.sh-hot:hover { color: var(--sh-amber); }

/* A KPI tile whose target screen is not built yet (Impostazioni, "Avvisi e notifiche", not
 * delivered as of this rebuild): still shows the count, but as a plain, non-interactive
 * block instead of a dead link - same "says why" contract as a disabled button, carried in
 * its title attribute since a tile has no room for a written reason next to it. */
.sh-kpi.sh-static { cursor: default; }

.sh-wl { display: flex; flex-direction: column; }

.sh-wl-row
{
    display: flex;
    align-items: center;
    gap: .75rem;
    padding: .65rem 1.125rem;
    border-bottom: 1px solid var(--sh-line-2);
    color: inherit;
    text-decoration: none;
}

.sh-wl-row:last-child { border-bottom: 0; }
a.sh-wl-row:hover { background: var(--sh-accent-l); }
.sh-wl-row.sh-wl-static { cursor: default; }

.sh-wl-row .sh-wl-icon { flex: none; width: 1.5rem; text-align: center; color: var(--sh-ink-4); }
.sh-wl-row .sh-wl-main { flex: 1; min-width: 0; }
.sh-wl-row .sh-wl-title { font-weight: 600; font-size: .84375rem; }
.sh-wl-row .sh-wl-sub { font-size: .75rem; color: var(--sh-ink-3); margin-top: .1rem; }
.sh-wl-row .sh-wl-side { flex: none; text-align: right; font-size: .75rem; color: var(--sh-ink-3); }
.sh-wl-row .sh-wl-side .sh-badge { margin-bottom: .2rem; }
.sh-wl-row .sh-wl-side .sh-wl-hot { color: var(--sh-red); font-weight: 600; }

/* One block per row where the deadline component itself is the content (mountDeadline
 * already carries its own layout, so this only spaces the rows and their own header). */
.sh-wl-deadlines .sh-wl-tender { padding: .7rem 1.125rem; border-bottom: 1px solid var(--sh-line-2); }
.sh-wl-deadlines .sh-wl-tender:last-child { border-bottom: 0; }
.sh-wl-tender-h { display: flex; align-items: baseline; gap: .5rem; font-weight: 600; font-size: .84375rem; text-decoration: none; color: inherit; margin-bottom: .4rem; }
a.sh-wl-tender-h:hover { color: var(--sh-accent); }
.sh-wl-tender-h .sh-code { font-weight: 400; }
