Files
immich-folio/app/admin/styles/diagnostics.css

340 lines
5.9 KiB
CSS
Raw Normal View History

/* 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;
}
}