feat: plakat redesign for subpages (projects, books, legal, privacy)
- Shared SubpageShell (HeaderClient paper strip + ink footer) and SubpageIntro, btn/ghost/card helpers in app/_ui/subpage.tsx - Projects list: poster cards with hard ink shadows, filter pills, ink search field; no fake 800ms skeleton and no framer-motion opacity:0 in SSR - Project detail: poster hero, .plakat-prose markdown, links/stack aside, back link works without JS - Books: server-side fetch (visible without JS), cover + rating pills - Legal notice / privacy: moved to app/_ui/*Client.tsx, root routes removed (middleware always redirects to /[locale]), consent reset via useConsent - ProjectThumbnail rebuilt on Plakat tokens - Old Header.tsx + test removed; brown/cream/sand palettes and unused glass-panel/admin-glass(-light)/liquid-bg-blob/float CSS dropped (liquid palette, glass-card, admin-glass-card stay for admin + 404) - .plakat-prose replaces the missing typography plugin Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
+122
-57
@@ -106,16 +106,7 @@ html {
|
||||
}
|
||||
}
|
||||
|
||||
/* Liquid Glass Effects */
|
||||
.glass-panel {
|
||||
background: var(--card);
|
||||
backdrop-filter: blur(20px) saturate(130%);
|
||||
-webkit-backdrop-filter: blur(20px) saturate(130%);
|
||||
border: 1px solid var(--border);
|
||||
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.12);
|
||||
will-change: backdrop-filter;
|
||||
}
|
||||
|
||||
/* Glass-Karten, nur noch im Editor */
|
||||
.glass-card {
|
||||
background: var(--card);
|
||||
backdrop-filter: blur(30px) saturate(200%);
|
||||
@@ -177,31 +168,6 @@ h6 {
|
||||
scrollbar-width: none;
|
||||
}
|
||||
|
||||
/* Animations */
|
||||
@keyframes float {
|
||||
0%,
|
||||
100% {
|
||||
transform: translateY(0px);
|
||||
}
|
||||
50% {
|
||||
transform: translateY(-10px);
|
||||
}
|
||||
}
|
||||
|
||||
.animate-float {
|
||||
animation: float 8s ease-in-out infinite;
|
||||
will-change: transform;
|
||||
}
|
||||
|
||||
/* Liquid Blobs Background */
|
||||
.liquid-bg-blob {
|
||||
position: absolute;
|
||||
filter: blur(80px);
|
||||
opacity: 0.6;
|
||||
z-index: -1;
|
||||
animation: float 10s ease-in-out infinite;
|
||||
}
|
||||
|
||||
/* Markdown Specifics for Blog/Projects */
|
||||
.markdown h1 {
|
||||
@apply text-4xl font-bold mb-6 tracking-tight;
|
||||
@@ -246,31 +212,130 @@ h6 {
|
||||
z-index: -1;
|
||||
}
|
||||
|
||||
.admin-glass {
|
||||
background: rgba(250, 248, 243, 0.95);
|
||||
backdrop-filter: blur(12px);
|
||||
-webkit-backdrop-filter: blur(12px);
|
||||
border-bottom: 1px solid #d7ccc8;
|
||||
color: #3e2723;
|
||||
}
|
||||
|
||||
.admin-glass-light {
|
||||
background: #fffcf5;
|
||||
border: 1px solid #d7ccc8;
|
||||
color: #3e2723;
|
||||
transition: background-color 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease;
|
||||
box-shadow: 0 1px 2px rgba(62, 39, 35, 0.05);
|
||||
}
|
||||
|
||||
.admin-glass-light:hover {
|
||||
background: #faf8f3;
|
||||
border-color: #bcaaa4;
|
||||
box-shadow: 0 4px 6px rgba(62, 39, 35, 0.08);
|
||||
}
|
||||
|
||||
.admin-glass-card {
|
||||
background: #fffcf5;
|
||||
border: 1px solid #d7ccc8;
|
||||
box-shadow: 0 4px 6px -1px rgba(62, 39, 35, 0.06);
|
||||
color: #3e2723;
|
||||
}
|
||||
|
||||
/* Fließtext der Unterseiten (Markdown, CMS-HTML) im Plakat-Stil.
|
||||
Ersetzt das nicht installierte Typography-Plugin. */
|
||||
.plakat-prose {
|
||||
font-size: 17px;
|
||||
line-height: 1.7;
|
||||
overflow-wrap: anywhere;
|
||||
}
|
||||
.plakat-prose > * + * {
|
||||
margin-top: 1em;
|
||||
}
|
||||
.plakat-prose h1,
|
||||
.plakat-prose h2,
|
||||
.plakat-prose h3,
|
||||
.plakat-prose h4 {
|
||||
font-family: var(--font-bricolage), "Avenir Next", "Segoe UI", sans-serif;
|
||||
font-weight: 800;
|
||||
letter-spacing: -0.035em;
|
||||
line-height: 1;
|
||||
margin-top: 1.8em;
|
||||
}
|
||||
.plakat-prose > :first-child {
|
||||
margin-top: 0;
|
||||
}
|
||||
/* Markdown aus dem CMS beginnt oft mit dem Projekttitel als h1; die Seite hat schon einen */
|
||||
.plakat-prose > h1:first-child {
|
||||
display: none;
|
||||
}
|
||||
.plakat-prose > h1:first-child + * {
|
||||
margin-top: 0;
|
||||
}
|
||||
.plakat-prose h1 {
|
||||
font-size: clamp(2rem, 4vw, 2.75rem);
|
||||
}
|
||||
.plakat-prose h2 {
|
||||
font-size: clamp(1.7rem, 3.2vw, 2.25rem);
|
||||
}
|
||||
.plakat-prose h3 {
|
||||
font-size: 1.4rem;
|
||||
}
|
||||
.plakat-prose h4 {
|
||||
font-size: 1.15rem;
|
||||
}
|
||||
.plakat-prose strong {
|
||||
font-weight: 700;
|
||||
}
|
||||
.plakat-prose a {
|
||||
text-decoration: underline;
|
||||
text-decoration-thickness: 2px;
|
||||
text-underline-offset: 3px;
|
||||
text-decoration-color: rgb(var(--plakat-red));
|
||||
transition: color 150ms var(--ease-out);
|
||||
}
|
||||
@media (hover: hover) and (pointer: fine) {
|
||||
.plakat-prose a:hover {
|
||||
color: rgb(var(--plakat-red));
|
||||
}
|
||||
}
|
||||
.plakat-prose ul,
|
||||
.plakat-prose ol {
|
||||
padding-left: 1.25em;
|
||||
}
|
||||
.plakat-prose ul {
|
||||
list-style: square;
|
||||
}
|
||||
.plakat-prose ol {
|
||||
list-style: decimal;
|
||||
}
|
||||
.plakat-prose li + li {
|
||||
margin-top: 0.35em;
|
||||
}
|
||||
.plakat-prose li::marker {
|
||||
color: rgb(var(--plakat-red));
|
||||
}
|
||||
.plakat-prose blockquote {
|
||||
border-left: 4px solid rgb(var(--plakat-red));
|
||||
padding-left: 1em;
|
||||
}
|
||||
.plakat-prose code {
|
||||
font-family: var(--font-geist-mono), "SF Mono", Menlo, monospace;
|
||||
font-size: 0.9em;
|
||||
background: rgb(var(--plakat-paper-2));
|
||||
border-radius: 4px;
|
||||
padding: 0.1em 0.35em;
|
||||
}
|
||||
.plakat-prose pre {
|
||||
background: rgb(var(--plakat-ink));
|
||||
color: rgb(var(--plakat-paper));
|
||||
border-radius: 12px;
|
||||
padding: 1rem 1.25rem;
|
||||
overflow-x: auto;
|
||||
overflow-wrap: normal;
|
||||
}
|
||||
.plakat-prose pre code {
|
||||
background: transparent;
|
||||
padding: 0;
|
||||
color: inherit;
|
||||
}
|
||||
.plakat-prose img {
|
||||
max-width: 100%;
|
||||
height: auto;
|
||||
border: 2px solid rgb(var(--plakat-ink));
|
||||
border-radius: 12px;
|
||||
}
|
||||
.plakat-prose hr {
|
||||
border: 0;
|
||||
border-top: 2px solid rgb(var(--plakat-ink));
|
||||
}
|
||||
.plakat-prose table {
|
||||
display: block;
|
||||
max-width: 100%;
|
||||
overflow-x: auto;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
.plakat-prose th,
|
||||
.plakat-prose td {
|
||||
border-bottom: 1px solid rgb(var(--plakat-ink) / 0.2);
|
||||
padding: 0.5em 0.75em;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user