Add MOT/insurance renewal hints, table service card, and favicon
- Renewal tracking: compute due/overdue status from the most recent mot/insurance event (renewal_months, renewal_due_soon_days settings), surfaced on the service card and dashboard. - Service-status card metrics now render as a two-column label/value table with row separators instead of wrapping auto-fill grid cells. - Add a bicycle favicon (favicon.svg) to base + login templates. Co-Authored-By: opencode <opencode@users.noreply.github.com>
This commit is contained in:
@@ -0,0 +1,9 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" width="64" height="64">
|
||||
<rect width="64" height="64" rx="14" fill="#4c8dff"/>
|
||||
<g fill="none" stroke="#ffffff" stroke-width="3.4" stroke-linecap="round" stroke-linejoin="round">
|
||||
<circle cx="18" cy="43" r="10"/>
|
||||
<circle cx="46" cy="43" r="10"/>
|
||||
<path d="M18 43 L31 43 M31 43 L26 24 M26 24 L45 24 M45 24 L46 43 M31 43 L45 24"/>
|
||||
<path d="M45 24 L49 17 M22 24 L30 24"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 459 B |
+11
-1
@@ -88,7 +88,9 @@ h1, h2, h3 { line-height: 1.2; font-weight: 600; }
|
||||
.due-top { display: flex; justify-content: space-between; align-items: flex-start; gap: .75rem; margin-bottom: .75rem; }
|
||||
.due-title { margin: 0; }
|
||||
.due-summary { margin: .15rem 0 0; color: var(--muted); font-size: .95rem; }
|
||||
.due-meta { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: .4rem .75rem; margin: 0; }
|
||||
.due-meta { display: grid; grid-template-columns: minmax(7rem, max-content) 1fr; gap: 0; margin: 0; }
|
||||
.due-meta > * { padding: .4rem 0; border-bottom: 1px solid var(--line); }
|
||||
.due-meta > :nth-last-child(-n+2) { border-bottom: none; }
|
||||
.due-meta dt { color: var(--muted); font-size: .78rem; text-transform: uppercase; letter-spacing: .03em; }
|
||||
.due-meta dd { margin: 0; font-weight: 600; }
|
||||
|
||||
@@ -97,6 +99,12 @@ h1, h2, h3 { line-height: 1.2; font-weight: 600; }
|
||||
.due-card.badge-overdue { border-left: 4px solid var(--overdue-ink); }
|
||||
.due-card.badge-muted { border-left: 4px solid var(--muted); }
|
||||
|
||||
/* renewals (MOT / insurance) */
|
||||
.renewals { display: grid; gap: .5rem; margin-top: .85rem; padding-top: .85rem; border-top: 1px solid var(--line); }
|
||||
.renewal { display: flex; align-items: center; gap: .6rem; }
|
||||
.renewal-label { font-size: .8rem; color: var(--muted); text-transform: uppercase; letter-spacing: .03em; min-width: 4.5rem; }
|
||||
.renewal .badge { margin-left: 0; }
|
||||
|
||||
/* badges */
|
||||
.badge {
|
||||
display: inline-flex; align-items: center;
|
||||
@@ -160,6 +168,8 @@ input:focus, select:focus, textarea:focus {
|
||||
.tag-chain { background: #241a3a; color: #b39ddb; }
|
||||
.tag-brake { background: #331a1a; color: #f0908c; }
|
||||
.tag-repair { background: #14291d; color: #7fcfa0; }
|
||||
.tag-mot { background: #14263a; color: #6fb3ff; }
|
||||
.tag-insurance { background: #2a2313; color: #e6c36b; }
|
||||
.tag-other { background: #1c2129; color: #9aa5b1; }
|
||||
|
||||
/* alert */
|
||||
|
||||
Reference in New Issue
Block a user