/* ==================================================
   An Guadn – Theme
   All colours, fonts and spacings live in :root below.
   Change them here to restyle the whole site.
================================================== */

@font-face {
  font-family: "Montserrat";
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url("../fonts/Montserrat-var.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+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "Montserrat";
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url("../fonts/Montserrat-var-ext.woff2") format("woff2");
  unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: "Saltery";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("../fonts/Saltery-Regular.ttf") format("truetype");
}

:root {
  /* Colours */
  --ag-primary: #b25c5e;          /* Akzent 1 – buttons, headings */
  --ag-primary-dark: #8e483e;     /* Akzent 2 – links, dark red */
  --ag-primary-rgb: 178, 92, 94;
  --ag-light: #ececec;            /* light grey surfaces */
  --ag-grey: #686868;             /* grey sections */
  --ag-cream: #FBFAF3;
  --ag-dark: #262626;
  --ag-text: #111111;
  --ag-white: #ffffff;
  --ag-gradient: linear-gradient(135deg, rgb(142, 72, 62) 0%, rgb(173, 89, 76) 100%);
  --ag-gradient-menu: linear-gradient(135deg, rgba(178, 92, 84, 1), #8e483e);

  /* Colours of the An Guadn pattern (footer strip, CTA boxes) */
  --ag-slate: #464f5c;
  --ag-slate-light: #5c6e74;
  --ag-rose: #e39f98;
  --ag-butter: #fffeab;

  /* Fonts */
  --ag-font: "Montserrat", Arial, sans-serif;
  --ag-script: "Saltery", cursive;

  /* Font sizes (fluid, like the old theme) */
  --ag-fs-small: .875rem;
  --ag-fs-medium: clamp(1rem, 1rem + ((1vw - .2rem) * .196), 1.125rem);
  --ag-fs-large: clamp(1.125rem, 1.125rem + ((1vw - .2rem) * .392), 1.375rem);
  --ag-fs-xl: clamp(1.75rem, 1.75rem + ((1vw - .2rem) * .392), 2rem);
  --ag-fs-xxl: clamp(2.15rem, 2.15rem + ((1vw - .2rem) * 1.333), 3rem);
  --ag-fs-h2: clamp(1.743rem, 1.743rem + ((1vw - .2rem) * 1.972), 3rem);
  --ag-fs-h3: clamp(1.25rem, 1.25rem + ((1vw - .2rem) * 1.176), 2rem);

  /* Spacing scale */
  --ag-sp-20: 10px;
  --ag-sp-30: 20px;
  --ag-sp-40: 30px;
  --ag-sp-50: clamp(30px, 5vw, 50px);
  --ag-sp-60: clamp(30px, 7vw, 70px);
  --ag-sp-70: clamp(50px, 7vw, 90px);
  --ag-sp-80: clamp(70px, 10vw, 140px);

  /* Layout */
  --ag-wide: 1300px;
  --ag-content: 645px;
  --ag-gutter: var(--ag-sp-50);
  --ag-radius: 10px;
  --ag-gap: 1.2rem;

  /* Bootstrap mapping */
  --bs-body-font-family: var(--ag-font);
  --bs-body-color: var(--ag-text);
  --bs-link-color: var(--ag-primary-dark);
  --bs-link-color-rgb: 142, 72, 62;
  --bs-link-hover-color: var(--ag-primary-dark);
  --bs-link-hover-color-rgb: 142, 72, 62;
  --bs-primary: var(--ag-primary);
  --bs-primary-rgb: var(--ag-primary-rgb);
}

/* ---------- Base typography ---------- */

body {
  font-family: var(--ag-font);
  font-size: var(--ag-fs-large);
  font-weight: 300;
  letter-spacing: -0.1px;
  line-height: 1.75;
  color: var(--ag-text);
  background: #fff;
  overflow-x: hidden;
}

p, li { font-weight: 500; }

p { margin: 0 0 var(--ag-gap); }

a { color: var(--ag-primary-dark); }
a:hover { text-decoration: none; }

h1, h2, h3, h4, h5, h6 {
  font-weight: 400;
  letter-spacing: -0.1px;
  line-height: 1.12;
  margin: 0 0 var(--ag-gap);
}
h1 { font-size: var(--ag-fs-xxl); letter-spacing: -0.65px; }
h2 { font-size: var(--ag-fs-h2); font-weight: 600; letter-spacing: -0.04em; line-height: 1.1; }
h3 { font-size: var(--ag-fs-h3); font-weight: 700; letter-spacing: -0.04em; line-height: 1.1; }
h4 { font-size: var(--ag-fs-medium); }
h5 { font-size: var(--ag-fs-small); letter-spacing: .5px; }
h6 { font-size: var(--ag-fs-small); font-weight: 700; letter-spacing: 1.4px; text-transform: uppercase; }

strong, b { font-weight: 700; }

ul, ol { padding-left: 1.5em; margin: 0 0 var(--ag-gap); }

img { max-width: 100%; height: auto; }

.text-script { font-family: var(--ag-script); font-weight: 400; letter-spacing: 0; }
.text-primary-ag { color: var(--ag-primary) !important; }
.text-dark-ag { color: var(--ag-primary-dark) !important; }
.fs-small { font-size: var(--ag-fs-small); }
.fs-medium { font-size: var(--ag-fs-medium); }

/* Rich text: vertical rhythm like the old block editor */
.rte > * { margin-top: 0; margin-bottom: 0; }
.rte > * + * { margin-top: var(--ag-gap); }
.rte ul, .rte ol { padding-left: 1.5em; }

.skip-link { position: absolute; top: .5rem; left: .5rem; z-index: 20000; background: #fff; padding: .5rem 1rem; }

/* ---------- Layout wrappers ---------- */

/* Wide container: matches "alignwide" inside a padded group of the old theme */
.ag-wrap {
  --ag-pad: calc(var(--ag-gutter) + var(--ag-sp-30));
  width: 100%;
  max-width: calc(var(--ag-wide) + 2 * var(--ag-pad));
  margin-inline: auto;
  padding-inline: var(--ag-pad);
}
.ag-wrap--flush { --ag-pad: var(--ag-gutter); }
.ag-wrap--footer { --ag-wide: 1340px; }

/* hidden on phones (like the old "hide on mobile" setting) */
@media (max-width: 480px) { .hide-mobile { display: none !important; } }
.ag-wrap--content { --ag-wide: var(--ag-content); }
.ag-wrap--text { --ag-wide: 1100px; }
.ag-wrap--wide { --ag-wide: 1300px; }



/* ---------- Buttons ---------- */

.btn-ag {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .5rem;
  min-height: 46px;
  padding: 12px 22px;
  border: 2px solid var(--ag-primary);
  border-radius: 999px;
  background: var(--ag-primary);
  color: #fff;
  font-family: var(--ag-font);
  font-size: .95rem;
  font-weight: 700;
  line-height: 1.2;
  text-align: center;
  text-decoration: none;
  white-space: nowrap;
  box-shadow: 0 8px 22px rgba(0, 0, 0, .1);
  cursor: pointer;
  transition: background-color .25s ease, border-color .25s ease, color .25s ease, transform .25s ease, box-shadow .25s ease;
}
.btn-ag:hover, .btn-ag:focus-visible {
  background: var(--ag-dark);
  border-color: var(--ag-dark);
  color: #fff;
  transform: translateY(-3px);
  box-shadow: 0 14px 28px rgba(0, 0, 0, .18);
}
.btn-ag:focus-visible { outline: 3px solid rgba(38, 38, 38, .25); outline-offset: 4px; }
.btn-ag--ghost { background: transparent; color: var(--ag-primary); box-shadow: none; }
.btn-ag--dark { background: var(--ag-dark); border-color: var(--ag-dark); }
.btn-ag--dark:hover { background: var(--ag-primary); border-color: var(--ag-primary); }
.btn-ag--white { background: #fff; border-color: #fff; color: var(--ag-primary-dark); }

/* ---------- Header ---------- */

.site-header {
  position: absolute;
  inset: 0 0 auto 0;
  z-index: 1000;
  padding: var(--ag-sp-30) calc(var(--ag-gutter) + var(--ag-sp-30));
  pointer-events: none;
}
.site-header > * { pointer-events: auto; }

.site-logo {
  display: inline-block;
  transition: transform .3s cubic-bezier(.4, 0, .2, 1);
}
.site-logo:hover { transform: scale(1.07); }
.site-logo img { display: block; width: 192px; height: auto; }

@media (max-width: 768px) {
  .site-logo { position: relative; top: -6px; left: 0; }
  .site-logo img { width: 150px; }
}

/* Menü pill button */
.menu-toggle {
  position: fixed;
  top: 1rem;
  right: 1rem;
  z-index: 10000;
  display: inline-flex;
  align-items: center;
  gap: .55rem;
  padding: .55rem .85rem;
  border-radius: 999px;
  background: rgba(178, 92, 84, 1);
  color: #fff;
  border: 1.5px solid rgba(178, 92, 84, 1);
  box-shadow: 0 6px 18px rgba(0, 0, 0, .12);
  font-family: var(--ag-font);
  font-size: .72rem;
  font-weight: 700;
  line-height: 1.75;
  letter-spacing: .04em;
  text-transform: uppercase;
  cursor: pointer;
  transition: background-color .2s ease, color .2s ease, border-color .2s ease;
}
.menu-toggle:hover { background: #fff; color: rgba(178, 92, 84, 1); }
.menu-toggle svg { width: 24px; height: 24px; }

.menu-toggle--close,
.menu-toggle--close:hover {
  background: transparent;
  color: #fff;
  border-color: rgba(255, 255, 255, .5);
  box-shadow: 0 6px 18px rgba(0, 0, 0, .12);
}

/* ---------- Overlay menu ---------- */

.site-menu.offcanvas-top {
  --bs-offcanvas-height: 100vh;
  height: 100vh;
  height: 100dvh;
  border: 0 !important;
  background: var(--ag-gradient-menu);
  color: #fff;
  padding: 6rem 6vw 4rem;
  overflow-y: auto;
  transition: opacity .3s ease, transform .3s ease;
}
.site-menu::after {
  content: "";
  position: fixed;
  left: 0;
  bottom: 0;
  width: 100%;
  height: 60px;
  background: url("../../img/site/pattern.gif") repeat-x;
  background-size: 20%;
}
@media (max-width: 768px) { .site-menu::after { display: none; } }

.site-menu__grid {
  display: grid;
  width: 100%;
  max-width: 1200px;
  margin: 0 auto;
  padding-top: calc(2rem + 24px);
  gap: 2.5rem 4rem;
  grid-template-columns: 1fr;
}
@media (min-width: 700px) { .site-menu__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1024px) { .site-menu__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }

.site-menu a, .site-menu span { color: #fff; text-decoration: none; }

/* Group title: small, not clickable */
.site-menu__label {
  display: flex;
  align-items: center;
  gap: .7rem;
  margin: 0 0 1.1rem;
  padding-bottom: .9rem;
  border-bottom: 1px solid rgba(255, 255, 255, .25);
  font-size: .75rem;
  font-weight: 700;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, .7);
}
.site-menu__label span {
  display: grid;
  place-items: center;
  min-width: 30px;
  height: 22px;
  padding: 0 .4rem;
  border-radius: 999px;
  background: rgba(255, 255, 255, .15);
  color: #fff;
  font-size: .68rem;
  letter-spacing: .04em;
}

/* Page links */
.site-menu__list { list-style: none; margin: 0; padding: 0; }
.site-menu__list li + li { margin-top: .15rem; }
.site-menu a.site-menu__link {
  position: relative;
  display: flex;
  align-items: center;
  gap: .6rem;
  padding: .4rem 0;
  font-size: clamp(1.25rem, 1.1rem + .6vw, 1.6rem);
  font-weight: 600;
  letter-spacing: -.02em;
  line-height: 1.25;
  transition: transform .3s cubic-bezier(.2, .8, .2, 1), opacity .3s ease;
}
.site-menu__icon { font-size: .8em; opacity: .85; }
.site-menu__arrow {
  font-size: .75em;
  opacity: 0;
  transform: translateX(-10px);
  transition: opacity .3s ease, transform .3s ease;
}
.site-menu a.site-menu__link:hover,
.site-menu a.site-menu__link:focus-visible { transform: translateX(8px); }
.site-menu a.site-menu__link:hover .site-menu__arrow,
.site-menu a.site-menu__link:focus-visible .site-menu__arrow { opacity: 1; transform: none; }
/* dim the other links while hovering one */
.site-menu__list:hover a.site-menu__link:not(:hover) { opacity: .55; }

/* Current page: red dot */
.site-menu a.site-menu__link[aria-current="page"]::before {
  content: "";
  position: absolute;
  left: -18px;
  top: 50%;
  width: 8px;
  height: 8px;
  margin-top: -4px;
  border-radius: 50%;
  background: #fff;
  box-shadow: 0 0 0 4px rgba(255, 255, 255, .2);
}
@media (max-width: 600px) { .site-menu a.site-menu__link[aria-current="page"]::before { left: -14px; width: 6px; height: 6px; margin-top: -3px; } }

/* Entrance: groups fade in one after another when the menu opens */
.site-menu__group, .site-menu__contact {
  opacity: 0;
  transform: translateY(18px);
  transition: opacity .5s ease, transform .5s cubic-bezier(.2, .8, .2, 1);
}
.site-menu.show .site-menu__group, .site-menu.showing .site-menu__group,
.site-menu.show .site-menu__contact, .site-menu.showing .site-menu__contact { opacity: 1; transform: none; }
.site-menu.show .site-menu__group { transition-delay: calc(.08s + var(--g) * .08s); }
.site-menu.show .site-menu__contact { transition-delay: .35s; }
/* ---------- Footer ---------- */

.site-footer { color: #fff; }
.site-footer::before {
  content: "";
  display: block;
  width: 100%;
  height: 60px;
  background: url("../../img/site/pattern.gif") repeat-x;
  background-size: 20%;
}
.site-footer__body {
  position: relative;
  overflow: hidden;
  background:
    radial-gradient(900px 500px at 85% -10%, rgba(255, 255, 255, .10), transparent 60%),
    radial-gradient(700px 420px at -5% 110%, rgba(0, 0, 0, .18), transparent 60%),
    var(--ag-gradient);
  padding: var(--ag-sp-70) 0 0;
}
.site-footer a { color: #fff; }

.footer-top {
  display: grid;
  grid-template-columns: 1.3fr 1fr 1fr 1.25fr;
  gap: var(--ag-sp-50) clamp(24px, 4vw, 64px);
  padding-bottom: var(--ag-sp-60);
}
@media (max-width: 1100px) { .footer-top { grid-template-columns: 1fr 1fr; } }
@media (max-width: 600px) { .footer-top { grid-template-columns: 1fr; } }

.footer-label {
  font-size: .72rem;
  font-weight: 700;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, .65);
  margin: 0 0 1.1rem;
}

/* Brand column */
.site-footer__logo { display: inline-block; margin-bottom: 1.1rem; transition: transform .3s ease; }
.site-footer__logo:hover { transform: rotate(-4deg) scale(1.04); }
.site-footer__logo img { width: 128px; height: auto; display: block; filter: drop-shadow(0 8px 18px rgba(0, 0, 0, .25)); }
.footer-brand__claim { font-size: .95rem; line-height: 1.6; color: rgba(255, 255, 255, .85); max-width: 280px; margin: 0 0 1.4rem; }
.footer-social { display: flex; gap: 10px; }
.footer-social__btn {
  display: grid;
  place-items: center;
  width: 42px;
  height: 42px;
  border-radius: 50%;
  border: 1px solid rgba(255, 255, 255, .35);
  font-size: 1.05rem;
  color: #fff;
  text-decoration: none;
  transition: background-color .2s ease, color .2s ease, transform .2s ease, border-color .2s ease;
}
a.footer-social__btn:hover { background: #fff; color: var(--ag-primary-dark); border-color: #fff; transform: translateY(-2px); }

/* Contact + links */
.footer-contact, .footer-links { list-style: none; padding: 0; margin: 0; }
.footer-contact li {
  display: flex;
  gap: .75rem;
  align-items: flex-start;
  font-size: .95rem;
  font-weight: 500;
  line-height: 1.55;
  margin-bottom: .9rem;
}
.footer-contact i { flex-shrink: 0; margin-top: .15rem; opacity: .7; }
.footer-contact a, .footer-links a { text-decoration: none; background: linear-gradient(currentColor, currentColor) 0 100% / 0 1px no-repeat; transition: background-size .25s ease; }
.footer-contact a:hover, .footer-links a:hover { background-size: 100% 1px; }
.footer-links li { margin-bottom: .55rem; font-size: .95rem; line-height: 1.5; }
@media (max-width: 600px) { .footer-links { columns: 2; column-gap: 1.5rem; } }
.footer-links a { font-size: .95rem; font-weight: 500; color: rgba(255, 255, 255, .9); }

/* CTA card */
.footer-card {
  align-self: start;
  padding: 1.6rem;
  border-radius: 18px;
  background: rgba(255, 255, 255, .08);
  border: 1px solid rgba(255, 255, 255, .18);
  backdrop-filter: blur(6px);
  box-shadow: 0 20px 40px rgba(0, 0, 0, .12);
}
.footer-card__text { font-size: .95rem; line-height: 1.6; color: rgba(255, 255, 255, .9); margin: 0 0 1.2rem; }
.footer-card__btn {
  display: inline-flex;
  align-items: center;
  gap: .5rem;
  padding: .75rem 1.25rem;
  border-radius: 999px;
  background: #fff;
  color: var(--ag-primary-dark) !important;
  font-size: .9rem;
  font-weight: 700;
  text-decoration: none;
  box-shadow: 0 8px 20px rgba(0, 0, 0, .15);
  transition: transform .2s ease, box-shadow .2s ease;
}
.footer-card__btn:hover { transform: translateY(-2px); box-shadow: 0 12px 26px rgba(0, 0, 0, .2); }
.footer-card__btn i { transition: transform .2s ease; }
.footer-card__btn:hover i { transform: translateX(3px); }
.footer-card__link { display: inline-flex; gap: .4rem; margin-top: 1rem; font-size: .85rem; font-weight: 600; opacity: .8; text-decoration: none; }
.footer-card__link:hover { opacity: 1; }

/* Bottom bar */
.footer-bottom {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  align-items: center;
  gap: 1rem 2rem;
  padding: 1.4rem 0 1.6rem;
  border-top: 1px solid rgba(255, 255, 255, .2);
  font-size: .82rem;
}
.footer-group { display: flex; align-items: center; gap: .9rem; flex-wrap: wrap; }
.footer-group > img { width: 38px; height: auto; }
.footer-group > span { opacity: .85; }
.footer-legal { display: flex; flex-wrap: wrap; gap: .4rem 1.4rem; }
.footer-legal a { text-decoration: none; opacity: .85; font-weight: 500; }
.footer-legal a:hover { opacity: 1; text-decoration: underline; text-underline-offset: 3px; }

/* "FJ Gruppe" button + menu */
.footer-group__btn {
  display: inline-flex;
  align-items: center;
  gap: .45rem;
  padding: .4rem .8rem;
  border-radius: 999px;
  border: 1px solid rgba(255, 255, 255, .4);
  background: rgba(255, 255, 255, .08);
  color: #fff;
  font-family: var(--ag-font);
  font-size: .75rem;
  font-weight: 700;
  letter-spacing: .04em;
  cursor: pointer;
  transition: background-color .2s ease, color .2s ease;
}
.footer-group__btn:hover, .footer-group__btn[aria-expanded="true"] { background: #fff; color: var(--ag-primary-dark); }
.footer-group__chev { font-size: .65rem; transition: transform .25s ease; }
.footer-group__btn[aria-expanded="true"] .footer-group__chev { transform: rotate(180deg); }

.footer-group__panel {
  --bs-dropdown-min-width: 0;
  width: min(420px, calc(100vw - 2rem));
  padding: 1rem;
  border: 0;
  border-radius: 16px;
  background: #fff;
  box-shadow: 0 24px 60px rgba(0, 0, 0, .3);
}
.footer-group__panel.show { animation: groupIn .22s ease; }
@keyframes groupIn { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
.footer-group__title {
  font-size: .7rem;
  font-weight: 700;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--ag-grey);
  margin: .1rem .25rem .8rem;
}
.footer-group__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: .5rem; }
.footer-group__item {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: .6rem;
  padding: .5rem .25rem;
  border-radius: 12px;
  color: var(--ag-text) !important;
  text-decoration: none;
  text-align: center;
}
.footer-group__logo {
  display: grid;
  place-items: center;
  width: 96px;
  height: 96px;
  border-radius: 50%;
  background: #fff;
  box-shadow: 0 0 0 1px #ebe8e2, 0 8px 20px rgba(0, 0, 0, .08);
  transition: transform .25s ease, box-shadow .25s ease;
}
.footer-group__logo img { width: 66%; height: 66%; object-fit: contain; }
.footer-group__item:hover .footer-group__logo {
  transform: translateY(-3px) scale(1.04);
  box-shadow: 0 0 0 2px var(--ag-primary), 0 14px 28px rgba(0, 0, 0, .14);
}
.footer-group__name { font-size: .72rem; font-weight: 600; line-height: 1.3; color: var(--ag-grey); }
.footer-group__name i { font-size: .6rem; }
.footer-group__item:hover .footer-group__name { color: var(--ag-primary-dark); }
@media (max-width: 400px) { .footer-group__logo { width: 76px; height: 76px; } }

/* ---------- Scroll to top ---------- */

.go-up {
  position: fixed;
  right: max(16px, env(safe-area-inset-right));
  bottom: max(16px, env(safe-area-inset-bottom));
  width: 52px;
  height: 52px;
  border: 0;
  border-radius: 999px;
  background: linear-gradient(135deg, rgba(178, 92, 84, .95), #8e483e);
  cursor: pointer;
  z-index: 9999;
  display: grid;
  place-items: center;
  box-shadow: 0 4px 18px rgba(142, 72, 62, .45), 0 1px 4px rgba(0, 0, 0, .12);
  transition: transform .25s cubic-bezier(.34, 1.56, .64, 1), box-shadow .25s ease, opacity .35s ease;
  opacity: 0;
  pointer-events: none;
}
.go-up.is-visible { opacity: 1; pointer-events: auto; }
.go-up:focus-visible { outline: 3px solid rgba(255, 255, 255, .85); outline-offset: 3px; }
.go-up:active { transform: scale(.94); }
@media (hover: hover) and (pointer: fine) {
  .go-up:hover { transform: scale(1.1) translateY(-2px); box-shadow: 0 10px 28px rgba(142, 72, 62, .55), 0 2px 8px rgba(0, 0, 0, .15); }
  .go-up:hover .go-up__icon::before { animation: goUpArrow 1.2s ease-in-out infinite; }
  .go-up:hover .go-up__icon::after { animation: goUpArrow 1.2s ease-in-out infinite .6s; }
}
.go-up__progress { position: absolute; inset: 0; width: 100%; height: 100%; transform: rotate(-90deg); }
.go-up__track { fill: none; stroke: rgba(255, 255, 255, .18); stroke-width: 2.5; }
.go-up__fill { fill: none; stroke: rgba(255, 255, 255, .75); stroke-width: 2.5; stroke-linecap: round; stroke-dasharray: 144.51; stroke-dashoffset: 144.51; transition: stroke-dashoffset .15s linear; }
.go-up__icon,
.go-up__icon::before,
.go-up__icon::after {
  background: no-repeat center / 22px 22px url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' viewBox='0 0 26 26'%3E%3Cg fill='none' stroke='%23fff' stroke-width='3.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M13 22V6'/%3E%3Cpath d='M7.5 11.5 13 6l5.5 5.5'/%3E%3C/g%3E%3C/svg%3E");
}
.go-up__icon { position: relative; width: 22px; height: 22px; display: block; overflow: hidden; }
.go-up__icon::before, .go-up__icon::after { content: ""; position: absolute; inset: 0; opacity: 0; pointer-events: none; }
@keyframes goUpArrow {
  0% { transform: translateY(22px); opacity: 0; }
  18% { opacity: .9; }
  70% { opacity: .9; }
  100% { transform: translateY(-26px); opacity: 0; }
}

/* ---------- Preloader ---------- */

.preloader {
  position: fixed;
  inset: 0;
  z-index: 999999;
  display: grid;
  place-items: center;
  background: rgba(255, 255, 255, .95);
  transition: opacity .7s .3s cubic-bezier(.645, .045, .355, 1), visibility 0s 1s;
}
.is-loaded .preloader { opacity: 0; visibility: hidden; }
.preloader__logo { position: relative; width: 120px; }
.preloader__logo img { display: block; width: 100%; height: auto; opacity: .3; }
.preloader__fill {
  position: absolute;
  left: 0;
  bottom: 0;
  width: 100%;
  height: 0;
  background: no-repeat center bottom / 120px auto;
  animation: imgLoading 6s linear infinite;
}
@keyframes imgLoading {
  0% { height: 0; opacity: 1; }
  95% { height: 100%; opacity: 1; }
  100% { height: 100%; opacity: 0; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
}

/* Top-level sections get the same 1.2rem gap the block editor used */
main > * + * { margin-top: var(--ag-gap); }

/* ---------- Heading styles for content (use as class names) ---------- */

/* Page title, e.g. "Über uns", "Impressum" */
.h-page {
  color: var(--ag-primary-dark);
  font-size: var(--ag-fs-xxl);
  font-weight: 600;
  line-height: 1.03;
  letter-spacing: -0.04em;
  margin-top: var(--ag-sp-50) !important;
  margin-bottom: var(--ag-sp-50) !important;
}
/* Big red section heading, e.g. "Der Spezialist für …" */
.h-section {
  color: var(--ag-primary);
  font-size: var(--ag-fs-xxl);
  margin-top: var(--ag-sp-40) !important;
  margin-bottom: var(--ag-sp-50) !important;
}
.h-section + *, .h-page + * { margin-top: 0 !important; }
/* Smaller red heading inside text, e.g. "Hohe Hygienestandards" */
.h-sub {
  color: var(--ag-primary);
  padding-bottom: var(--ag-sp-30);
}
* + .h-sub { padding-top: var(--ag-sp-50); }
.h-sub--flush { padding-top: 0 !important; }

/* Spacing helpers for single paragraphs inside rich text */
.pb-ag-50 { padding-bottom: var(--ag-sp-50); }
.pb-ag-60 { padding-bottom: var(--ag-sp-60); }
.pb-ag-70 { padding-bottom: var(--ag-sp-70); }
.mt-ag-60 { margin-top: var(--ag-sp-60) !important; }
main > .is-flush { margin-top: 0; }
/* Red heading in default size */
.h-accent { color: var(--ag-primary); }
.h-section--h2 { font-size: var(--ag-fs-h2); }
.h-section--mb70 { margin-bottom: var(--ag-sp-70) !important; }

/* Standard page body (Impressum, Kontakt …): 1340px, medium text */
.ag-wrap--page { --ag-pad: var(--ag-gutter); --ag-wide: 1340px; font-size: var(--ag-fs-medium); }
hr { border: 0; border-top: 1px solid currentColor; opacity: .2; margin: var(--ag-sp-50) 0; }

/* Phones: no extra inset inside the gutter (like the old theme) */
@media (max-width: 600px) {
  .ag-wrap { --ag-pad: var(--ag-gutter); }
}

/* ---------- Contact buttons in the menu ---------- */
.site-menu__contact {
  width: 100%;
  max-width: 1200px;
  margin: var(--ag-sp-60) auto 0;
  padding: var(--ag-sp-40) 0 calc(60px + 1rem);
  border-top: 1px solid rgba(255, 255, 255, .25);
}
@media (max-width: 768px) { .site-menu__contact { padding-bottom: 1rem; } }
.site-menu__address { font-size: .9rem; font-weight: 500; opacity: .85; margin: 0 0 1.1rem; }
.site-menu__address i { margin-right: .3rem; }
.site-menu__buttons {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: .75rem;
}
@media (max-width: 1023px) { .site-menu__buttons { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 420px) { .site-menu__buttons { grid-template-columns: 1fr; } }
.site-menu a.menu-contact-btn {
  display: flex;
  align-items: center;
  gap: .85rem;
  padding: .85rem 1rem;
  border-radius: 16px;
  border: 1px solid rgba(255, 255, 255, .28);
  background: rgba(255, 255, 255, .08);
  color: #fff;
  text-decoration: none;
  transition: background-color .25s ease, color .25s ease, transform .25s ease, box-shadow .25s ease;
}
.menu-contact-btn > i {
  display: grid;
  place-items: center;
  flex-shrink: 0;
  width: 42px;
  height: 42px;
  border-radius: 50%;
  background: rgba(255, 255, 255, .16);
  font-size: 1.1rem;
  transition: background-color .25s ease, color .25s ease;
}
.menu-contact-btn span { display: flex; flex-direction: column; font-size: .98rem; font-weight: 700; line-height: 1.25; min-width: 0; }
.menu-contact-btn small { font-size: .76rem; font-weight: 500; opacity: .8; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.site-menu a.menu-contact-btn:hover {
  opacity: 1;
  background: #fff;
  color: var(--ag-primary-dark);
  transform: translateY(-2px);
  box-shadow: 0 14px 30px -10px rgba(0, 0, 0, .35);
}
.menu-contact-btn:hover > i { background: var(--ag-primary); color: #fff; }
/* text inside the contact buttons follows the button colour (red on white when hovered) */
.site-menu .menu-contact-btn span,
.site-menu .menu-contact-btn small { color: inherit; }

/* footer: larger logo, animated social buttons */
.site-footer__logo img { width: 180px; }
@media (max-width: 600px) { .site-footer__logo img { width: 150px; } }
.footer-social__btn { transition: background-color .25s ease, color .25s ease, transform .3s cubic-bezier(.3, 1.6, .5, 1), border-color .25s ease; }
a.footer-social__btn:hover { transform: translateY(-3px) scale(1.08) rotate(-6deg); }
