Eighteen changes since v0.14.0. See CHANGELOG.md for the full list and the upgrade notes (bump IMAGE_CACHE_VERSION).
340 lines
5.9 KiB
CSS
340 lines
5.9 KiB
CSS
/* The diagnostics page (/admin/diagnostics). */
|
|
|
|
/* Each check is one line with a severity dot: the point is scanning a list for
|
|
the ones that are not green, not reading prose. Green ones recede. */
|
|
|
|
.diag-page {
|
|
max-width: 880px;
|
|
margin: 0 auto;
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 1.5rem;
|
|
}
|
|
|
|
.diag-head {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
justify-content: space-between;
|
|
align-items: flex-end;
|
|
gap: 1rem;
|
|
}
|
|
|
|
.diag-head h2 {
|
|
margin: 0;
|
|
font-size: 1.35rem;
|
|
font-weight: 700;
|
|
text-wrap: balance;
|
|
}
|
|
|
|
.diag-sub {
|
|
margin: 0.3rem 0 0;
|
|
font-size: 0.8rem;
|
|
color: var(--admin-text-muted);
|
|
}
|
|
|
|
.diag-actions {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: 0.5rem;
|
|
}
|
|
|
|
/* ── Overview tiles ── */
|
|
.diag-vitals {
|
|
display: grid;
|
|
grid-template-columns: repeat(4, minmax(0, 1fr));
|
|
gap: 0.75rem;
|
|
}
|
|
|
|
@media (max-width: 720px) {
|
|
.diag-vitals {
|
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
}
|
|
}
|
|
|
|
.diag-vital {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 0.25rem;
|
|
padding: 0.75rem 0.9rem;
|
|
background: var(--admin-bg-raised);
|
|
border: 1px solid var(--admin-border);
|
|
border-radius: 10px;
|
|
}
|
|
|
|
.diag-vital-label {
|
|
font-size: 0.7rem;
|
|
font-weight: 600;
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.05em;
|
|
color: var(--admin-text-muted);
|
|
}
|
|
|
|
.diag-vital-val {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.45rem;
|
|
font-size: 1rem;
|
|
font-weight: 600;
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
|
|
.diag-vital-meta {
|
|
min-height: 1em;
|
|
font-size: 0.75rem;
|
|
color: var(--admin-text-muted);
|
|
}
|
|
|
|
.diag-vital-meta a {
|
|
color: var(--admin-warning);
|
|
}
|
|
|
|
/* ── Check groups ── */
|
|
.diag-group {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 0.5rem;
|
|
}
|
|
|
|
.diag-group-title {
|
|
margin: 0;
|
|
font-size: 0.75rem;
|
|
font-weight: 600;
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.06em;
|
|
color: var(--admin-text-muted);
|
|
}
|
|
|
|
.diag-checks {
|
|
margin: 0;
|
|
padding: 0;
|
|
list-style: none;
|
|
background: var(--admin-bg-raised);
|
|
border: 1px solid var(--admin-border);
|
|
border-radius: 10px;
|
|
}
|
|
|
|
.diag-check {
|
|
border-bottom: 1px solid var(--admin-border);
|
|
}
|
|
|
|
.diag-check:last-child {
|
|
border-bottom: none;
|
|
}
|
|
|
|
.diag-check-row {
|
|
display: grid;
|
|
grid-template-columns: 8px minmax(0, 1fr) auto;
|
|
align-items: start;
|
|
gap: 0.75rem;
|
|
padding: 0.8rem 1rem;
|
|
}
|
|
|
|
@media (max-width: 560px) {
|
|
.diag-check-row {
|
|
grid-template-columns: 8px minmax(0, 1fr);
|
|
}
|
|
|
|
.diag-check-side {
|
|
grid-column: 2;
|
|
justify-content: flex-start;
|
|
}
|
|
}
|
|
|
|
.diag-dot {
|
|
width: 8px;
|
|
height: 8px;
|
|
margin-top: 0.4rem;
|
|
border-radius: 50%;
|
|
flex-shrink: 0;
|
|
background: var(--admin-text-muted);
|
|
}
|
|
|
|
.diag-vital-val .diag-dot {
|
|
margin-top: 0;
|
|
}
|
|
|
|
.diag-check--ok .diag-dot,
|
|
.diag-dot--ok {
|
|
background: var(--admin-success);
|
|
}
|
|
|
|
.diag-check--warn .diag-dot {
|
|
background: var(--admin-warning);
|
|
}
|
|
|
|
.diag-check--error .diag-dot,
|
|
.diag-dot--error {
|
|
background: var(--admin-error);
|
|
}
|
|
|
|
.diag-check-body {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 0.2rem;
|
|
min-width: 0;
|
|
}
|
|
|
|
.diag-check-title {
|
|
font-size: 0.86rem;
|
|
font-weight: 600;
|
|
color: var(--admin-text);
|
|
}
|
|
|
|
.diag-check--ok .diag-check-title,
|
|
.diag-check--unknown .diag-check-title {
|
|
font-weight: 500;
|
|
color: var(--admin-text-secondary);
|
|
}
|
|
|
|
.diag-check-detail {
|
|
max-width: 70ch;
|
|
font-size: 0.78rem;
|
|
line-height: 1.45;
|
|
color: var(--admin-text-muted);
|
|
}
|
|
|
|
.diag-check-side {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
align-items: center;
|
|
justify-content: flex-end;
|
|
gap: 0.4rem;
|
|
}
|
|
|
|
/* ── Alt-text list ── */
|
|
.diag-alt {
|
|
padding: 0 1rem 1rem calc(1rem + 8px + 0.75rem);
|
|
}
|
|
|
|
.diag-coverage {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.6rem;
|
|
margin-bottom: 0.4rem;
|
|
font-size: 0.75rem;
|
|
color: var(--admin-text-secondary);
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
|
|
.diag-coverage-bar {
|
|
flex: 1;
|
|
max-width: 320px;
|
|
height: 6px;
|
|
border-radius: 999px;
|
|
background: var(--admin-border);
|
|
overflow: hidden;
|
|
}
|
|
|
|
.diag-coverage-bar span {
|
|
display: block;
|
|
height: 100%;
|
|
background: var(--admin-success);
|
|
}
|
|
|
|
.diag-album {
|
|
padding: 0.75rem 0;
|
|
border-top: 1px dashed var(--admin-border);
|
|
}
|
|
|
|
.diag-album-head {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: baseline;
|
|
gap: 0.5rem;
|
|
margin-bottom: 0.5rem;
|
|
}
|
|
|
|
.diag-album-name {
|
|
font-size: 0.82rem;
|
|
font-weight: 600;
|
|
}
|
|
|
|
.diag-album-path {
|
|
margin-left: 0.4rem;
|
|
font-size: 0.72rem;
|
|
font-weight: 400;
|
|
color: var(--admin-text-muted);
|
|
}
|
|
|
|
.diag-album-count {
|
|
font-size: 0.72rem;
|
|
color: var(--admin-warning);
|
|
white-space: nowrap;
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
|
|
.diag-thumbs {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fill, minmax(92px, 1fr));
|
|
gap: 0.5rem;
|
|
}
|
|
|
|
.diag-thumb {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 0.25rem;
|
|
min-width: 0;
|
|
color: inherit;
|
|
text-decoration: none;
|
|
}
|
|
|
|
.diag-thumb img {
|
|
width: 100%;
|
|
aspect-ratio: 3 / 2;
|
|
object-fit: cover;
|
|
border: 1px solid var(--admin-border);
|
|
border-radius: 6px;
|
|
background: var(--admin-bg-elevated);
|
|
transition: border-color 0.15s;
|
|
}
|
|
|
|
.diag-thumb:hover img {
|
|
border-color: var(--admin-border-hover);
|
|
}
|
|
|
|
.diag-thumb-name {
|
|
overflow: hidden;
|
|
font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
|
|
font-size: 0.68rem;
|
|
color: var(--admin-text-muted);
|
|
white-space: nowrap;
|
|
text-overflow: ellipsis;
|
|
}
|
|
|
|
.diag-thumb-more {
|
|
aspect-ratio: 3 / 2;
|
|
border: 1px dashed var(--admin-border);
|
|
border-radius: 6px;
|
|
background: none;
|
|
font-family: inherit;
|
|
font-size: 0.75rem;
|
|
color: var(--admin-text-muted);
|
|
cursor: pointer;
|
|
}
|
|
|
|
.diag-thumb-more:hover {
|
|
border-color: var(--admin-border-hover);
|
|
color: var(--admin-text);
|
|
}
|
|
|
|
.diag-note {
|
|
margin: 0.5rem 0 0;
|
|
max-width: 70ch;
|
|
font-size: 0.75rem;
|
|
line-height: 1.45;
|
|
color: var(--admin-text-muted);
|
|
}
|
|
|
|
.diag-note code {
|
|
padding: 0.05rem 0.3rem;
|
|
border-radius: 4px;
|
|
background: var(--admin-bg-elevated);
|
|
font-size: 0.72rem;
|
|
}
|
|
|
|
@media (prefers-reduced-motion: reduce) {
|
|
.diag-thumb img {
|
|
transition: none;
|
|
}
|
|
}
|