Reapply "Add missing admin action files and navigation links"

This reverts commit 4d515bc400.
This commit is contained in:
Simo committed 2026-07-11 20:52:56 +02:00
1 parent 96ed768f14
commit 5b4228261a
338 files changed
+28143 -5948

No files matched your search

+65 -22
View File
@@ -4,8 +4,7 @@
@custom-variant dark (&:where(.dark, .dark *));
@theme {
--font-sans: var(--font-nunito), "Nunito", ui-sans-serif, system-ui, -apple-system,
"Segoe UI", sans-serif;
--font-sans: var(--font-nunito), "Nunito", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;
--breakpoint-sm: 40rem;
--breakpoint-md: 48rem;
--breakpoint-lg: 64rem;
@@ -106,7 +105,7 @@ html.dark textarea {
}
html.dark .admin-page table,
html.dark .admin-card {
border-color: rgba(255,255,255,0.06);
border-color: rgba(255, 255, 255, 0.06);
}
html.dark .currency,
html.dark .article-img {
@@ -181,7 +180,11 @@ body {
/* ── Site background ── */
.site-bg {
background:
linear-gradient(to bottom, color-mix(in srgb, var(--color-primary) 12%, rgba(255,255,255,0.6)), rgba(255,255,255,0.75)),
linear-gradient(
to bottom,
color-mix(in srgb, var(--color-primary) 12%, rgba(255, 255, 255, 0.6)),
rgba(255, 255, 255, 0.75)
),
url("/assets/images/background-light.jpg") no-repeat fixed center / cover;
background-blend-mode: overlay;
}
@@ -214,7 +217,9 @@ body {
text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
}
.hover-lift {
transition: transform 0.2s ease, box-shadow 0.2s ease;
transition:
transform 0.2s ease,
box-shadow 0.2s ease;
}
.hover-lift:hover {
transform: translateY(-2px);
@@ -246,7 +251,11 @@ a:hover {
font-size: 0.875rem;
}
.hero {
background: linear-gradient(135deg, color-mix(in srgb, var(--gradient-from) 14%, var(--color-navbar)), color-mix(in srgb, var(--gradient-to) 8%, var(--color-navbar)));
background: linear-gradient(
135deg,
color-mix(in srgb, var(--gradient-from) 14%, var(--color-navbar)),
color-mix(in srgb, var(--gradient-to) 8%, var(--color-navbar))
);
border: 1px solid color-mix(in srgb, var(--color-primary) 20%, transparent);
border-radius: var(--radius-lg);
padding: 2rem 2.25rem;
@@ -260,7 +269,9 @@ a:hover {
border-radius: var(--card-border-radius);
box-shadow: var(--shadow-card);
padding: 1.1rem 1.25rem;
transition: transform 0.2s ease, box-shadow 0.2s ease;
transition:
transform 0.2s ease,
box-shadow 0.2s ease;
}
.card:hover {
box-shadow: var(--shadow-card-hover);
@@ -295,7 +306,7 @@ a:hover {
}
.btn:hover {
transform: translateY(-2px);
box-shadow: 0 4px 12px rgba(0,0,0,0.1);
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
text-decoration: none;
}
.btn-primary {
@@ -326,7 +337,9 @@ textarea {
background: var(--color-surface);
color: var(--color-text-readable, var(--color-text));
outline: none;
transition: border-color 0.2s ease, box-shadow 0.2s ease;
transition:
border-color 0.2s ease,
box-shadow 0.2s ease;
}
input:focus,
select:focus,
@@ -399,7 +412,9 @@ tbody tr:hover {
}
/* ── Admin panel (Housekeeping) ─────────────────────────────────
Modern, consistent styling for all admin content pages. */
.admin-page { scroll-margin-top: 1rem; }
.admin-page {
scroll-margin-top: 1rem;
}
/* Page heading */
.admin-page main > h1:first-child,
@@ -484,8 +499,12 @@ tbody tr:hover {
.admin-page tbody tr:hover {
background: color-mix(in srgb, var(--color-primary) 4%, transparent);
}
.admin-page thead tr:first-child th:first-child { border-radius: 16px 0 0 0; }
.admin-page thead tr:first-child th:last-child { border-radius: 0 16px 0 0; }
.admin-page thead tr:first-child th:first-child {
border-radius: 16px 0 0 0;
}
.admin-page thead tr:first-child th:last-child {
border-radius: 0 16px 0 0;
}
/* Section heading inside admin pages */
.admin-section-title {
@@ -534,7 +553,11 @@ tbody tr:hover {
align-items: center;
gap: 0.75rem;
padding: 0.9rem 1.1rem;
background: linear-gradient(135deg, color-mix(in srgb, var(--gradient-from) 10%, var(--color-navbar)), color-mix(in srgb, var(--gradient-to) 5%, var(--color-navbar)));
background: linear-gradient(
135deg,
color-mix(in srgb, var(--gradient-from) 10%, var(--color-navbar)),
color-mix(in srgb, var(--gradient-to) 5%, var(--color-navbar))
);
border-bottom: 1px solid color-mix(in srgb, var(--color-text-muted) 8%, transparent);
}
.content-card-icon {
@@ -545,7 +568,11 @@ tbody tr:hover {
display: grid;
place-items: center;
font-size: 1.25rem;
background: linear-gradient(135deg, color-mix(in srgb, var(--gradient-from) 22%, var(--color-navbar)), color-mix(in srgb, var(--gradient-to) 12%, var(--color-navbar)));
background: linear-gradient(
135deg,
color-mix(in srgb, var(--gradient-from) 22%, var(--color-navbar)),
color-mix(in srgb, var(--gradient-to) 12%, var(--color-navbar))
);
box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--color-primary) 30%, transparent);
}
.content-card-head-text {
@@ -578,15 +605,25 @@ tbody tr:hover {
grid-template-columns: 1fr;
}
@media (min-width: 40rem) {
.card-grid.sm-2 { grid-template-columns: repeat(2, 1fr); }
.card-grid.sm-2 {
grid-template-columns: repeat(2, 1fr);
}
}
@media (min-width: 48rem) {
.card-grid.md-2 { grid-template-columns: repeat(2, 1fr); }
.card-grid.md-3 { grid-template-columns: repeat(3, 1fr); }
.card-grid.md-2 {
grid-template-columns: repeat(2, 1fr);
}
.card-grid.md-3 {
grid-template-columns: repeat(3, 1fr);
}
}
@media (min-width: 64rem) {
.card-grid.lg-3 { grid-template-columns: repeat(3, 1fr); }
.card-grid.lg-4 { grid-template-columns: repeat(4, 1fr); }
.card-grid.lg-3 {
grid-template-columns: repeat(3, 1fr);
}
.card-grid.lg-4 {
grid-template-columns: repeat(4, 1fr);
}
}
/* Stat tiles (value in the primary colour + muted label). */
@@ -722,7 +759,13 @@ tbody tr:hover {
/* ── Skeleton shimmer animation ─────────────────────────────── */
@keyframes shimmer {
0% { opacity: 0.6; }
50% { opacity: 1; }
100% { opacity: 0.6; }
0% {
opacity: 0.6;
}
50% {
opacity: 1;
}
100% {
opacity: 0.6;
}
}