/* Suneko theme stylesheet — "Flieder".
 *
 * A cat-sitting service, personal and warm: a lilac page, soft rounded
 * panels, butter yellow for whatever should be noticed, Fraunces with its
 * SOFT axis for headings, Nunito for text and Great Vibes for the wordmark
 * and single highlighted words (an <em> inside a heading).
 *
 * Fork guide
 *
 * - Palette, type and rhythm live in the custom properties on :root below.
 *   Every colour in the rules comes from a token; each colour token states
 *   its role and its WCAG contrast. Re-check the ratios if you change one.
 * - Two schemes: "Flieder kräftig" (light, the bare :root block) and
 *   "Flieder Nacht" (dark). Dark applies when the visitor's system prefers
 *   it and they have not picked light with the header switch
 *   (`:root:not([data-theme="light"])` inside the media query), and when
 *   they picked dark (`:root[data-theme="dark"]`). The two dark blocks hold
 *   the same values; components only ever read tokens. The switch lives in
 *   partials/header.html, the stored choice is applied before paint by the
 *   inline script in baseof.html, and assets/js/site.js toggles it.
 * - Breakpoints (mobile first, nothing scrolls sideways from 320px up):
 *     < 40em   one column; the menu sits behind the Menü button
 *     >= 40em  card and image grids go to two columns
 *     >= 48em  horizontal navigation; three/four-column grids; hero and
 *              text-mit-Bild side by side; packages in a row; form fields
 *              side by side; footer in columns
 * - Surfaces that carry the accent as background (cta, the Urlaub notice,
 *   primary buttons) redefine the button hooks --btn-bg / --btn-fg /
 *   --btn-line and the link colour, so chips placed on them recolour
 *   themselves.
 * - The base layer (element defaults) is written with :where() at zero
 *   specificity, so any class rule wins over it.
 * - Spacing between elements is never a margin: every block element sits in
 *   a div.ce-frame that pads --frame above and below.
 * - Fonts are self-hosted (assets/fonts, published at /fonts/ by
 *   baseof.html), each family split into a latin and a latin-ext file by
 *   unicode-range, so a German page loads only the latin files. No
 *   third-party request, ever.
 */

/* ----------------------------------------------------------------- fonts */

/* Fraunces: variable opsz 9–144, wght 400–700, SOFT 0–100. The theme sets
   SOFT 100 (rounded terminals) through --display-variation. */
@font-face {
  font-family: "Fraunces";
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url("../fonts/fraunces-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: "Fraunces";
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url("../fonts/fraunces-latin-ext.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
  font-family: "Fraunces";
  font-style: italic;
  font-weight: 400 700;
  font-display: swap;
  src: url("../fonts/fraunces-italic-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: "Fraunces";
  font-style: italic;
  font-weight: 400 700;
  font-display: swap;
  src: url("../fonts/fraunces-italic-latin-ext.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* Nunito: variable wght 400–800, upright and italic. */
@font-face {
  font-family: "Nunito";
  font-style: normal;
  font-weight: 400 800;
  font-display: swap;
  src: url("../fonts/nunito-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: "Nunito";
  font-style: normal;
  font-weight: 400 800;
  font-display: swap;
  src: url("../fonts/nunito-latin-ext.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
  font-family: "Nunito";
  font-style: italic;
  font-weight: 400 800;
  font-display: swap;
  src: url("../fonts/nunito-italic-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: "Nunito";
  font-style: italic;
  font-weight: 400 800;
  font-display: swap;
  src: url("../fonts/nunito-italic-latin-ext.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* Great Vibes: the script face, one weight. Used sparingly: the wordmark
   and an <em> inside a heading. */
@font-face {
  font-family: "Great Vibes";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("../fonts/great-vibes-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: "Great Vibes";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("../fonts/great-vibes-latin-ext.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* ---------------------------------------------------------------- tokens */

/* Light: "Flieder kräftig". Ratios are WCAG 2.2 contrast
   (AA: 4.5:1 text, 3:1 large text and UI components). */
:root {
  color-scheme: light;

  --bg: #E3D8F3;            /* page */
  --surface: #C7B2EA;       /* footer, info notice, table head, nav pill */
  --card: #FAF7FD;          /* panels: cards, packages, accordion, form */
  --input: #FFFFFF;         /* form fields */
  --highlight: #FBE29A;     /* butter: highlighted package, offer notice, illustration */
  --text: #221B2E;          /* 12.2 on bg · 8.7 surface · 16.6 card · 13.0 highlight */
  --muted: #4B4160;         /* 6.9 on bg · 4.9 surface · 8.9 card · 7.4 highlight */
  --accent: #4A327F;        /* links, buttons, script words: 7.5 bg · 5.4 surface · 9.6 card · 8.0 highlight */
  --accent-strong: #36225F; /* hover: 9.9 on bg */
  --on-accent: #FFFFFF;     /* text on accent: 10.2 */
  --field-border: #7B6A9C;  /* input outline: 4.8 on input · 4.5 on card */
  --line: #B9A5DC;          /* decorative hairlines only, never text */
  --nav-current: #D5C6EF;   /* current nav item pill: accent 6.4 */
  --shadow: 74 50 127;      /* rgb triplet for shadows */

  /* Hinweis variants (background / text) */
  --notice-info-bg: var(--surface);
  --notice-info-fg: var(--text);
  --notice-offer-bg: var(--highlight);
  --notice-offer-fg: var(--text);
  --notice-holiday-bg: var(--accent);
  --notice-holiday-fg: var(--on-accent);

  /* Type */
  --font-display: "Fraunces", Georgia, "Times New Roman", serif;
  --font-body: "Nunito", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  --font-script: "Great Vibes", "Brush Script MT", "Segoe Script", cursive;
  --display-weight: 600;
  --display-variation: "SOFT" 100, "WONK" 0;
  --display-tracking: -0.01em;
  --script-scale: 1.32;     /* script words next to Fraunces need a bigger size to match its x-height */

  --text-base: 1.0625rem;
  --text-sm: .9375rem;
  --text-lead: clamp(1.125rem, 1.05rem + .35vw, 1.3rem);
  --text-h1: clamp(2.3rem, 1.6rem + 3vw, 3.9rem);
  --text-h2: clamp(1.8rem, 1.4rem + 1.8vw, 2.7rem);
  --text-h3: clamp(1.3rem, 1.15rem + .7vw, 1.65rem);
  --text-h4: 1.15rem;

  /* Rhythm */
  --space-1: .25rem;
  --space-2: .5rem;
  --space-3: 1rem;
  --space-4: 1.5rem;
  --space-5: 2.5rem;
  --space-6: 4rem;
  --space-7: 6rem;
  --section-gap: clamp(2.75rem, 2rem + 3vw, 4.75rem);
  --frame: calc(var(--section-gap) / 2);

  --radius-sm: .75rem;
  --radius: 1.25rem;
  --radius-lg: 2rem;
  --radius-pill: 999px;
  --measure: 46rem;        /* the reading column: text, FAQ, form, quote, in-content notices */
  --container: 70rem;
  --gutter: clamp(1rem, 4vw, 2rem);
}

/* Dark: "Flieder Nacht" — automatic, unless the visitor picked light. */
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    color-scheme: dark;
    --bg: #1F1A2B;
    --surface: #2B2340;
    --card: #282036;
    --input: #1A1624;
    --highlight: #3A2F55;
    --text: #F2EDFA;          /* 14.7 on bg · 12.9 surface · 13.5 card · 10.6 highlight */
    --muted: #B7ACCB;         /* 7.9 on bg · 6.9 surface · 7.2 card · 5.7 highlight */
    --accent: #CDB9F2;        /* 9.5 on bg · 8.3 surface · 8.8 card · 6.9 highlight */
    --accent-strong: #E2D6F8;
    --on-accent: #1F1A2B;     /* 9.5 on accent */
    --field-border: #8C7FA8;  /* 4.8 on input · 4.2 on card */
    --line: #463B60;
    --nav-current: #3A2F55;
    --shadow: 0 0 0;
    --notice-info-bg: var(--highlight);
    --notice-info-fg: var(--text);
    --notice-offer-bg: #F6E3A1;
    --notice-offer-fg: #1F1A2B;  /* 13.2 */
    --notice-holiday-bg: var(--accent);
    --notice-holiday-fg: var(--on-accent);
  }
}

/* Dark, picked with the header switch (same values as above). */
:root[data-theme="dark"] {
  color-scheme: dark;
  --bg: #1F1A2B;
  --surface: #2B2340;
  --card: #282036;
  --input: #1A1624;
  --highlight: #3A2F55;
  --text: #F2EDFA;
  --muted: #B7ACCB;
  --accent: #CDB9F2;
  --accent-strong: #E2D6F8;
  --on-accent: #1F1A2B;
  --field-border: #8C7FA8;
  --line: #463B60;
  --nav-current: #3A2F55;
  --shadow: 0 0 0;
  --notice-info-bg: var(--highlight);
  --notice-info-fg: var(--text);
  --notice-offer-bg: #F6E3A1;
  --notice-offer-fg: #1F1A2B;
  --notice-holiday-bg: var(--accent);
  --notice-holiday-fg: var(--on-accent);
}

/* ------------------------------------------------------------ base layer */

*,
*::before,
*::after { box-sizing: border-box; }

html {
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}

body {
  margin: 0;
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  overflow-x: clip;
  background: var(--bg);
  color: var(--text);
  font-family: var(--font-body);
  font-size: var(--text-base);
  line-height: 1.65;
  font-optical-sizing: auto;
}

:where(h1, h2, h3, h4) {
  margin: 0 0 var(--space-3);
  font-family: var(--font-display);
  font-weight: var(--display-weight);
  font-variation-settings: var(--display-variation);
  letter-spacing: var(--display-tracking);
  line-height: 1.15;
  text-wrap: balance;
  color: var(--text);
}

:where(h1) { font-size: var(--text-h1); line-height: 1.05; }
:where(h2) { font-size: var(--text-h2); }
:where(h3) { font-size: var(--text-h3); }
:where(h4) { font-size: var(--text-h4); }

/* The flourish: an emphasised word inside a heading (from *word* in a
   heading param, or italic in a rich-text heading) is set in the script. */
:where(h1, h2, h3, h4, .script-host) em {
  font-family: var(--font-script);
  font-style: normal;
  font-weight: 400;
  font-variation-settings: normal;
  font-size: calc(var(--script-scale) * 1em);
  letter-spacing: 0;
  line-height: .8;
  color: var(--accent);
  padding-inline: .04em;
}

:where(p, ul, ol, table, blockquote, figure, address) { margin: 0 0 var(--space-3); }

:where(ul, ol) { padding-left: 1.3em; }
:where(li) { margin-bottom: var(--space-1); }
:where(li)::marker { color: var(--accent); }

/* A list item that starts with an icon chip uses the icon as its marker. */
:where(li:has(> .ce-icon:first-child)) { list-style: none; margin-left: -1.3em; }

:where(a) {
  color: var(--accent);
  text-decoration-thickness: .08em;
  text-underline-offset: .2em;
}

:where(a:hover) { color: var(--accent-strong); text-decoration-thickness: .14em; }

:where(strong, b) { font-weight: 800; }

:where(img) { max-width: 100%; height: auto; display: block; }

:where(hr) { border: 0; border-top: 2px dotted var(--line); margin: var(--space-5) 0; }

:where(address) { font-style: normal; }

:focus-visible {
  outline: 3px solid var(--accent);
  outline-offset: 3px;
  border-radius: 4px;
}

.visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
  border: 0;
}

.skip-link {
  position: absolute;
  left: var(--space-3);
  top: -10rem;
  z-index: 100;
  padding: var(--space-2) var(--space-3);
  background: var(--accent);
  color: var(--on-accent);
  border-radius: var(--radius-sm);
  font-weight: 700;
  text-decoration: none;
}

.skip-link:focus { top: var(--space-3); color: var(--on-accent); }

.container {
  width: 100%;
  max-width: var(--container);
  margin-inline: auto;
  padding-inline: var(--gutter);
}

/* --------------------------------------------------------------- buttons */

/* Inline chips and the theme's own buttons. Hooks: a surface that carries
   the accent sets --btn-bg / --btn-fg / --btn-line. */
.ce-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .5em;
  min-height: 2.9rem;
  margin: var(--space-1) var(--space-2) var(--space-1) 0;
  padding: .6rem 1.4rem;
  border: 2px solid var(--btn-line, var(--accent));
  border-radius: var(--radius-pill);
  font-family: var(--font-body);
  font-size: 1rem;
  font-weight: 800;
  line-height: 1.2;
  text-decoration: none;
  cursor: pointer;
}

.ce-btn--voll,
.ce-btn--primary {
  background: var(--btn-bg, var(--accent));
  color: var(--btn-fg, var(--on-accent));
}

.ce-btn--voll:hover,
.ce-btn--primary:hover {
  background: var(--btn-fg, var(--on-accent));
  color: var(--btn-bg, var(--accent));
  text-decoration: none;
}

.ce-btn--umrandet,
.ce-btn--secondary {
  background: transparent;
  color: var(--btn-line, var(--accent));
}

.ce-btn--umrandet:hover,
.ce-btn--secondary:hover {
  background: var(--btn-line, var(--accent));
  color: var(--btn-fg, var(--on-accent));
  text-decoration: none;
}

/* ---------------------------------------------------------------- header */

.site-header { position: relative; z-index: 20; }

.site-header__inner {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  min-height: 5rem;
  padding-block: var(--space-3);
}

.brand {
  display: inline-flex;
  align-items: center;
  gap: .55rem;
  margin-right: auto;
  color: var(--text);
  text-decoration: none;
}

.brand:hover { color: var(--text); }

.brand__mark {
  width: 2.25rem;
  height: 2.25rem;
  flex: none;
  color: var(--accent);
}

.logo-eyes {
  fill: none;
  stroke: var(--on-accent);
  stroke-width: 1.4;
  stroke-linecap: round;
}

.brand__name {
  font-family: var(--font-script);
  font-size: 2.6rem;
  line-height: 1;
  padding-top: .1em;
}

.site-nav { display: flex; align-items: center; }

.site-nav__toggle {
  display: none;
  align-items: center;
  gap: .45rem;
  min-height: 2.75rem;
  padding: .45rem 1rem;
  background: transparent;
  color: var(--text);
  border: 2px solid var(--accent);
  border-radius: var(--radius-pill);
  font: inherit;
  font-weight: 800;
  cursor: pointer;
}

.site-nav__toggle svg { width: 1.2rem; height: 1.2rem; }

.site-nav__menu {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-1);
  margin: 0;
  padding: 0;
  list-style: none;
}

.site-nav__item { margin: 0; position: relative; }

.site-nav__link,
.site-nav__sublink {
  display: block;
  padding: .45rem .95rem;
  border-radius: var(--radius-pill);
  color: var(--text);
  font-weight: 700;
  text-decoration: none;
}

.site-nav__link:hover,
.site-nav__sublink:hover { color: var(--accent); background: var(--nav-current); }

.site-nav__link[aria-current="page"],
.site-nav__sublink[aria-current="page"] { background: var(--nav-current); color: var(--accent); }

/* One dropdown level (a page with sub-pages); none on Suneko today. */
.site-nav__sub {
  display: none;
  position: absolute;
  left: 0;
  top: 100%;
  min-width: 13rem;
  margin: 0;
  padding: var(--space-2);
  list-style: none;
  background: var(--card);
  border-radius: var(--radius);
  box-shadow: 0 14px 30px -18px rgb(var(--shadow) / .45);
}

.site-nav__item--parent:hover .site-nav__sub,
.site-nav__item--parent:focus-within .site-nav__sub { display: block; }

.theme-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: none;
  width: 2.75rem;
  height: 2.75rem;
  padding: 0;
  background: transparent;
  color: var(--accent);
  border: 2px solid var(--accent);
  border-radius: 50%;
  cursor: pointer;
}

.theme-toggle:hover { background: var(--accent); color: var(--on-accent); }

.theme-toggle svg { width: 1.3rem; height: 1.3rem; }

/* Shows the scheme you switch TO: the moon while light, the sun while dark. */
.theme-toggle__sun { display: none; }
.theme-toggle[aria-pressed="true"] .theme-toggle__sun { display: block; }
.theme-toggle[aria-pressed="true"] .theme-toggle__moon { display: none; }

/* Phone: the menu collapses behind the toggle once JS runs (html.js);
   without JS it stays open as a list. */
@media (max-width: 47.99em) {
  .site-header__inner { flex-wrap: wrap; }

  .js .site-nav__toggle { display: inline-flex; }

  .site-nav { order: 2; }

  .theme-toggle { order: 3; }

  .site-nav__menu {
    flex-basis: 100%;
    flex-direction: column;
  }

  .js .site-nav__menu {
    display: none;
    position: absolute;
    left: var(--gutter);
    right: var(--gutter);
    top: calc(100% - var(--space-2));
    padding: var(--space-2);
    background: var(--card);
    border-radius: var(--radius);
    box-shadow: 0 18px 40px -20px rgb(var(--shadow) / .55);
  }

  .js .site-nav__toggle[aria-expanded="true"] + .site-nav__menu { display: flex; }

  .site-nav__link { padding: .75rem 1rem; }

  .site-nav__sub {
    display: block;
    position: static;
    padding: 0 0 0 var(--space-3);
    background: transparent;
    box-shadow: none;
  }
}

@media (min-width: 48em) {
  .site-header__inner { min-height: 6rem; }
}

/* The narrowest phones: a smaller wordmark, and the menu button shows its
   icon only (the label stays for screen readers), so brand, menu and the
   colour-scheme switch share one row down to 320px. */
@media (max-width: 29.99em) {
  .site-header__inner { gap: .6rem; }

  .brand__mark { width: 1.9rem; height: 1.9rem; }

  .brand__name { font-size: 2.15rem; }
}

@media (max-width: 22.99em) {
  .site-nav__toggle { padding-inline: .7rem; }

  .site-nav__toggle-label {
    position: absolute;
    width: 1px;
    height: 1px;
    margin: -1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
    white-space: nowrap;
  }
}

/* ---------------------------------------------------- Hinweisleiste band */

/* The inherited "hinweis" slot, drawn by partials/hinweisleiste.html under
   the header on every page. Its Hinweis elements sit flush (no frame
   padding); the band gives them their room. */
.hinweisleiste { padding-block: var(--space-2) 0; }

.hinweisleiste .ce-frame { padding-block: 0; }

.hinweisleiste .ce-frame + .ce-frame { margin-top: var(--space-2); }

/* ---------------------------------------------------------------- main */

.site-main { flex: 1 0 auto; padding-bottom: var(--section-gap); }

.page__header {
  max-width: 48rem;
  margin-inline: auto;
  padding-block: var(--space-5) var(--frame);
  text-align: center;
}

.page__title { margin-bottom: var(--space-3); }

.page__lead {
  margin: 0 auto;
  max-width: var(--measure);
  color: var(--muted);
  font-size: var(--text-lead);
}

/* A paw print under the title, tilted like a step. The SVG is only the
   shape (a mask); its colour is the accent, so it follows the scheme. */
.page__header::after {
  --paw: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64'%3e%3cpath d='M32 32.5c6.4 0 9.4 4.2 12 8 2.4 3.4 6 5.4 6 10.3 0 4.4-3.4 7.4-7.6 7.4-3.8 0-6.6-2-10.4-2s-6.6 2-10.4 2c-4.2 0-7.6-3-7.6-7.4 0-4.9 3.6-6.9 6-10.3 2.6-3.8 5.6-8 12-8Z'/%3e%3cellipse cx='11.5' cy='29' rx='5.6' ry='7.4' transform='rotate(-24 11.5 29)'/%3e%3cellipse cx='24' cy='16.5' rx='6' ry='8' transform='rotate(-8 24 16.5)'/%3e%3cellipse cx='40' cy='16.5' rx='6' ry='8' transform='rotate(8 40 16.5)'/%3e%3cellipse cx='52.5' cy='29' rx='5.6' ry='7.4' transform='rotate(24 52.5 29)'/%3e%3c/svg%3e");
  content: "";
  display: block;
  width: 1.75rem;
  height: 1.75rem;
  margin: var(--space-4) auto 0;
  background: var(--accent);
  -webkit-mask: var(--paw) center / contain no-repeat;
  mask: var(--paw) center / contain no-repeat;
  rotate: -12deg;
  opacity: .6;
}

/* Home: the hero is the visual lead; the h1 stays for assistive tech. */
.page--home .page__header {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
}

.page--home .page__content { padding-top: var(--space-3); }

/* ---------------------------------------------------------------- frames */

.ce-frame { padding-block: var(--frame); min-width: 0; }

.ce-layout__slot > .ce-frame:first-child { padding-top: 0; }

.ce-layout__slot > .ce-frame:last-child { padding-bottom: 0; }

/* -------------------------------------------------------- text (prose) */

.ce-text,
.ce-text-media__body,
.ce-accordion__body,
.ce-hero__body,
.ce-cta__body,
.ce-hinweis__body {
  overflow-wrap: break-word;
}

.ce-text { max-width: var(--measure); margin-inline: auto; }

.ce-text > :last-child,
.ce-text-media__body > :last-child,
.ce-accordion__body > :last-child,
.ce-hero__body > :last-child,
.ce-cta__body > :last-child { margin-bottom: 0; }

.ce-text :is(h2, h3, h4):not(:first-child),
.ce-text-media__body :is(h2, h3, h4):not(:first-child) { margin-top: var(--space-5); }

/* GFM tables (render hook: div.ce-table > table.ce-table__table). */
.ce-table {
  max-width: 100%;
  overflow-x: auto;
  margin-bottom: var(--space-4);
  border-radius: var(--radius);
  background: var(--card);
  box-shadow: 0 10px 30px -22px rgb(var(--shadow) / .5);
}

.ce-table__table {
  width: 100%;
  margin: 0;
  border-collapse: collapse;
  font-variant-numeric: tabular-nums;
}

.ce-table__table :is(th, td) {
  padding: .8rem 1.1rem;
  text-align: left;
  vertical-align: top;
}

.ce-table__table th {
  background: var(--surface);
  font-weight: 800;
}

.ce-table__table tbody tr + tr td { border-top: 2px dotted var(--line); }

/* ----------------------------------------------------------------- hero */

.ce-hero {
  display: grid;
  gap: var(--space-4);
  align-items: center;
}

.ce-hero__eyebrow {
  margin-bottom: var(--space-2);
  color: var(--muted);
  font-size: var(--text-sm);
  font-weight: 800;
  letter-spacing: .09em;
  text-transform: uppercase;
}

.ce-hero__heading {
  margin-bottom: var(--space-4);
  font-size: var(--text-h1);
  line-height: 1.06;
}

.ce-hero__body {
  max-width: 36rem;
  color: var(--muted);
  font-size: var(--text-lead);
}

.ce-hero__body .ce-btn { font-size: 1.05rem; }

.ce-hero__media {
  order: -1;
  width: min(100%, 17rem);
  justify-self: center;
}

.ce-hero__img {
  width: 100%;
  aspect-ratio: 1;
  object-fit: cover;
  border-radius: 46% 54% 52% 48% / 52% 46% 54% 48%;
}

.cat-ill { display: block; width: 100%; height: auto; }
.cat-ill__blob { fill: var(--highlight); }
.cat-ill__moon { fill: var(--surface); }
.cat-ill__cat { fill: var(--text); }
.cat-ill__tail { fill: none; stroke: var(--text); stroke-width: 15; stroke-linecap: round; }
.cat-ill__face { fill: none; stroke: var(--bg); stroke-width: 3.5; stroke-linecap: round; }
.cat-ill__whisker { fill: none; stroke: var(--bg); stroke-width: 2; stroke-linecap: round; opacity: .7; }
.cat-ill__nose { fill: var(--highlight); }

@media (min-width: 48em) {
  .ce-hero { grid-template-columns: 1.15fr .85fr; gap: var(--space-5); }

  .ce-hero__media { order: 0; width: 100%; max-width: 26rem; justify-self: end; }
}

/* ------------------------------------------------------------ text-media */

.ce-text-media {
  display: grid;
  gap: var(--space-4);
  align-items: center;
}

.ce-text-media__media,
.ce-text-media__body { min-width: 0; }

.ce-text-media__body :is(ul, ol) { padding-left: 1.2em; }

@media (min-width: 48em) {
  .ce-text-media { grid-template-columns: 1fr 1fr; gap: var(--space-6); }

  .ce-text-media--links .ce-text-media__media { order: -1; }
}

/* --------------------------------------------------------------- images */

.ce-images {
  display: grid;
  gap: var(--space-3);
  grid-template-columns: 1fr;
}

@media (min-width: 40em) {
  .ce-images--cols-2,
  .ce-images--cols-3,
  .ce-images--cols-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (min-width: 48em) {
  .ce-images--cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .ce-images--cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

.ce-figure { margin: 0; min-width: 0; }

.ce-figure > a { display: block; border-radius: var(--radius-lg); }

.ce-figure__img {
  width: 100%;
  border-radius: var(--radius-lg);
  background: var(--surface);
}

.ce-images:not(.ce-images--cols-1) .ce-figure__img {
  aspect-ratio: 4 / 3;
  object-fit: cover;
}

/* A single picture in a Bilder element: a calm 3:2 crop, not wider than
   56rem. (A single picture in Text mit Bild keeps its own proportions.) */
.ce-frame--image .ce-images--cols-1 { max-width: 56rem; margin-inline: auto; }

.ce-frame--image .ce-images--cols-1 .ce-figure__img {
  aspect-ratio: 3 / 2;
  object-fit: cover;
}

.ce-figure__caption {
  margin-top: var(--space-2);
  color: var(--muted);
  font-size: var(--text-sm);
  text-align: center;
}

.ce-lightbox { cursor: zoom-in; }

/* ---------------------------------------------------------------- cards */

.ce-cards {
  display: grid;
  gap: var(--space-4);
  grid-template-columns: 1fr;
}

@media (min-width: 40em) {
  .ce-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (min-width: 48em) {
  .ce-cards--cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .ce-cards--cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

.ce-card {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  min-width: 0;
  overflow: hidden;
  padding: var(--space-4);
  background: var(--card);
  color: var(--text);
  border-radius: var(--radius-lg);
  text-decoration: none;
}

.ce-card__img {
  width: calc(100% + 2 * var(--space-4));
  max-width: none;
  margin: calc(-1 * var(--space-4)) calc(-1 * var(--space-4)) var(--space-2);
  aspect-ratio: 4 / 3;
  object-fit: cover;
}

.ce-card__heading { margin: 0; font-size: var(--text-h3); }

.ce-card__text { margin: 0; color: var(--muted); }

a.ce-card .ce-card__heading::after {
  content: " →";
  color: var(--accent);
  font-family: var(--font-body);
  font-weight: 800;
}

a.ce-card:hover { color: var(--text); box-shadow: 0 20px 40px -24px rgb(var(--shadow) / .6); }

a.ce-card:hover .ce-card__heading { color: var(--accent); }

/* ----------------------------------------------------------- cta strip */

.ce-cta {
  --btn-bg: var(--on-accent);
  --btn-fg: var(--accent);
  --btn-line: var(--on-accent);
  position: relative;
  overflow: hidden;
  padding: clamp(2rem, 1.5rem + 2.5vw, 3.5rem);
  background: var(--accent);
  color: var(--on-accent);
  border-radius: var(--radius-lg);
}

.ce-cta::before {
  content: "";
  position: absolute;
  right: -3rem;
  top: -3rem;
  width: 11rem;
  height: 11rem;
  border-radius: 50%;
  background: var(--on-accent);
  opacity: .1;
}

.ce-cta__inner { position: relative; max-width: 40rem; }

.ce-cta__heading { margin-bottom: var(--space-2); color: var(--on-accent); font-size: var(--text-h2); }

.ce-cta__heading em { color: var(--on-accent); }

.ce-cta__body a:not(.ce-btn) { color: var(--on-accent); }

.ce-cta__body .ce-btn--umrandet,
.ce-cta__body .ce-btn--secondary { color: var(--on-accent); }

.ce-cta__body .ce-btn--umrandet:hover,
.ce-cta__body .ce-btn--secondary:hover { color: var(--accent); }

/* ---------------------------------------------------------------- quote */

.ce-quote {
  position: relative;
  max-width: var(--measure);
  margin: 0 auto;
  padding: var(--space-5) var(--space-4) var(--space-4);
  background: var(--card);
  border-radius: var(--radius-lg);
  text-align: center;
}

.ce-quote::before {
  content: "“";
  position: absolute;
  left: 50%;
  top: -.35em;
  transform: translateX(-50%);
  color: var(--accent);
  font-family: var(--font-display);
  font-size: 5rem;
  line-height: 1;
}

.ce-quote__body {
  margin: 0;
  font-family: var(--font-display);
  font-variation-settings: var(--display-variation);
  font-size: clamp(1.2rem, 1.1rem + .5vw, 1.45rem);
  line-height: 1.45;
}

.ce-quote__body > :last-child { margin-bottom: 0; }

.ce-quote__attribution {
  margin-top: var(--space-3);
  color: var(--muted);
  font-weight: 700;
}

.ce-quote__attribution::before { content: "– "; }

/* ------------------------------------------------------------ accordion */

.ce-accordion {
  display: grid;
  gap: var(--space-2);
  max-width: var(--measure);
  margin-inline: auto;
}

.ce-accordion__item {
  background: var(--card);
  border-radius: var(--radius);
}

.ce-accordion__summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-3);
  padding: 1.05rem 1.35rem;
  font-family: var(--font-display);
  font-variation-settings: var(--display-variation);
  font-size: 1.15rem;
  font-weight: 600;
  line-height: 1.35;
  cursor: pointer;
  list-style: none;
  border-radius: var(--radius);
}

.ce-accordion__summary::-webkit-details-marker { display: none; }

.ce-accordion__summary::after {
  content: "+";
  flex: none;
  display: grid;
  place-items: center;
  width: 2rem;
  height: 2rem;
  border-radius: 50%;
  background: var(--surface);
  color: var(--accent);
  font-family: var(--font-body);
  font-size: 1.3rem;
  font-weight: 800;
  line-height: 1;
}

.ce-accordion__item[open] > .ce-accordion__summary::after { content: "–"; }

.ce-accordion__body { padding: 0 1.35rem 1.2rem; color: var(--muted); }

/* --------------------------------------------------------------- spacer */

.ce-spacer--s { height: var(--space-3); }
.ce-spacer--m { height: var(--space-5); }
.ce-spacer--l { height: var(--space-6); }
.ce-spacer--xl { height: var(--space-7); }

/* --------------------------------------------------------------- pakete */

.ce-pakete {
  display: grid;
  gap: var(--space-5) var(--space-4);
  grid-template-columns: 1fr;
  align-items: stretch;
  padding-top: var(--space-3);
}

@media (min-width: 40em) {
  .ce-pakete--n2,
  .ce-pakete--n4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (min-width: 56em) {
  .ce-pakete--n3,
  .ce-pakete--n5,
  .ce-pakete--n6 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

.ce-paket {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  min-width: 0;
  padding: var(--space-5) var(--space-4) var(--space-4);
  background: var(--card);
  border: 3px solid transparent;
  border-radius: var(--radius-lg);
}

.ce-paket--highlight {
  background: var(--highlight);
  border-color: var(--accent);
  box-shadow: 0 24px 40px -26px rgb(var(--shadow) / .7);
}

.ce-paket__badge {
  position: absolute;
  top: 0;
  left: var(--space-4);
  transform: translateY(-50%);
  margin: 0;
  padding: .25rem .9rem;
  background: var(--accent);
  color: var(--on-accent);
  border-radius: var(--radius-pill);
  font-size: .8rem;
  font-weight: 800;
  letter-spacing: .08em;
  text-transform: uppercase;
}

.ce-paket__name { margin: 0; font-size: var(--text-h3); }

.ce-paket__price {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: .2rem .45rem;
  margin: 0;
  font-variant-numeric: tabular-nums;
}

.ce-paket__from,
.ce-paket__unit { color: var(--muted); font-size: var(--text-sm); font-weight: 700; }

.ce-paket__amount {
  font-family: var(--font-display);
  font-variation-settings: var(--display-variation);
  font-size: 2.4rem;
  font-weight: 600;
  line-height: 1.05;
}

.ce-paket__body { color: var(--muted); }

.ce-paket__body > :last-child { margin-bottom: 0; }

.ce-paket__body p { margin-bottom: var(--space-3); }

.ce-paket__body ul {
  display: grid;
  gap: .55rem;
  margin: 0 0 var(--space-3);
  padding: var(--space-3) 0 0;
  border-top: 2px dotted var(--line);
  color: var(--text);
  list-style: none;
}

.ce-paket__body li {
  position: relative;
  margin: 0;
  padding-left: 1.85rem;
  line-height: 1.45;
}

/* The check mark: a rotated corner in the accent. */
.ce-paket__body li::before {
  content: "";
  position: absolute;
  left: .4rem;
  top: .2rem;
  width: .45rem;
  height: .85rem;
  border: solid var(--accent);
  border-width: 0 3px 3px 0;
  border-radius: 1px;
  transform: rotate(40deg);
}

.ce-paket__cta { align-self: stretch; margin: auto 0 0; }

/* -------------------------------------------------------------- hinweis */

.ce-hinweis {
  display: flex;
  align-items: flex-start;
  gap: var(--space-3);
  padding: var(--space-3) var(--space-4);
  border-radius: var(--radius);
  background: var(--notice-bg);
  color: var(--notice-fg);
  --notice-bg: var(--notice-info-bg);
  --notice-fg: var(--notice-info-fg);
}

.ce-hinweis--angebot { --notice-bg: var(--notice-offer-bg); --notice-fg: var(--notice-offer-fg); }

.ce-hinweis--urlaub {
  --notice-bg: var(--notice-holiday-bg);
  --notice-fg: var(--notice-holiday-fg);
  --btn-bg: var(--on-accent);
  --btn-fg: var(--accent);
  --btn-line: var(--on-accent);
}

/* In a page's content (not the band) a notice keeps to the reading column. */
.ce-layout .ce-hinweis { max-width: var(--measure); margin-inline: auto; }

.ce-hinweis__icon {
  display: grid;
  place-items: center;
  flex: none;
  width: 2.5rem;
  height: 2.5rem;
  border-radius: 50%;
  background: color-mix(in srgb, var(--notice-fg) 12%, transparent);
}

.ce-hinweis__icon svg { width: 1.35rem; height: 1.35rem; }

.ce-hinweis__content { min-width: 0; padding-top: .3rem; }

.ce-hinweis__heading {
  margin: 0 0 .1rem;
  font-family: var(--font-display);
  font-variation-settings: var(--display-variation);
  font-size: 1.2rem;
  font-weight: 600;
  line-height: 1.3;
}

.ce-hinweis__heading em { color: inherit; }

.ce-hinweis__body > :last-child { margin-bottom: 0; }

.ce-hinweis__body p { margin-bottom: var(--space-2); }

.ce-hinweis a:not(.ce-btn) { color: inherit; font-weight: 800; }

.ce-hinweis .ce-btn { min-height: 2.4rem; padding: .35rem 1.1rem; font-size: .95rem; }

@media (min-width: 48em) {
  .ce-hinweis { align-items: center; padding: var(--space-3) var(--space-5) var(--space-3) var(--space-3); }

  .ce-hinweis__content {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 0 var(--space-3);
    padding-top: 0;
  }
}

/* ------------------------------------------------------------- the form */

.ce-form {
  max-width: var(--measure);
  margin-inline: auto;
  padding: clamp(1.5rem, 1rem + 2.5vw, 3rem);
  background: var(--card);
  border-radius: var(--radius-lg);
}

.ce-form__heading { font-size: var(--text-h2); }

.dh-form__intro { color: var(--muted); }

.ce-form__form {
  display: grid;
  gap: var(--space-3);
  grid-template-columns: 1fr;
}

@media (min-width: 48em) {
  .ce-form__form { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-3) var(--space-4); }

  .ce-form__field:has(textarea),
  .ce-form__submit { grid-column: 1 / -1; }
}

.ce-form__field { display: grid; gap: .35rem; min-width: 0; }

.ce-form__label { font-weight: 800; }

.ce-form__input,
.ce-form__textarea {
  width: 100%;
  padding: .75rem 1rem;
  background: var(--input);
  color: var(--text);
  border: 2px solid var(--field-border);
  border-radius: var(--radius-sm);
  font: inherit;
}

.ce-form__textarea { min-height: 9rem; resize: vertical; }

.ce-form__input:focus-visible,
.ce-form__textarea:focus-visible { outline-offset: 1px; border-color: var(--accent); }

.dh-form__consent input {
  width: 1.25rem;
  height: 1.25rem;
  flex: none;
  accent-color: var(--accent);
}

.ce-form__submit { justify-self: start; margin: var(--space-2) 0 0; }

.dh-form__result {
  padding: var(--space-3) var(--space-4);
  border-radius: var(--radius);
}

.dh-form__result--sent { background: var(--highlight); color: var(--text); }

.dh-form__result--error { background: var(--surface); color: var(--text); }

/* -------------------------------------------- teasers, categories, pager */

/* Child-page teasers (a page with sub-pages) and the category pages of the
   standard categories bundle (layouts/taxonomy.html, term.html). */
.ce-teasers__list,
.categories {
  display: grid;
  gap: var(--space-3);
  max-width: 48rem;
  margin: 0 auto;
  padding: 0;
  list-style: none;
}

.ce-teasers__item,
.categories__item {
  margin: 0;
  padding: var(--space-4);
  background: var(--card);
  border-radius: var(--radius);
}

.ce-teasers__title { margin: 0 0 var(--space-2); font-size: var(--text-h3); }

.ce-teasers__link,
.categories__link { text-decoration: none; }

.ce-teasers__summary { margin: 0; color: var(--muted); }

.categories__count { color: var(--muted); }

.pager {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
  gap: var(--space-3);
  margin-top: var(--space-5);
}

.pager__pages { display: flex; gap: var(--space-2); margin: 0; padding: 0; list-style: none; }

.pager__link,
.pager__page { font-weight: 700; }

/* --------------------------------------------------------------- footer */

.site-footer {
  margin-top: auto;
  padding-block: var(--space-6) var(--space-5);
  background: var(--surface);
  border-radius: var(--radius-lg) var(--radius-lg) 0 0;
}

.site-footer__inner {
  display: grid;
  gap: var(--space-4);
}

.site-footer__about { max-width: 30rem; }

.site-footer__brand {
  display: inline-flex;
  align-items: center;
  gap: .5rem;
  margin-bottom: var(--space-2);
  color: var(--text);
  text-decoration: none;
}

.site-footer__brand .brand__name { font-size: 2.3rem; }

.site-footer__about p,
.site-footer__about address { color: var(--muted); }

.site-footer__list {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-1) var(--space-4);
  margin: 0;
  padding: 0;
  list-style: none;
}

.site-footer__item { margin: 0; }

.site-footer__link { font-weight: 700; }

.site-footer__copy { margin: 0; color: var(--muted); font-size: var(--text-sm); }

@media (min-width: 48em) {
  .site-footer__inner {
    grid-template-columns: 1fr auto;
    align-items: end;
  }

  .site-footer__copy { grid-column: 1 / -1; }
}

/* ------------------------------------------------------------- lightbox */

/* One shared <dialog>, built by assets/js/lightbox.js. */
.ce-lightbox__dialog {
  padding: 0;
  border: 0;
  width: 100vw;
  height: 100vh;
  max-width: 100vw;
  max-height: 100vh;
  background: transparent;
  color: #FFFFFF;
}

.ce-lightbox__dialog[open] {
  display: flex;
  align-items: center;
  justify-content: center;
}

.ce-lightbox__dialog::backdrop { background: rgb(22 17 32 / .92); }

.ce-lightbox__img {
  display: block;
  max-width: min(92vw, 90rem);
  max-height: 86vh;
  width: auto;
  height: auto;
  border-radius: var(--radius);
}

.ce-lightbox__close,
.ce-lightbox__prev,
.ce-lightbox__next {
  position: absolute;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 2.75rem;
  height: 2.75rem;
  padding: 0;
  background: rgb(255 255 255 / .14);
  color: #FFFFFF;
  border: 0;
  border-radius: 50%;
  cursor: pointer;
  font: inherit;
  font-size: 1.5rem;
  line-height: 1;
}

.ce-lightbox__close:hover,
.ce-lightbox__prev:hover,
.ce-lightbox__next:hover { background: rgb(255 255 255 / .28); color: #FFFFFF; }

.ce-lightbox__close { top: var(--space-3); right: var(--space-3); }

.ce-lightbox__prev,
.ce-lightbox__next { top: 50%; transform: translateY(-50%); }

.ce-lightbox__prev { left: var(--space-3); }

.ce-lightbox__next { right: var(--space-3); }

.ce-lightbox__prev[hidden],
.ce-lightbox__next[hidden] { display: none; }

.ce-lightbox__close:focus-visible,
.ce-lightbox__prev:focus-visible,
.ce-lightbox__next:focus-visible { outline: 3px solid #FFFFFF; outline-offset: 3px; }

/* ---------------------------------------------------------------- icons */

.ce-icon {
  display: inline-block;
  width: 1.15em;
  height: 1.15em;
  vertical-align: -.2em;
  color: var(--accent);
}

.ce-icon svg { width: 100%; height: 100%; display: block; }

/* --------------------------------------------------------------- motion */

@media (prefers-reduced-motion: no-preference) {
  .ce-btn,
  .theme-toggle,
  .site-nav__link,
  .ce-card {
    transition: background-color .2s ease, color .2s ease, box-shadow .25s ease, transform .25s ease;
  }

  a.ce-card:hover { transform: translateY(-3px); }

  .ce-accordion__summary::after { transition: transform .2s ease; }

  .ce-accordion__item[open] > .ce-accordion__summary::after { transform: rotate(180deg); }
}
