Initial commit: spreewaldzeit + Dockerfile for Coolify (Next.js + Prisma/SQLite)

This commit is contained in:
2026-06-03 14:08:48 +02:00
committed by Ihor_Zhekov
commit bf5d79a919
94 changed files with 12480 additions and 0 deletions

146
app/globals.css Normal file
View File

@@ -0,0 +1,146 @@
@tailwind base;
@tailwind components;
@tailwind utilities;
/* -----------------------------------------------------------
Basis-Typografie & Grundfarben
----------------------------------------------------------- */
@layer base {
:root {
--color-bg: #f5f1e8;
--color-bg-soft: #fbf9f4;
--color-ink: #1c2620;
--color-moss: #5a6b4f;
}
html {
scroll-behavior: smooth;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-rendering: optimizeLegibility;
}
body {
background-color: var(--color-bg);
color: var(--color-ink);
font-family: var(--font-figtree), ui-sans-serif, system-ui, sans-serif;
font-feature-settings: "ss01", "ss02";
font-size: 1.0625rem; /* 17px base */
}
/* Subtle paper texture — desktop only (fixed bg repaints on mobile scroll) */
@media (min-width: 768px) {
body::before {
content: "";
position: fixed;
inset: 0;
pointer-events: none;
z-index: 0;
opacity: 0.35;
background-image: radial-gradient(
rgba(28, 38, 32, 0.025) 1px,
transparent 1px
);
background-size: 3px 3px;
}
}
h1, h2, h3, h4 {
font-family: var(--font-fraunces), Georgia, serif;
font-weight: 400;
letter-spacing: -0.02em;
}
::selection {
background: #5a6b4f;
color: #f5f1e8;
}
:focus-visible {
outline: 2px solid #5a6b4f;
outline-offset: 2px;
border-radius: 2px;
}
}
/* -----------------------------------------------------------
Utility-Klassen
----------------------------------------------------------- */
@layer components {
.eyebrow {
@apply text-xs uppercase tracking-[0.22em] text-moss-600 font-medium;
}
.link-underline {
@apply relative inline-block;
background-image: linear-gradient(currentColor, currentColor);
background-position: 0% 100%;
background-repeat: no-repeat;
background-size: 100% 1px;
transition: background-size 0.3s ease;
}
.link-underline:hover {
background-size: 0% 1px;
}
.hairline {
@apply block h-px w-full bg-ink/10;
}
/* Platform external link button */
.platform-link {
@apply flex items-center justify-between w-full border border-ink/12 bg-parchment/60 px-4 py-3 rounded-sm text-sm transition-all duration-200;
}
.platform-link:hover {
@apply border-ink/25 bg-parchment;
}
}
/* -----------------------------------------------------------
react-day-picker v9 — palette overrides
----------------------------------------------------------- */
.rdp-root {
--rdp-accent-color: #5a6b4f;
--rdp-accent-background-color: rgba(90, 107, 79, 0.1);
--rdp-today-color: #5a6b4f;
--rdp-range_start-date-background-color: #5a6b4f;
--rdp-range_end-date-background-color: #5a6b4f;
--rdp-range_middle-background-color: rgba(90, 107, 79, 0.1);
--rdp-range_start-color: #fbf9f4;
--rdp-range_end-color: #fbf9f4;
--rdp-disabled-opacity: 0.45;
--rdp-day-height: 44px;
--rdp-day-width: 44px;
--rdp-day_button-height: 40px;
--rdp-day_button-width: 40px;
margin: 0;
font-family: var(--font-figtree), ui-sans-serif, sans-serif;
font-size: 0.9rem;
}
.rdp-selected .rdp-day_button {
background-color: #5a6b4f;
color: #fbf9f4;
border-color: #5a6b4f;
}
.rdp-disabled:not(.rdp-selected) .rdp-day_button {
text-decoration: line-through;
color: #a9a391;
}
.rdp-caption_label {
font-family: var(--font-fraunces), Georgia, serif;
font-weight: 400;
font-size: 1.1rem;
letter-spacing: -0.01em;
}
.rdp-button_previous,
.rdp-button_next {
transition: background-color 0.2s ease, opacity 0.2s ease;
border-radius: 6px;
}
.rdp-button_previous:hover,
.rdp-button_next:hover {
background-color: rgba(90, 107, 79, 0.1);
}
.rdp-day_button:hover:not(:disabled) {
background-color: rgba(90, 107, 79, 0.08);
}