diff --git a/Elternbeirat.Web/Components/App.razor b/Elternbeirat.Web/Components/App.razor index d649b4a..a336909 100644 --- a/Elternbeirat.Web/Components/App.razor +++ b/Elternbeirat.Web/Components/App.razor @@ -1,5 +1,5 @@  - + diff --git a/Elternbeirat.Web/Components/Layout/MainLayout.razor b/Elternbeirat.Web/Components/Layout/MainLayout.razor index 53a4e95..d1e6cb2 100644 --- a/Elternbeirat.Web/Components/Layout/MainLayout.razor +++ b/Elternbeirat.Web/Components/Layout/MainLayout.razor @@ -1,3 +1,33 @@ -@inherits LayoutComponentBase +@inherits LayoutComponentBase -@Body \ No newline at end of file +
+ + +
+ @Body +
+ + +
diff --git a/Elternbeirat.Web/Components/Layout/MainLayout.razor.css b/Elternbeirat.Web/Components/Layout/MainLayout.razor.css index 60cec92..6932f38 100644 --- a/Elternbeirat.Web/Components/Layout/MainLayout.razor.css +++ b/Elternbeirat.Web/Components/Layout/MainLayout.razor.css @@ -18,3 +18,100 @@ right: 0.75rem; top: 0.5rem; } + +/* Page frame: header and footer stay put, the content grows and pushes the + footer to the bottom even on short pages. */ +.page { + display: flex; + flex-direction: column; + min-height: 100vh; +} + +/* Header */ +.site-header { + border-bottom: 1px solid #e0e0e0; + background: #fff; +} + +.header-inner { + max-width: 60rem; + margin: 0 auto; + padding: 1rem 1.25rem; + display: flex; + flex-wrap: wrap; + align-items: baseline; + gap: 0.5rem 1.5rem; +} + +.brand { + font-size: 1.35rem; + font-weight: 700; + color: #1f3a5f; + text-decoration: none; + white-space: nowrap; +} + +.main-nav { + display: flex; + flex-wrap: wrap; + gap: 0.25rem 1.25rem; +} + +.main-nav a { + color: #333; + text-decoration: none; + padding: 0.2rem 0; + border-bottom: 2px solid transparent; +} + +.main-nav a:hover { + color: #1f3a5f; +} + +/* NavLink adds .active to the link of the current route. */ +.main-nav a.active { + color: #1f3a5f; + border-bottom-color: #1f3a5f; +} + +/* Content */ +.content { + flex: 1; + width: 100%; + max-width: 60rem; + margin: 0 auto; + padding: 1.5rem 1.25rem 3rem; +} + +/* Footer */ +.site-footer { + border-top: 1px solid #e0e0e0; + background: #fafafa; + color: #555; + font-size: 0.9rem; +} + +.footer-inner { + max-width: 60rem; + margin: 0 auto; + padding: 1rem 1.25rem; + display: flex; + flex-wrap: wrap; + justify-content: space-between; + gap: 0.5rem 1.5rem; +} + +.footer-nav { + display: flex; + gap: 1.25rem; +} + +.footer-nav a { + color: #555; + text-decoration: none; +} + +.footer-nav a:hover { + color: #1f3a5f; + text-decoration: underline; +} diff --git a/Elternbeirat.Web/wwwroot/app.css b/Elternbeirat.Web/wwwroot/app.css index 5388357..4a2497d 100644 --- a/Elternbeirat.Web/wwwroot/app.css +++ b/Elternbeirat.Web/wwwroot/app.css @@ -1,3 +1,23 @@ +/* Base styles. Self-hosted system font stack — no external fonts, for privacy. */ +html { + font-family: system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; + line-height: 1.6; + color: #222; +} + +body { + margin: 0; +} + +a { + color: #1f3a5f; +} + +h1, h2, h3 { + line-height: 1.25; + color: #1f3a5f; +} + h1:focus { outline: none; }