Feat: Complete UI implementation for GTmetrix dashboard

This commit is contained in:
2025-12-28 05:09:13 +11:00
parent 3797a45628
commit 7d9c7d9651
2 changed files with 161 additions and 15 deletions

View File

@@ -116,6 +116,103 @@ body::before {
z-index: 0;
}
/* =========================================
GTmetrix Dashboard
========================================= */
.gtmetrix-dashboard {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
gap: 1.5rem;
margin-bottom: 2rem;
}
.dashboard-card {
background: var(--color-bg-tertiary); /* Darker internal card */
padding: 1.5rem;
border-radius: 12px;
border: 1px solid var(--color-border);
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
min-height: 180px;
}
.grade-card h3 { margin-bottom: 1rem; color: var(--color-text-secondary); font-size: 0.9rem; text-transform: uppercase; letter-spacing: 1px; }
.grade-circle {
width: 100px;
height: 100px;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
font-size: 3.5rem;
font-weight: 800;
color: #fff;
background: #444;
transition: all 0.5s ease;
box-shadow: 0 4px 15px rgba(0,0,0,0.3);
}
.grade-a { background: #0cce6b; box-shadow: 0 0 20px rgba(12, 206, 107, 0.4); }
.grade-b { background: #0ba759; }
.grade-c { background: #ffaa00; }
.grade-d { background: #ff4e00; }
.grade-f { background: #ff0000; }
.scores-card {
flex-direction: row;
gap: 2rem;
}
.score-item { text-align: center; }
.score-label { font-size: 0.9rem; color: var(--color-text-secondary); margin-bottom: 0.5rem; }
.score-value { font-size: 2.5rem; font-weight: 700; color: var(--color-text-primary); }
.score-divider { width: 1px; height: 60px; background: var(--color-border); }
.vitals-card { align-items: stretch; }
.vitals-card h3 { text-align: center; margin-bottom: 1rem; font-size: 0.9rem; color: var(--color-text-secondary); text-transform: uppercase; }
.vitals-grid {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
gap: 1rem;
text-align: center;
}
.vital-label { font-size: 0.8rem; font-weight: 600; margin-bottom: 0.25rem; }
.vital-value { font-size: 1.2rem; font-weight: 500; color: var(--color-accent); }
/* Filmstrip */
.filmstrip-container {
display: flex;
overflow-x: auto;
gap: 0.5rem;
padding: 1rem 0;
scrollbar-width: thin;
}
.filmstrip-frame {
flex: 0 0 auto;
width: 100px;
text-align: center;
}
.filmstrip-frame img {
width: 100%;
height: auto;
border: 1px solid var(--color-border);
margin-bottom: 0.25rem;
}
.frame-time { font-size: 0.75rem; color: var(--color-text-secondary); }
/* Checkbox */
.checkbox-container {
display: flex;
align-items: center;
gap: 0.5rem;
cursor: pointer;
font-size: 0.9rem;
}
.checkbox-container input { width: 16px; height: 16px; }
/* ===================================
LAYOUT STRUCTURE
=================================== */