Upload style.css
Browse files- static/css/style.css +105 -0
static/css/style.css
CHANGED
|
@@ -1481,3 +1481,108 @@ audio {
|
|
| 1481 |
opacity: 1;
|
| 1482 |
transform: translateX(-50%) translateY(0);
|
| 1483 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1481 |
opacity: 1;
|
| 1482 |
transform: translateX(-50%) translateY(0);
|
| 1483 |
}
|
| 1484 |
+
|
| 1485 |
+
/* ============================================================
|
| 1486 |
+
12E additions: filter chips, sort toggle, empty states
|
| 1487 |
+
============================================================ */
|
| 1488 |
+
|
| 1489 |
+
/* Filter chips — status/language filters above list and history views.
|
| 1490 |
+
Distinct from .chip (symptom/reply quick-select) which uses a pill
|
| 1491 |
+
shape and sits inline in a card. These are tighter, sit in their own
|
| 1492 |
+
row, and have an explicit active/selected state. */
|
| 1493 |
+
.filter-chip-row {
|
| 1494 |
+
display: flex;
|
| 1495 |
+
flex-wrap: wrap;
|
| 1496 |
+
gap: var(--space-2);
|
| 1497 |
+
margin-bottom: var(--space-3);
|
| 1498 |
+
}
|
| 1499 |
+
|
| 1500 |
+
.filter-chip {
|
| 1501 |
+
padding: var(--space-1) var(--space-3);
|
| 1502 |
+
border: 1.5px solid var(--color-border);
|
| 1503 |
+
border-radius: var(--radius);
|
| 1504 |
+
background: var(--color-surface);
|
| 1505 |
+
color: var(--color-text-secondary);
|
| 1506 |
+
font-size: var(--text-sm);
|
| 1507 |
+
font-weight: 600;
|
| 1508 |
+
font-family: inherit;
|
| 1509 |
+
cursor: pointer;
|
| 1510 |
+
transition: background 130ms ease, border-color 130ms ease, color 130ms ease;
|
| 1511 |
+
}
|
| 1512 |
+
|
| 1513 |
+
.filter-chip:hover {
|
| 1514 |
+
border-color: var(--color-primary);
|
| 1515 |
+
color: var(--color-text);
|
| 1516 |
+
}
|
| 1517 |
+
|
| 1518 |
+
.filter-chip.active {
|
| 1519 |
+
background: var(--color-primary-light);
|
| 1520 |
+
border-color: var(--color-primary);
|
| 1521 |
+
color: var(--color-primary-dark);
|
| 1522 |
+
}
|
| 1523 |
+
|
| 1524 |
+
.provider .filter-chip:hover {
|
| 1525 |
+
border-color: var(--color-provider-accent);
|
| 1526 |
+
}
|
| 1527 |
+
|
| 1528 |
+
.provider .filter-chip.active {
|
| 1529 |
+
background: var(--color-provider-accent-light);
|
| 1530 |
+
border-color: var(--color-provider-accent);
|
| 1531 |
+
color: var(--color-provider-accent-text);
|
| 1532 |
+
}
|
| 1533 |
+
|
| 1534 |
+
.sort-toggle-btn {
|
| 1535 |
+
display: inline-flex;
|
| 1536 |
+
align-items: center;
|
| 1537 |
+
gap: var(--space-2);
|
| 1538 |
+
padding: var(--space-1) var(--space-3);
|
| 1539 |
+
border: 1.5px solid var(--color-border);
|
| 1540 |
+
border-radius: var(--radius);
|
| 1541 |
+
background: var(--color-surface);
|
| 1542 |
+
color: var(--color-text-secondary);
|
| 1543 |
+
font-size: var(--text-sm);
|
| 1544 |
+
font-weight: 600;
|
| 1545 |
+
font-family: inherit;
|
| 1546 |
+
cursor: pointer;
|
| 1547 |
+
margin-top: var(--space-2);
|
| 1548 |
+
transition: border-color 130ms ease, color 130ms ease;
|
| 1549 |
+
}
|
| 1550 |
+
|
| 1551 |
+
.sort-toggle-btn:hover {
|
| 1552 |
+
border-color: var(--color-provider-accent);
|
| 1553 |
+
color: var(--color-provider-accent-text);
|
| 1554 |
+
}
|
| 1555 |
+
|
| 1556 |
+
.sort-toggle-btn svg {
|
| 1557 |
+
width: 14px;
|
| 1558 |
+
height: 14px;
|
| 1559 |
+
flex-shrink: 0;
|
| 1560 |
+
}
|
| 1561 |
+
|
| 1562 |
+
/* Empty state: shown when a list is genuinely empty or no results match
|
| 1563 |
+
filters/search. Intentionally minimal — icon, short title, one line. */
|
| 1564 |
+
.empty-state {
|
| 1565 |
+
text-align: center;
|
| 1566 |
+
padding: var(--space-7) var(--space-5);
|
| 1567 |
+
}
|
| 1568 |
+
|
| 1569 |
+
.empty-state-icon {
|
| 1570 |
+
width: 36px;
|
| 1571 |
+
height: 36px;
|
| 1572 |
+
stroke: var(--color-border);
|
| 1573 |
+
margin: 0 auto var(--space-3);
|
| 1574 |
+
display: block;
|
| 1575 |
+
}
|
| 1576 |
+
|
| 1577 |
+
.empty-state-title {
|
| 1578 |
+
font-size: var(--text-base);
|
| 1579 |
+
font-weight: 600;
|
| 1580 |
+
color: var(--color-text);
|
| 1581 |
+
margin-bottom: var(--space-2);
|
| 1582 |
+
}
|
| 1583 |
+
|
| 1584 |
+
.empty-state-body {
|
| 1585 |
+
font-size: var(--text-sm);
|
| 1586 |
+
color: var(--color-text-secondary);
|
| 1587 |
+
margin: 0;
|
| 1588 |
+
}
|