/* Reckon — data display: table, progress, meter, calendar. */

/* ── Table ──────────────────────────────────────────────────────── */
.o-table-container{position:relative;width:100%;overflow-x:auto}
.o-table{width:100%;caption-side:bottom;font-size:var(--text-sm);border-collapse:collapse}
.o-table thead tr{border-bottom:1px solid var(--border)}
.o-table th{height:40px;white-space:nowrap;padding-inline:var(--space-2-5);text-align:left;vertical-align:middle;font-weight:var(--font-weight-medium);line-height:1;color:var(--muted-foreground)}
.o-table td{white-space:nowrap;padding:var(--space-2-5);vertical-align:middle;line-height:1}
.o-table tbody tr{border-bottom:1px solid var(--border)}
.o-table tbody tr:last-child{border-bottom:0}
.o-table tbody tr:hover{background:color-mix(in srgb,var(--foreground) 2%,transparent)}
.o-table tbody tr[data-state=selected]{background:color-mix(in srgb,var(--foreground) 4%,transparent)}
.o-table tfoot{border-top:1px solid var(--border);background:color-mix(in srgb,var(--foreground) 2%,transparent);font-weight:var(--font-weight-medium)}
.o-table tfoot td{padding-block:var(--space-3-5)}
.o-table caption{margin-top:var(--space-4);font-size:var(--text-sm);color:var(--muted-foreground)}
/* card variant — rows read as one rounded, bordered slab */
.o-table-container--card .o-table{border-collapse:separate;border-spacing:0}
.o-table-container--card tbody tr{border:0}
.o-table-container--card tbody td{border-bottom:1px solid var(--border);background:var(--card)}
.o-table-container--card tbody td:first-child{border-inline-start:1px solid var(--border)}
.o-table-container--card tbody td:last-child{border-inline-end:1px solid var(--border)}
.o-table-container--card tbody tr:first-child td{border-top:1px solid var(--border)}
.o-table-container--card tbody tr:first-child td:first-child{border-start-start-radius:var(--radius-xl)}
.o-table-container--card tbody tr:first-child td:last-child{border-start-end-radius:var(--radius-xl)}
.o-table-container--card tbody tr:last-child td:first-child{border-end-start-radius:var(--radius-xl)}
.o-table-container--card tbody tr:last-child td:last-child{border-end-end-radius:var(--radius-xl)}
.o-table-container--card tbody tr:hover td{background:color-mix(in srgb,var(--card),var(--color-black) 2%)}
.dark .o-table-container--card tbody tr:hover td{background:color-mix(in srgb,var(--card),var(--color-white) 2%)}

/* ── Progress / Meter ───────────────────────────────────────────── */
.o-progress{display:flex;width:100%;flex-direction:column;gap:var(--space-2)}
.o-progress__label{font-weight:var(--font-weight-medium);font-size:var(--text-sm)}
.o-progress__value{font-size:var(--text-sm);font-variant-numeric:tabular-nums}
.o-progress__track{display:block;height:6px;width:100%;overflow:hidden;border-radius:var(--radius-full);background:var(--input)}
.o-progress__indicator{height:100%;background:var(--primary);transition:width var(--duration-slow)}
.o-meter__track{display:block;height:8px;width:100%;overflow:hidden;background:var(--input)}
.o-meter__indicator{height:100%;background:var(--primary);transition:width var(--duration-slow)}

/* ── Calendar ───────────────────────────────────────────────────── */
.o-calendar{width:fit-content;padding:var(--space-2);font-size:var(--text-sm)}
.o-calendar__header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);padding:var(--space-1) var(--space-1) var(--space-2)}
.o-calendar__title{font-weight:var(--font-weight-medium);font-size:var(--text-sm)}
.o-calendar__grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}
.o-calendar__weekday{display:flex;height:28px;align-items:center;justify-content:center;font-weight:var(--font-weight-medium);font-size:var(--text-xs);color:var(--muted-foreground)}
.o-calendar__day{display:flex;width:32px;height:32px;align-items:center;justify-content:center;border:1px solid transparent;border-radius:var(--radius-md);background:transparent;font:inherit;font-variant-numeric:tabular-nums;color:var(--foreground);cursor:pointer;outline:none;transition:background-color var(--duration-fast)}
.o-calendar__day:hover{background:var(--accent)}
.o-calendar__day[data-outside]{color:color-mix(in srgb,var(--muted-foreground) 56%,transparent)}
.o-calendar__day[data-today]{border-color:var(--input)}
.o-calendar__day[data-selected]{background:var(--primary);color:var(--primary-foreground)}
.o-calendar__day:disabled{pointer-events:none;opacity:.4}
