Files
Schmacko-napf/assets/site.css
T
NotPika69andClaude Opus 5.5 fef4ac8eae Prüfdurchgang: Buchungslinks, alte Adressen, Tablet/Handy-Layout
- Buchungslinks direkt auf Portal-IDs; Ernährungsberatung auf id=107,
  Kaufberatung entfernt (im Portal gibt es keine Seite dafür)
- .htaccess: alte WordPress-Adressen per 301 auf die neuen Seiten
- Tablet bis 980 px: Logo-Siegel über den Kacheln statt darauf
- Handy: lange Wörter werden nicht mehr abgeschnitten, Pfeile
  überdecken keinen Text mehr, „Buchen“ neben dem Menü-Knopf
- Dreier-Karten: Überschriften auf einer Linie (Subgrid)
- Menü schließt mit Escape und Tipp daneben; sichtbarer Fokusrahmen
- Startseite Handy/Tablet: Kopfleiste, sobald das Siegel weg ist
- 404: Pfade ab der Wurzel statt <base>, Sprunglink bleibt auf der Seite

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-04 13:32:54 +02:00

655 lines
24 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* ===== Schrift (lokal, Questrial – SIL Open Font License) ===== */
@font-face {
font-family: "Questrial";
font-style: normal;
font-weight: 400;
font-display: swap;
src: url("fonts/questrial-latin.woff2") format("woff2");
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
font-family: "Questrial";
font-style: normal;
font-weight: 400;
font-display: swap;
src: url("fonts/questrial-latin-ext.woff2") format("woff2");
unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* ===== Farben – aus dem Schmacko-Napf-Branding ===== */
:root {
--bg: #fcfaf4; /* Creme */
--surface: #f2eee0; /* dunkleres Creme für Flächen */
--ink: #194242; /* Petrol-Grün (Logo) */
--ink-2: #0f2e2e;
--muted: #4a6866;
--sage: #d0e6a5; /* Salbeigrün */
--sage-soft: #e6f0d0;
--line: rgba(25, 66, 66, .14);
--on-image: #ffffff;
--radius: 22px;
--gap: 14px;
--pad: clamp(16px, 2.2vw, 28px);
--ease: cubic-bezier(.22, .61, .36, 1);
}
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: 96px; }
html, body { margin: 0; }
body {
background: var(--bg);
color: var(--ink);
font-family: "Questrial", "Century Gothic", system-ui, sans-serif;
font-size: 19px;
line-height: 1.55;
-webkit-font-smoothing: antialiased;
overflow-x: hidden;
}
a { color: inherit; text-decoration: none; }
img { display: block; max-width: 100%; height: auto; }
h1, h2, h3 { font-weight: 400; line-height: 1.05; letter-spacing: -.025em; margin: 0; }
p { margin: 0; }
svg { flex: none; }
/* Tastatur: direkt zum Inhalt */
.skip {
position: fixed; left: 16px; top: 16px; z-index: 100;
padding: 12px 20px; border-radius: 999px;
background: var(--ink); color: var(--bg);
transform: translateY(-200%);
}
.skip:focus { transform: none; }
/* Tastatur-Fokus: dunkler Ring auf hellem Grund, Salbei auf dunklen Flächen */
:focus-visible { outline: 3px solid var(--ink); outline-offset: 3px; }
.panel--ink :focus-visible, .panel--photo :focus-visible, .site-footer :focus-visible { outline-color: var(--sage); }
/* ===== Header: Logo und Menü als zwei schwebende Elemente ===== */
.site-header {
position: sticky; top: 0; z-index: 50;
pointer-events: none; /* Fläche zwischen Logo und Menü bleibt klickbar */
}
.header-inner {
display: flex; align-items: center; gap: 24px;
height: 88px;
padding: 0 var(--pad);
}
.brand, .nav, .burger {
pointer-events: auto;
background: color-mix(in srgb, var(--bg) 90%, transparent);
backdrop-filter: blur(14px);
-webkit-backdrop-filter: blur(14px);
box-shadow: 0 10px 30px rgba(25, 66, 66, .12);
}
.brand {
width: 72px; height: 72px;
border-radius: 50%;
display: grid; place-items: center;
}
.brand img { width: 68px; height: 68px; transition: transform .5s var(--ease); }
.brand:hover img { transform: rotate(-6deg); }
.nav {
display: flex; gap: 4px;
margin-left: auto;
padding: 8px;
border-radius: var(--radius);
}
.nav a {
padding: 12px 20px;
border-radius: 14px;
font-size: 1.05rem;
transition: background .25s var(--ease);
}
.nav a:hover, .nav a[aria-current="page"] { background: var(--sage-soft); }
/* Buchen-Knopf in der Kopfleiste */
.book-btn {
pointer-events: auto;
display: inline-flex; align-items: center; gap: 10px;
height: 60px; padding: 0 24px 0 20px;
margin-left: 12px;
border-radius: var(--radius);
background: var(--sage);
color: var(--ink);
font-size: 1.05rem;
box-shadow: 0 10px 30px rgba(25, 66, 66, .12);
transition: background .25s var(--ease);
}
.book-btn:hover { background: #c2dc8f; }
.book-btn svg { width: 22px; height: 22px; }
.burger {
display: none;
width: 60px; height: 60px;
margin-left: auto;
border: 0;
border-radius: 50%;
color: var(--ink);
cursor: pointer;
place-items: center;
}
.burger svg { width: 22px; height: 22px; }
/* Startseite: Header erst nach dem Hero einblenden */
.is-home .site-header {
position: fixed; left: 0; right: 0;
transform: translateY(-120%);
transition: transform .45s var(--ease);
}
.is-home.scrolled .site-header, .is-home.menu-open .site-header { transform: none; }
/* ===== Buttons ===== */
.btn {
display: inline-flex; align-items: center; justify-content: center; gap: 12px;
height: 60px; padding: 0 28px;
border-radius: 999px;
font-size: 1.12rem;
border: 1px solid transparent;
transition: background .3s var(--ease), color .3s var(--ease), border-color .3s var(--ease);
white-space: nowrap;
}
.btn svg { width: 22px; height: 22px; }
.btn--sage { background: var(--sage); color: var(--ink); }
.btn--sage:hover { background: #c2dc8f; }
.btn--ink { background: var(--ink); color: var(--bg); }
.btn--ink:hover { background: var(--ink-2); }
.btn--line { border-color: rgba(255, 255, 255, .3); color: var(--bg); }
.btn--line:hover { border-color: var(--bg); }
.btn-row { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 36px; }
/* ===== Hero / Kacheln ===== */
.hero {
height: 100svh;
min-height: 600px;
display: flex;
padding: var(--pad);
}
.tiles {
flex: 1;
position: relative;
display: grid;
grid-template-columns: 1fr 1fr;
grid-template-rows: 1fr 1fr;
gap: var(--gap);
}
.tile {
position: relative;
overflow: hidden;
border-radius: var(--radius);
background: var(--surface);
isolation: isolate;
opacity: 0;
transform: translateY(14px);
animation: rise .8s var(--ease) forwards;
transition: opacity .4s var(--ease), filter .4s var(--ease);
}
.tile:nth-of-type(2) { animation-delay: .08s; }
.tile:nth-of-type(3) { animation-delay: .16s; }
.tile:nth-of-type(4) { animation-delay: .24s; }
@keyframes rise { to { opacity: 1; transform: none; } }
.tile img {
position: absolute; inset: 0;
width: 100%; height: 100%;
object-fit: cover;
z-index: -2;
transition: transform 1s var(--ease);
}
.tile::after {
content: "";
position: absolute; inset: 0;
z-index: -1;
background: linear-gradient(to top, rgba(10, 18, 14, .62) 0%, rgba(10, 18, 14, .12) 45%, rgba(10, 18, 14, 0) 70%);
}
.tile-foot {
position: absolute;
left: clamp(18px, 2.4vw, 32px);
right: clamp(18px, 2.4vw, 32px);
bottom: clamp(18px, 2.4vw, 30px);
display: flex;
align-items: flex-end;
gap: 16px;
color: var(--on-image);
}
/* rechte Spalte: Beschriftung an die Außenkante */
.tile:nth-of-type(even) .tile-foot { flex-direction: row-reverse; text-align: right; }
.tile-label {
font-size: clamp(1.7rem, 2.8vw, 2.7rem);
line-height: 1.1;
letter-spacing: -.01em;
}
.tile-label small {
display: block;
margin-top: 6px;
font-size: .48em;
letter-spacing: .02em;
opacity: .85;
}
.tile-arrow {
flex: none;
width: 54px; height: 54px;
border-radius: 50%;
background: rgba(255, 255, 255, .18);
border: 1px solid rgba(255, 255, 255, .45);
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px);
color: var(--on-image);
display: grid; place-items: center;
transition: background .4s var(--ease), color .4s var(--ease), border-color .4s var(--ease);
}
.tile-arrow svg { width: 20px; height: 20px; transition: transform .5s var(--ease); }
@media (hover: hover) {
.tiles:has(.tile:hover) .tile:not(:hover) { filter: saturate(.75) brightness(.92); }
.tile:hover img { transform: scale(1.05); }
.tile:hover .tile-arrow { background: var(--sage); border-color: var(--sage); color: var(--ink); }
.tile:hover .tile-arrow svg { transform: rotate(-45deg); }
}
/* Logo-Siegel in der Mitte */
.seal {
position: absolute;
left: 50%; top: 50%;
z-index: 5;
width: clamp(220px, 21vw, 300px);
aspect-ratio: 1;
margin: 0;
border-radius: 50%;
background: var(--bg);
display: grid; place-items: center;
transform: translate(-50%, -50%) scale(.9);
opacity: 0;
animation: seal .9s .35s var(--ease) forwards;
}
.seal img { width: 94%; height: 94%; object-fit: contain; }
@keyframes seal { to { opacity: 1; transform: translate(-50%, -50%) scale(1); } }
/* Ring um das Siegel mit runden Übergängen in die Kachel-Lücken (Form kommt aus site.js) */
.seal-joint {
position: absolute;
left: 50%; top: 50%;
z-index: 4;
transform: translate(-50%, -50%);
fill: var(--bg);
pointer-events: none;
opacity: 0;
animation: fade .9s .35s var(--ease) forwards;
}
@keyframes fade { to { opacity: 1; } }
.scroll-hint {
position: absolute;
left: 50%; bottom: calc(var(--pad) + 14px);
transform: translateX(-50%);
z-index: 6;
width: 44px; height: 44px;
border-radius: 50%;
background: var(--bg);
display: grid; place-items: center;
box-shadow: 0 8px 24px rgba(25, 66, 66, .18);
animation: bob 2.4s var(--ease) infinite;
}
.scroll-hint svg { width: 18px; height: 18px; }
@keyframes bob { 50% { transform: translate(-50%, 6px); } }
/* ===== Mosaik aus Flächen (gleicher Stil wie die Kacheln) ===== */
.mosaic {
display: grid;
gap: var(--gap);
padding: 0 var(--pad) var(--pad);
}
.row { display: grid; gap: var(--gap); grid-template-columns: 1fr 1fr; }
.row--3 { grid-template-columns: repeat(3, 1fr); }
.row--wide { grid-template-columns: 1.25fr 1fr; }
.row--wide-r { grid-template-columns: 1fr 1.25fr; }
.panel {
position: relative;
overflow: hidden;
isolation: isolate;
border-radius: var(--radius);
padding: clamp(28px, 4.2vw, 72px);
min-height: min(82svh, 820px);
display: flex; flex-direction: column; justify-content: flex-end;
background: var(--surface);
}
.panel--auto { min-height: 0; }
.panel--mid { min-height: min(62svh, 620px); }
.panel--center { justify-content: center; }
.panel--ink { background: var(--ink); color: var(--bg); }
.panel--sage { background: var(--sage); }
.panel--cream { background: var(--surface); }
.panel--plain { background: transparent; }
/* Foto-Fläche */
.panel--photo { color: var(--on-image); background: var(--ink); }
.panel--photo > img {
position: absolute; inset: 0;
width: 100%; height: 100%;
object-fit: cover;
z-index: -2;
transition: transform 1.2s var(--ease);
}
.panel--photo::after {
content: ""; position: absolute; inset: 0; z-index: -1;
background: linear-gradient(to top, rgba(10, 22, 20, .72) 0%, rgba(10, 22, 20, .25) 40%, rgba(10, 22, 20, 0) 65%);
}
.panel--photo.plain::after { display: none; }
a.panel--photo:hover > img { transform: scale(1.04); }
/* Typografie in Flächen */
.kicker {
display: block;
font-size: 1rem;
letter-spacing: .2em;
text-transform: uppercase;
margin-bottom: 22px;
opacity: .75;
}
.panel--ink .kicker, .panel--photo .kicker { color: var(--sage); opacity: 1; }
.display { font-size: clamp(2.8rem, 6.2vw, 6.4rem); }
.title { font-size: clamp(2.2rem, 4.2vw, 4rem); }
.big {
font-size: clamp(1.25rem, 1.8vw, 1.65rem);
line-height: 1.45;
max-width: 32ch;
margin-top: 24px;
}
.panel--cream .big, .panel--sage .big { color: var(--muted); }
.panel--sage .big { color: var(--ink); opacity: .85; }
.panel--ink .big { color: color-mix(in srgb, var(--bg) 80%, transparent); }
.panel--photo .big { color: rgba(255, 255, 255, .9); }
/* Pfeil oben rechts in verlinkten Flächen */
.panel-arrow {
position: absolute;
top: clamp(20px, 2.6vw, 36px); right: clamp(20px, 2.6vw, 36px);
width: 64px; height: 64px;
border-radius: 50%;
display: grid; place-items: center;
background: rgba(255, 255, 255, .18);
border: 1px solid rgba(255, 255, 255, .45);
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px);
color: var(--on-image);
transition: background .4s var(--ease), color .4s var(--ease), border-color .4s var(--ease);
}
.panel-arrow svg { width: 24px; height: 24px; transition: transform .5s var(--ease); }
a.panel:hover .panel-arrow { background: var(--sage); border-color: var(--sage); color: var(--ink); }
a.panel:hover .panel-arrow svg { transform: rotate(-45deg); }
.panel-arrow--ink { background: var(--ink); border-color: var(--ink); }
/* Steht die Überschrift oben (Handy), darf sie nicht unter den Pfeil laufen */
.panel-arrow--ink ~ .kicker { padding-right: 64px; }
/* Kurze Fakten als Pillen */
.facts { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 30px; }
.fact {
padding: 12px 22px;
border-radius: 999px;
font-size: 1.12rem;
background: rgba(255, 255, 255, .16);
border: 1px solid rgba(255, 255, 255, .35);
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px);
}
.panel--cream .fact, .panel--sage .fact { background: var(--bg); border-color: transparent; }
.panel--ink .fact { background: rgba(208, 230, 165, .12); border-color: transparent; }
/* Großes Zitat */
.statement {
font-size: clamp(2rem, 4.6vw, 4.6rem);
line-height: 1.12;
letter-spacing: -.025em;
max-width: 22ch;
margin: 0 auto;
text-align: center;
}
.statement-by { display: block; text-align: center; margin-top: 28px; font-size: 1.15rem; opacity: .7; }
/* 5 Säulen als große Wörter */
.words { list-style: none; padding: 0; margin: 10px 0 0; }
.words li {
display: flex; align-items: baseline; gap: clamp(16px, 2vw, 32px);
padding: clamp(10px, 1.4vw, 18px) 0;
border-bottom: 1px solid rgba(255, 255, 255, .12);
font-size: clamp(2.4rem, 6vw, 6rem);
line-height: 1;
letter-spacing: -.03em;
transition: color .3s var(--ease), padding .4s var(--ease);
}
.words li:hover { color: var(--sage); padding-left: 12px; }
.words small { font-size: 1rem; letter-spacing: .1em; color: var(--sage); width: 2.2em; flex: none; }
.words span { font-size: clamp(1.05rem, 1.4vw, 1.3rem); letter-spacing: 0; color: color-mix(in srgb, var(--bg) 70%, transparent); margin-left: auto; text-align: right; max-width: 26ch; line-height: 1.35; }
/* Qualifikationen (auf dunkler Fläche) */
.quals { list-style: none; padding: 0; margin: 10px 0 0; }
.quals li {
display: grid; grid-template-columns: 9em 1fr auto; align-items: baseline; gap: 12px 32px;
padding: clamp(18px, 2vw, 28px) 0;
border-bottom: 1px solid rgba(255, 255, 255, .12);
}
.quals small { font-size: 1rem; letter-spacing: .06em; color: var(--sage); }
.quals strong { font-weight: 400; font-size: clamp(1.6rem, 3.2vw, 3rem); line-height: 1.05; letter-spacing: -.02em; }
.quals span { color: color-mix(in srgb, var(--bg) 70%, transparent); font-size: clamp(1.05rem, 1.4vw, 1.25rem); text-align: right; }
/* Liste mit Jahreszahl (auf heller Fläche) */
.list-big { list-style: none; padding: 0; margin: 10px 0 0; columns: 2; column-gap: clamp(32px, 5vw, 80px); }
.list-big li {
break-inside: avoid;
display: flex; gap: 20px; align-items: baseline;
padding: 18px 0;
border-bottom: 1px solid var(--line);
font-size: clamp(1.15rem, 1.6vw, 1.4rem);
line-height: 1.35;
}
.list-big small { flex: none; width: 3em; font-size: 1rem; color: var(--muted); }
/* Schritte */
.steps { list-style: none; padding: 0; margin: 40px 0 0; display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--gap); }
.steps li { border-top: 1px solid rgba(255, 255, 255, .2); padding-top: 22px; }
.steps b { display: block; font-weight: 400; font-size: clamp(2.6rem, 4vw, 3.6rem); color: var(--sage); line-height: 1; }
.steps strong { display: block; font-weight: 400; font-size: clamp(1.4rem, 2vw, 1.8rem); margin-top: 18px; }
.steps span { display: block; margin-top: 10px; font-size: 1.12rem; color: color-mix(in srgb, var(--bg) 75%, transparent); }
/* Preise */
.price-big { margin-top: 30px; }
.price-big strong { display: block; font-weight: 400; font-size: clamp(3rem, 5vw, 4.8rem); line-height: 1; letter-spacing: -.03em; }
.price-big span { display: block; margin-top: 10px; font-size: 1.15rem; opacity: .75; }
.price-rows { margin-top: 36px; }
.price-rows div {
display: flex; justify-content: space-between; align-items: baseline; gap: 20px;
padding: 22px 0;
border-bottom: 1px solid var(--line);
font-size: clamp(1.3rem, 2vw, 1.8rem);
}
.price-rows div:first-child { border-top: 1px solid var(--line); }
.price-rows small { display: block; font-size: 1.05rem; color: var(--muted); margin-top: 6px; letter-spacing: 0; }
.price-rows strong { font-weight: 400; white-space: nowrap; font-size: clamp(1.6rem, 2.6vw, 2.4rem); }
/* Dreier-Reihen: Überschriften, Texte und Preise auf einer Linie, auch wenn ein Text kürzer ist */
@media (min-width: 981px) {
.row--3 { grid-template-rows: 1fr auto auto; min-height: min(62svh, 620px); } /* Höhe wie .panel--mid – im Subgrid zählt die der Flächen nicht */
.row--3 > .panel { display: grid; grid-row: span 3; grid-template-rows: subgrid; row-gap: 0; justify-content: stretch; }
.row--3 > .panel > * { align-self: start; }
.row--3 > .panel > .kicker { align-self: end; }
}
/* Icon in Flächen */
.panel-icon {
width: 76px; height: 76px;
border-radius: 50%;
background: var(--bg);
display: grid; place-items: center;
margin-bottom: auto;
}
.panel-icon svg { width: 34px; height: 34px; }
.panel--ink .panel-icon { background: rgba(208, 230, 165, .14); color: var(--sage); }
/* BARF-Teller */
.plate-panel { align-items: center; justify-content: center; }
.plate-panel img { width: min(82%, 560px); filter: drop-shadow(0 34px 46px rgba(25, 66, 66, .25)); }
/* Buchungs-Fläche */
.booking { display: grid; grid-template-columns: 1fr 1.1fr; gap: clamp(28px, 4vw, 72px); align-items: end; }
.book-links { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.book-links a {
display: flex; align-items: center; justify-content: space-between; gap: 16px;
padding: 22px 26px;
border-radius: 18px;
background: var(--bg);
font-size: clamp(1.15rem, 1.5vw, 1.35rem);
transition: background .3s var(--ease), color .3s var(--ease);
}
.book-links a:hover { background: var(--ink); color: var(--bg); }
.book-links svg { width: 22px; height: 22px; transition: transform .4s var(--ease); }
.book-links a:hover svg { transform: translate(2px, -2px); }
.book-links a:last-child:nth-child(odd) { grid-column: 1 / -1; }
/* G&H-Zertifikat */
.cert { display: block; width: clamp(150px, 13vw, 200px); height: auto; margin-top: 36px; }
.quals-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 24px; }
.quals-head .cert { margin-top: 0; width: clamp(120px, 11vw, 170px); }
/* Kontakt */
.contact-links { display: grid; gap: 12px; margin-top: 40px; max-width: 520px; }
.contact-links a {
display: flex; align-items: center; gap: 18px;
padding: 20px 24px;
border-radius: 18px;
background: rgba(255, 255, 255, .07);
font-size: clamp(1.15rem, 1.6vw, 1.4rem);
transition: background .3s var(--ease);
}
.contact-links a:hover { background: rgba(208, 230, 165, .18); }
.contact-links a.contact-book { background: var(--sage); color: var(--ink); }
.contact-links a.contact-book svg { color: var(--ink); }
.contact-links a.contact-book:hover { background: #c2dc8f; }
.contact-links svg { width: 28px; height: 28px; color: var(--sage); }
.contact-links a > span:last-child { margin-left: auto; opacity: .5; }
.contact-links a > span:last-child svg { width: 22px; height: 22px; color: currentColor; }
/* Footer */
.site-footer {
border-radius: var(--radius);
background: var(--ink-2);
color: color-mix(in srgb, var(--bg) 75%, transparent);
padding: clamp(28px, 3.4vw, 48px);
display: flex; align-items: center; justify-content: space-between; gap: 28px; flex-wrap: wrap;
font-size: 1.05rem;
}
.footer-brand { display: flex; align-items: center; gap: 22px; }
.footer-logo { width: 96px; height: 96px; border-radius: 50%; background: var(--bg); display: grid; place-items: center; flex: none; }
.footer-logo img { width: 92%; }
.footer-cert { width: auto; height: 84px; }
.footer-links { display: flex; flex-wrap: wrap; gap: 8px 26px; }
.footer-links a:hover { color: var(--bg); }
.footer-meta { width: 100%; display: flex; justify-content: space-between; flex-wrap: wrap; gap: 10px; padding-top: 22px; border-top: 1px solid rgba(255, 255, 255, .1); font-size: .95rem; opacity: .75; }
/* Unterseiten-Hero */
.page-hero { min-height: calc(100svh - 88px - var(--pad)); }
.page-hero h1 { font-size: clamp(3.2rem, 8vw, 8rem); letter-spacing: -.035em; line-height: .98; }
/* Text-Seite (Impressum) */
.legal { font-size: clamp(1.1rem, 1.4vw, 1.3rem); line-height: 1.6; max-width: 46em; margin-top: 48px; }
.legal h2 { font-size: clamp(1.5rem, 2.2vw, 2rem); margin: 52px 0 16px; letter-spacing: -.015em; }
.legal a { text-decoration: underline; text-underline-offset: 3px; }
.legal p + p { margin-top: 28px; }
.legal b { font-weight: 400; display: block; font-size: 1rem; letter-spacing: .16em; text-transform: uppercase; opacity: .7; margin-bottom: 6px; }
/* ===== Scroll-Animationen ===== */
.reveal { opacity: 0; transform: translateY(28px); transition: opacity 1s var(--ease), transform 1s var(--ease); }
.reveal.in { opacity: 1; transform: none; }
.d1 { transition-delay: .1s; }
.d2 { transition-delay: .2s; }
/* ===== Responsive ===== */
@media (max-width: 1100px) {
.steps { grid-template-columns: repeat(2, 1fr); row-gap: 34px; }
.nav a { padding: 10px 12px; font-size: 1rem; }
}
@media (max-width: 980px) {
.header-inner { gap: 10px; }
.nav { display: none; }
.burger { display: grid; margin-left: 0; }
.book-btn { margin-left: auto; }
.booking { grid-template-columns: minmax(0, 1fr); align-items: start; }
/* Logo-Siegel über den Kacheln – mittig wäre es den Beschriftungen im Weg */
.tiles { grid-template-rows: auto 1fr 1fr; }
.seal {
position: static;
grid-column: 1 / -1;
width: 190px;
margin: 0 auto;
transform: scale(.9);
}
@keyframes seal { to { opacity: 1; transform: none; } }
.seal-joint { display: none; }
.menu-open .nav {
display: flex; flex-direction: column; gap: 4px;
position: fixed; top: 88px; left: var(--pad); right: var(--pad);
padding: 10px;
background: var(--bg);
}
.menu-open .nav a { padding: 16px 18px; font-size: 1.35rem; }
.row, .row--3, .row--wide, .row--wide-r { grid-template-columns: 1fr; }
.panel { min-height: 0; }
.panel--photo { min-height: 64svh; }
.panel--photo.tall { min-height: 80svh; }
.plate-panel { min-height: 0; padding-block: 56px; }
.words span { display: none; }
.quals li { grid-template-columns: 1fr; gap: 6px; }
.quals span { text-align: left; }
.list-big { columns: 1; }
}
@media (max-width: 767px) {
body { font-size: 18px; }
.header-inner { height: 76px; }
.brand { width: 62px; height: 62px; }
.book-btn { height: 54px; padding: 0 18px; font-size: 1rem; }
.book-links { grid-template-columns: minmax(0, 1fr); }
.footer-cert { height: 72px; }
.brand img { width: 58px; height: 58px; }
.burger { width: 54px; height: 54px; }
.menu-open .nav { top: 76px; }
.hero { height: auto; min-height: 0; display: block; padding: 0 16px 16px; }
.tiles { grid-template-columns: 1fr; grid-template-rows: none; gap: 12px; }
.tile { height: 44svh; min-height: 260px; }
.tile:nth-of-type(even) .tile-foot { flex-direction: row; text-align: left; }
.tile-foot { gap: 12px; }
.tile-label { font-size: clamp(1.4rem, 6.6vw, 1.7rem); }
.tile-arrow { width: 46px; height: 46px; }
.seal { width: 210px; margin: 4px auto -6px; }
.scroll-hint { display: none; }
.mosaic { gap: 12px; padding: 0 16px 16px; }
.row { gap: 12px; }
.panel { padding: 30px 24px; }
.panel-arrow { width: 54px; height: 54px; }
.steps { grid-template-columns: 1fr; }
.contact-links a { padding: 18px 18px; }
.page-hero { min-height: calc(100svh - 76px - 16px); }
.footer-brand { flex-direction: column; align-items: flex-start; }
/* lange Wörter („Transportboxen“, „Konsequenz“) passen auch auf schmale Handys */
.page-hero h1 { font-size: min(3.2rem, 11vw); }
.display { font-size: min(2.8rem, 12.5vw); }
.words li { font-size: min(2.4rem, 10.5vw); }
}
.book-short { display: none; }
@media (max-width: 400px) {
.book-btn { padding: 0 16px; gap: 8px; }
.book-long { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
.book-short { display: inline; }
}
@media (prefers-reduced-motion: reduce) {
html { scroll-behavior: auto; }
.tile, .seal, .seal-joint { animation: none; opacity: 1; }
.tile { transform: none; }
.seal { transform: translate(-50%, -50%); }
.scroll-hint { animation: none; }
.reveal { opacity: 1; transform: none; transition: none; }
}
@media (prefers-reduced-motion: reduce) and (max-width: 980px) {
.seal { transform: none; }
}