Round 15: Timetable, Resource Library, Advanced Analytics, Accessibility

This commit is contained in:
Mustafa Cetin committed 2026-07-29 11:16:28 +00:00
1 parent 0a7cfae311
commit a94f900ae0
15 files changed
+4580 -1079

No files matched your search

+228
View File
@@ -1748,6 +1748,234 @@
background: linear-gradient(to right, transparent, oklch(0.65 0.17 155 / 0.3), transparent);
}
/* ─── Advanced Analytics Styles ──────────────────────────────────── */
/* Chart container with rounded corners and shadow */
.chart-container {
background: oklch(1 0 0);
border-radius: 1rem;
box-shadow: 0 1px 3px oklch(0 0 0 / 0.06), 0 1px 2px oklch(0 0 0 / 0.04);
border: 1px solid oklch(0.93 0.005 155);
overflow: hidden;
}
.dark .chart-container {
background: oklch(0.18 0.015 260);
box-shadow: 0 1px 3px oklch(0 0 0 / 0.3), 0 0 0 1px oklch(1 0 0 / 6%);
border-color: oklch(1 0 0 / 8%);
}
/* Stat card with gradient */
.stat-card {
position: relative;
border-radius: 1rem;
padding: 1.25rem;
overflow: hidden;
transition: transform 0.2s ease-out, box-shadow 0.2s ease-out;
}
.stat-card::before {
content: '';
position: absolute;
inset: 0;
opacity: 0.06;
background: linear-gradient(135deg, oklch(0.55 0.17 155), oklch(0.55 0.14 175));
pointer-events: none;
}
.stat-card:hover {
transform: translateY(-2px);
box-shadow: 0 8px 24px -6px oklch(0.55 0.17 155 / 0.15);
}
.dark .stat-card:hover {
box-shadow: 0 8px 24px -6px oklch(0.65 0.17 155 / 0.25);
}
/* Heatmap cell styling */
.heatmap-cell {
border-radius: 3px;
transition: all 0.15s ease;
min-width: 14px;
min-height: 14px;
}
.heatmap-cell:hover {
transform: scale(1.3);
box-shadow: 0 0 0 2px oklch(0.55 0.17 155 / 0.3);
z-index: 1;
}
/* Analytics dashboard grid layout */
.analytics-dashboard {
display: grid;
gap: 1.5rem;
grid-template-columns: 1fr;
}
@media (min-width: 768px) {
.analytics-dashboard {
grid-template-columns: repeat(2, 1fr);
}
}
.analytics-dashboard-full {
grid-column: 1 / -1;
}
/* Chart loading skeleton */
.loading-skeleton-chart {
position: relative;
overflow: hidden;
border-radius: 1rem;
background: oklch(0.94 0.005 155 / 0.5);
min-height: 200px;
}
.dark .loading-skeleton-chart {
background: oklch(0.22 0.015 260 / 0.5);
}
.loading-skeleton-chart::after {
content: '';
position: absolute;
inset: 0;
background: linear-gradient(
90deg,
transparent 0%,
oklch(0.97 0.01 155 / 0.4) 50%,
transparent 100%
);
animation: skeleton-slide 1.5s ease-in-out infinite;
}
.dark .loading-skeleton-chart::after {
background: linear-gradient(
90deg,
transparent 0%,
oklch(0.30 0.01 260 / 0.3) 50%,
transparent 100%
);
}
/* Predictive badge — risk / excelling */
.predictive-badge {
display: inline-flex;
align-items: center;
gap: 0.375rem;
padding: 0.25rem 0.75rem;
border-radius: 9999px;
font-size: 0.75rem;
font-weight: 600;
letter-spacing: 0.02em;
line-height: 1.25rem;
}
.predictive-badge-risk {
background: oklch(0.55 0.22 25 / 0.1);
color: oklch(0.55 0.22 25);
border: 1px solid oklch(0.55 0.22 25 / 0.2);
}
.dark .predictive-badge-risk {
background: oklch(0.55 0.22 25 / 0.15);
color: oklch(0.70 0.19 22);
border-color: oklch(0.55 0.22 25 / 0.3);
}
.predictive-badge-excel {
background: oklch(0.55 0.17 155 / 0.1);
color: oklch(0.55 0.17 155);
border: 1px solid oklch(0.55 0.17 155 / 0.2);
}
.dark .predictive-badge-excel {
background: oklch(0.55 0.17 155 / 0.15);
color: oklch(0.70 0.17 155);
border-color: oklch(0.65 0.17 155 / 0.3);
}
.predictive-badge-attention {
background: oklch(0.72 0.19 85 / 0.1);
color: oklch(0.60 0.18 50);
border: 1px solid oklch(0.72 0.19 85 / 0.2);
}
.dark .predictive-badge-attention {
background: oklch(0.72 0.19 85 / 0.15);
color: oklch(0.77 0.19 85);
border-color: oklch(0.72 0.19 85 / 0.3);
}
/* Analytics section tab navigation */
.analytics-tab {
padding: 0.5rem 1rem;
border-radius: 0.5rem;
font-size: 0.8125rem;
font-weight: 500;
color: oklch(0.55 0.02 260);
transition: all 0.2s ease;
cursor: pointer;
min-height: 44px;
display: flex;
align-items: center;
gap: 0.375rem;
border: 1px solid transparent;
}
.analytics-tab:hover {
background: oklch(0.55 0.17 155 / 0.06);
color: oklch(0.55 0.17 155);
}
.analytics-tab.active {
background: oklch(0.55 0.17 155 / 0.1);
color: oklch(0.55 0.17 155);
border-color: oklch(0.55 0.17 155 / 0.2);
font-weight: 600;
}
.dark .analytics-tab:hover {
background: oklch(0.55 0.17 155 / 0.1);
color: oklch(0.65 0.17 155);
}
.dark .analytics-tab.active {
background: oklch(0.55 0.17 155 / 0.15);
color: oklch(0.65 0.17 155);
border-color: oklch(0.65 0.17 155 / 0.3);
}
/* Export button group */
.export-btn-group {
display: flex;
gap: 0.5rem;
flex-wrap: wrap;
}
.export-btn {
display: inline-flex;
align-items: center;
gap: 0.375rem;
padding: 0.5rem 1rem;
border-radius: 0.5rem;
font-size: 0.8125rem;
font-weight: 500;
min-height: 44px;
border: 1px solid oklch(0.93 0.005 155);
background: oklch(1 0 0);
color: oklch(0.35 0.02 260);
transition: all 0.2s ease;
cursor: pointer;
}
.export-btn:hover {
background: oklch(0.55 0.17 155 / 0.06);
border-color: oklch(0.55 0.17 155 / 0.2);
color: oklch(0.55 0.17 155);
}
.dark .export-btn {
background: oklch(0.18 0.015 260);
border-color: oklch(1 0 0 / 8%);
color: oklch(0.70 0.02 260);
}
.dark .export-btn:hover {
background: oklch(0.55 0.17 155 / 0.1);
border-color: oklch(0.65 0.17 155 / 0.3);
color: oklch(0.65 0.17 155);
}
/* Chart description for screen readers */
.chart-sr-desc {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border-width: 0;
}
/* ─── Offline / PWA Styles ──────────────────────────────────────── */
/* Offline indicator bar */