Files
portfolio/app/globals.css
denshooter 96ec2d867f feat: plakat redesign phase 1 (tokens, fonts, poster hero, header) (#74)
- New design tokens: signal red, ink and paper as RGB channels; ink and paper
  swap roles in dark mode so every component inverts cleanly
- Fonts via next/font: Bricolage Grotesque (with wdth/opsz axes), Geist,
  Geist Mono; drop Inter and Playfair
- Poster hero: kicker, giant DK0 wordmark that reacts to pointer distance
  (weight and width through a damped spring, desktop only, off for reduced
  motion), claim as h1, intro with thesis countdown, marquee strip
- Header in poster style: transparent over the red hero, paper strip with
  ink rule when scrolled or on subpages; drawer menu restyled
- Remove wavy SVG separators, CSS shader gradient, background blobs and
  unused providers that caused the pink/purple bands between sections
- Drop the global p/span/div color override so colors inherit properly
- New hero texts in de/en, tests and i18n key check updated

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 23:48:39 +02:00

277 lines
6.8 KiB
CSS

@tailwind base;
@tailwind components;
@tailwind utilities;
:root {
/* Warm Brown & Off-White Palette */
--background: #faf8f3; /* Warm off-white */
--foreground: #3e2723; /* Rich brown */
--card: rgba(255, 252, 245, 0.7);
--card-foreground: #3e2723;
--popover: #fffcf5;
--popover-foreground: #3e2723;
--primary: #5d4037; /* Medium brown */
--primary-foreground: #faf8f3;
--secondary: #d7ccc8; /* Light taupe */
--secondary-foreground: #3e2723;
--muted: #efebe9; /* Very light brown */
--muted-foreground: #795548; /* Muted brown */
--accent: #bcaaa4; /* Warm taupe */
--accent-foreground: #3e2723;
--destructive: #d84315; /* Warm red-brown */
--destructive-foreground: #faf8f3;
--border: #d7ccc8;
--input: #efebe9;
--ring: #a1887f; /* Warm brown ring */
--radius: 1rem;
/* Motion tokens: enter/exit = ease-out, on-screen movement = ease-in-out */
--ease-out: cubic-bezier(0.23, 1, 0.32, 1);
--ease-in-out: cubic-bezier(0.77, 0, 0.175, 1);
--ease-drawer: cubic-bezier(0.32, 0.72, 0, 1);
/* Plakat-Design (RGB-Kanäle, damit Tailwind-Deckkraft funktioniert) */
--plakat-red: 232 64 47;
--plakat-ink: 20 12 11;
--plakat-paper: 246 243 241;
--plakat-paper-2: 235 230 226;
--plakat-ok: 31 157 99;
}
.dark {
--background: #1c1917; /* stone-900 */
--foreground: #f5f5f4; /* stone-100 */
--card: rgba(28, 25, 23, 0.7);
--card-foreground: #f5f5f4;
--popover: #1c1917;
--popover-foreground: #f5f5f4;
--primary: #d6d3d1; /* stone-300 */
--primary-foreground: #1c1917;
--secondary: #44403c; /* stone-700 */
--secondary-foreground: #f5f5f4;
--muted: #292524; /* stone-800 */
--muted-foreground: #a8a29e; /* stone-400 */
--accent: #57534e; /* stone-600 */
--accent-foreground: #f5f5f4;
--destructive: #7f1d1d; /* dark red */
--destructive-foreground: #f5f5f4;
--border: #44403c;
--input: #292524;
--ring: #d6d3d1;
/* Tinte und Papier tauschen die Rollen, das Rot bleibt */
--plakat-ink: 243 238 233;
--plakat-paper: 21 16 15;
--plakat-paper-2: 36 30 28;
--plakat-ok: 60 199 138;
}
body {
background: rgb(var(--plakat-paper));
color: rgb(var(--plakat-ink));
font-family: var(--font-geist), "Helvetica Neue", Arial, sans-serif;
margin: 0;
padding: 0;
overflow-x: hidden;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-rendering: optimizeLegibility;
position: relative;
transition: background-color 0.3s ease, color 0.3s ease;
}
/* Custom Selection */
::selection {
background: rgb(var(--plakat-ink));
color: rgb(var(--plakat-paper));
}
/* Smooth Scrolling */
html {
scroll-behavior: smooth;
}
/* Reduced motion: drop movement, keep colour/opacity feedback */
@media (prefers-reduced-motion: reduce) {
html {
scroll-behavior: auto;
}
*,
*::before,
*::after {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
animation-delay: 0ms !important;
}
}
/* 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-card {
background: var(--card);
backdrop-filter: blur(30px) saturate(200%);
-webkit-backdrop-filter: blur(30px) saturate(200%);
border: 1px solid var(--border);
box-shadow:
0 4px 6px -1px rgba(0, 0, 0, 0.06),
0 2px 4px -1px rgba(0, 0, 0, 0.05);
transition:
transform 250ms var(--ease-out),
box-shadow 250ms var(--ease-out),
border-color 200ms ease;
}
@media (hover: hover) and (pointer: fine) {
.glass-card:hover {
background: var(--card);
box-shadow:
0 20px 25px -5px rgba(0, 0, 0, 0.15),
0 10px 10px -5px rgba(0, 0, 0, 0.08);
transform: translateY(-4px);
border-color: var(--ring);
}
}
/* Typography & Headings */
h1,
h2,
h3,
h4,
h5,
h6 {
font-family: var(--font-bricolage), "Avenir Next", "Segoe UI", sans-serif;
letter-spacing: -0.02em;
font-weight: 700;
}
/* Hide scrollbar but keep functionality */
::-webkit-scrollbar {
width: 8px;
}
::-webkit-scrollbar-track {
background: transparent;
}
::-webkit-scrollbar-thumb {
background: #bcaaa4;
border-radius: 4px;
}
::-webkit-scrollbar-thumb:hover {
background: #a1887f;
}
.scrollbar-hide::-webkit-scrollbar {
display: none;
}
.scrollbar-hide {
-ms-overflow-style: none;
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;
color: var(--foreground);
}
.markdown h2 {
@apply text-2xl font-semibold mt-8 mb-4 tracking-tight;
color: var(--foreground);
}
.markdown p {
@apply mb-4 leading-relaxed;
color: var(--foreground);
}
.markdown a {
@apply underline decoration-2 underline-offset-2 hover:opacity-80 transition-colors duration-300;
color: var(--primary);
text-decoration-color: var(--accent);
}
.markdown ul {
@apply list-disc list-inside mb-4 space-y-2;
color: var(--foreground);
}
.markdown code {
@apply px-1.5 py-0.5 rounded text-sm font-mono;
background: var(--muted);
color: var(--foreground);
}
.markdown pre {
@apply p-4 rounded-xl overflow-x-auto mb-6;
background: var(--foreground);
color: var(--background);
}
/* Admin Dashboard Styles - Warm Brown Theme */
.animated-bg {
background: #faf8f3;
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
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;
}