@import "tailwindcss"; /* * Gestaltung: Modemagazin trifft italienischen Sommer. * Putz-Weiss (plaster) als Grund, Anthrazit (ink) fuer Schrift und dunkle * Flaechen, Pompeji-Rot (rosso) als sparsam eingesetzter Akzent. * Kontraste (gegen plaster): ink 14.6:1, stone 5.3:1, rosso 6.7:1. */ @theme { --color-plaster: #f2ece3; --color-paper: #faf7f1; --color-ink: #23211f; --color-stone: #676058; --color-line: #d8cec0; --color-rosso: #8e3b2b; --color-rosso-deep: #6f2c20; --color-sand: #c9b79c; --font-display: var(--font-bodoni), "Bodoni 72", "Didot", Georgia, serif; --font-sans: var(--font-hanken), "Helvetica Neue", Arial, sans-serif; --ease-editorial: cubic-bezier(0.22, 1, 0.36, 1); } @layer base { html { scroll-behavior: smooth; scroll-padding-top: 5rem; -webkit-text-size-adjust: 100%; scrollbar-color: var(--color-stone) var(--color-plaster); accent-color: var(--color-rosso); } body { background: var(--color-plaster); color: var(--color-ink); font-family: var(--font-sans); font-size: 1.0625rem; line-height: 1.6; text-rendering: optimizeLegibility; -webkit-font-smoothing: antialiased; caret-color: var(--color-rosso); font-variant-numeric: lining-nums; } h1, h2, h3 { text-wrap: balance; } p { text-wrap: pretty; } a { text-underline-offset: 0.22em; text-decoration-thickness: 1px; } ::selection { background: var(--color-rosso); color: var(--color-paper); } /* Sichtbarer Fokus fuer Tastaturbedienung, nie nur ueber Farbe. */ :focus-visible { outline: 2px solid var(--color-rosso); outline-offset: 3px; } .on-dark :focus-visible { outline-color: var(--color-paper); } @media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; } } } @layer components { .container-edge { width: 100%; max-width: 88rem; margin-inline: auto; padding-inline: 1rem; } @media (min-width: 48rem) { .container-edge { padding-inline: 2.5rem; } } .display { font-family: var(--font-display); font-weight: 400; letter-spacing: -0.01em; line-height: 1.02; } .section-title { font-family: var(--font-display); font-weight: 400; font-size: clamp(2.25rem, 1.4rem + 3.6vw, 4.25rem); line-height: 1.02; letter-spacing: -0.015em; } .prose-body { max-width: 38rem; } .prose-body p + p { margin-top: 1em; } .btn { display: inline-flex; align-items: center; justify-content: center; gap: 0.5rem; min-height: 3rem; padding: 0.75rem 1.5rem; font-weight: 600; font-size: 1rem; border-radius: 999px; transition: background-color 180ms var(--ease-editorial), color 180ms var(--ease-editorial), transform 180ms var(--ease-editorial); } .btn:active { transform: scale(0.98); } .btn-primary { background: var(--color-rosso); color: var(--color-paper); } .btn-primary:hover { background: var(--color-rosso-deep); } .btn-primary:disabled { background: var(--color-stone); cursor: not-allowed; } .btn-quiet { border: 1px solid currentColor; } .btn-quiet:hover { background: var(--color-ink); color: var(--color-paper); border-color: var(--color-ink); } .field-label { display: block; font-size: 0.9375rem; font-weight: 600; margin-bottom: 0.375rem; } .field { width: 100%; min-height: 3rem; padding: 0.625rem 0.875rem; background: var(--color-paper); border: 1px solid #b3a794; border-radius: 0.5rem; font-size: 1rem; } .field:focus-visible { outline-offset: 0; border-color: var(--color-ink); } .field[aria-invalid="true"] { border-color: var(--color-rosso); } /* Textlinks: ruhig unterstrichen, beim Zeigen kraeftiger. */ .link-quiet { text-decoration-line: underline; text-decoration-color: color-mix(in srgb, currentColor 40%, transparent); text-underline-offset: 0.22em; text-decoration-thickness: 1px; transition: text-decoration-color 160ms var(--ease-editorial); } .link-quiet:hover { text-decoration-color: currentColor; } .link-strong { text-decoration-line: underline; text-decoration-color: var(--color-rosso); text-underline-offset: 0.3em; text-decoration-thickness: 2px; transition: color 160ms var(--ease-editorial); } .link-strong:hover { color: var(--color-rosso); } .draft-flag { display: inline-block; font-size: 0.75rem; font-weight: 600; padding: 0.125rem 0.5rem; border-radius: 999px; background: #efe0b8; color: #5c4712; } } /* * Papierstruktur der Platzhalter-Tafeln (inline SVG als data-URI, CSP: * img-src data: ist erlaubt). Statisch, keine Animation. */ .placeholder-plate::before { content: ""; position: absolute; inset: 0; z-index: -1; opacity: 0.35; mix-blend-mode: multiply; background-image: url("data:image/svg+xml;utf8,"); } /* Masthead: der eine laute Moment der Seite. */ .masthead { font-family: var(--font-display); font-weight: 500; font-size: clamp(4.25rem, 21vw, 19rem); line-height: 0.8; letter-spacing: -0.035em; font-variation-settings: "opsz" 96; } /* * Einzige orchestrierte Eroeffnung: Masthead steigt auf, das Leitbild setzt * sich, die Cover-Lines folgen. Reines CSS, kein JavaScript noetig; bei * reduzierter Bewegung greift die Regel in @layer base. */ @keyframes hero-rise { from { opacity: 0; transform: translateY(0.18em); clip-path: inset(0 0 100% 0); } to { opacity: 1; transform: none; clip-path: inset(0 0 0 0); } } @keyframes hero-settle { from { opacity: 0; transform: scale(1.035); } to { opacity: 1; transform: none; } } @keyframes hero-fade { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } } .hero-rise { animation: hero-rise 1.1s var(--ease-editorial) both; } .hero-image { overflow: hidden; } .hero-image > * { animation: hero-settle 1.5s var(--ease-editorial) 0.15s both; } .hero-fade { animation: hero-fade 0.9s var(--ease-editorial) 0.5s both; } /* Mobile Buchungsleiste: Inhalt am Seitenende nie verdecken. */ body:has(.mobile-book-bar[data-visible="true"]) footer { padding-bottom: 6rem; } @media (min-width: 64rem) { body:has(.mobile-book-bar[data-visible="true"]) footer { padding-bottom: 0; } } dialog.booking-dialog::backdrop { background: rgb(35 33 31 / 0.55); backdrop-filter: blur(2px); }