/* Europec V31.2 – approved global refinements through Point 26 */

/* Point 7: consistent heading hierarchy */
body h1 {
  font-size: 32px !important;
  line-height: 1.12 !important;
  font-weight: 800 !important;
  letter-spacing: -0.02em !important;
}
body h2 {
  font-size: 28px !important;
  line-height: 1.18 !important;
  font-weight: 800 !important;
  letter-spacing: -0.02em !important;
}
body h3 {
  font-size: 21px !important;
  line-height: 1.25 !important;
  font-weight: 800 !important;
  letter-spacing: -0.01em !important;
}
@media (min-width: 768px) {
  body h1 { font-size: 48px !important; }
  body h2 { font-size: 38px !important; }
  body h3 { font-size: 21px !important; }
}
/* Legal text shown inside the modal deliberately remains compact. */
#legal-content h1 { font-size: 24px !important; line-height: 1.2 !important; }
#legal-content h2 { font-size: 20px !important; line-height: 1.25 !important; }
#legal-content h3 { font-size: 17px !important; line-height: 1.3 !important; }

/* Point 14: consistent cards and boxes by function */
main [class~="rounded-[22px]"] { border-radius: 22px !important; }
main [class~="rounded-[20px]"] { border-radius: 20px !important; }
main [class~="rounded-[18px]"] { border-radius: 18px !important; }
main [class~="rounded-[16px]"] { border-radius: 16px !important; }
main [class~="rounded-[14px]"] { border-radius: 14px !important; }

#faecher a:not(.rounded-full),
.subject-link,
.subject-group,
.memory-feature-card {
  border-radius: 20px !important;
}

#schwerpunkte article,
#angebote article,
#angebote > div > div > div,
#preise article,
#preise [class*="bg-white"][class*="border"],
#standorte a[class*="bg-white"],
.location-card,
.location-photo,
.photo-copy,
.card,
.subject-group,
.trustbox {
  border-radius: 22px !important;
}

#kontakt,
form#contact-form,
.contact-card,
.consultation-card {
  border-radius: 24px !important;
}

#faq-list > div,
main details {
  border-radius: 18px !important;
  box-shadow: none !important;
}

#schwerpunkte article,
#angebote article,
#preise article,
#standorte a[class*="bg-white"],
.location-card,
.photo-copy,
.card,
.subject-group,
.trustbox {
  border-color: rgba(15,44,97,.10) !important;
  box-shadow: 0 8px 24px rgba(15,44,97,.055) !important;
}

@media (hover:hover) and (pointer:fine) {
  #faecher a:not(.rounded-full),
  #standorte a[class*="bg-white"],
  .subject-link,
  .card,
  .subject-group {
    transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease;
  }
  #faecher a:not(.rounded-full):hover,
  #standorte a[class*="bg-white"]:hover,
  .subject-link:hover,
  .card:hover,
  .subject-group:hover {
    transform: translateY(-2px);
    box-shadow: 0 12px 30px rgba(15,44,97,.08) !important;
  }
}

/* Point 18: highlighted BuT offer */
.europec-but-offer {
  background: #FFFCF9 !important;
  border: 1px solid rgba(255,138,43,.55) !important;
  box-shadow: 0 8px 24px rgba(15,44,97,.045) !important;
}
.europec-but-more {
  display: inline-flex;
  align-items: center;
  min-height: 36px;
  color: #0F2C61;
  font-size: 13px;
  font-weight: 700;
  text-decoration: underline;
  text-underline-offset: 3px;
}

/* Points 19/20: authentic hero photo and compact trust strip */
.europec-hero-trust-strip {
  display: grid;
  grid-template-columns: repeat(3, minmax(0,1fr));
  margin: 18px 0 0;
  padding: 0;
  list-style: none;
  background: #fff;
  border: 1px solid rgba(15,44,97,.10);
  border-radius: 16px;
  overflow: hidden;
  box-shadow: 0 8px 22px rgba(15,44,97,.055);
}
.europec-hero-trust-item {
  min-width: 0;
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 12px 14px;
  color: #0F2C61;
}
.europec-hero-trust-item + .europec-hero-trust-item {
  border-left: 1px solid rgba(15,44,97,.10);
}
.europec-hero-trust-icon {
  flex: 0 0 34px;
  width: 34px;
  height: 34px;
  border-radius: 999px;
  display: grid;
  place-items: center;
  background: #FFF2E8;
  color: #C65F0A;
  font-size: 15px;
  font-weight: 900;
}
.europec-hero-trust-copy {
  min-width: 0;
  display: flex;
  flex-direction: column;
  line-height: 1.15;
}
.europec-hero-trust-copy strong {
  font-size: 13px;
  color: #0F2C61;
}
.europec-hero-trust-copy span {
  margin-top: 2px;
  font-size: 11px;
  color: #6b7280;
}
.europec-hero-proof-grid {
  margin-top: 24px;
  display: grid;
  grid-template-columns: minmax(0,1fr) 246px;
  align-items: start;
  gap: 24px;
}
.europec-hero-proof-actions { padding-top: 0; }
.europec-hero-photo {
  position: relative;
  width: 246px;
  height: 170px;
  overflow: hidden;
  margin: 0;
  border-radius: 18px;
  border: 1px solid rgba(15,44,97,.12);
  background: #fff;
  box-shadow: 0 10px 26px rgba(15,44,97,.10);
}
.europec-hero-photo img {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: cover;
}
.europec-hero-photo figcaption {
  position: absolute;
  left: 10px;
  right: 10px;
  bottom: 8px;
  min-height: 30px;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 5px 10px;
  border-radius: 999px;
  color: #fff;
  background: rgba(15,44,97,.92);
  font-size: 10px;
  font-weight: 700;
  text-align: center;
}
@media (max-width: 767px) {
  .europec-hero-trust-strip {
    grid-template-columns: repeat(2,minmax(0,1fr));
  }
  .europec-hero-trust-item { padding: 11px 10px; gap: 8px; }
  .europec-hero-trust-item:nth-child(3) {
    grid-column: 1/-1;
    border-left: 0;
    border-top: 1px solid rgba(15,44,97,.10);
  }
  .europec-hero-trust-icon { width: 32px; height: 32px; flex-basis: 32px; }
  .europec-hero-proof-grid {
    grid-template-columns: 1fr;
    gap: 18px;
  }
  .europec-hero-photo {
    width: 100%;
    height: auto;
    aspect-ratio: 16/7.1;
  }
}

/* Point 21: personal story card */
.europec-story-card {
  margin-top: 26px;
  display: grid;
  grid-template-columns: minmax(240px,.75fr) minmax(0,1.75fr);
  gap: 34px;
  align-items: center;
  padding: 26px 28px;
  border: 1px solid rgba(255,138,43,.55);
  border-radius: 22px;
  background: #FFFCF9;
  box-shadow: 0 8px 24px rgba(15,44,97,.035);
}
.europec-story-label {
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .15em;
  text-transform: uppercase;
  color: #C65F0A;
}
.europec-story-title {
  margin-top: 8px;
  font-size: 22px;
  line-height: 1.2;
  font-weight: 800;
  color: #0F2C61;
}
.europec-story-copy {
  color: #4b5563;
  font-size: 15px;
  line-height: 1.75;
}
.europec-story-signature {
  margin-top: 12px;
  color: #0F2C61;
  font-size: 13px;
  font-weight: 800;
}
@media (max-width: 767px) {
  .europec-story-card {
    grid-template-columns: 1fr;
    gap: 18px;
    padding: 24px;
  }
}

/* Point 23: Europec badge on the popular small-group price */
.europec-popular-price-card { position: relative; }
.europec-popular-badge {
  position: absolute;
  top: 28px;
  right: 28px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 23px;
  padding: 4px 12px;
  border-radius: 999px;
  background: #FF8A2B;
  color: #0B1F44;
  font-size: 10px;
  line-height: 1;
  font-weight: 900;
  text-transform: uppercase;
  letter-spacing: .02em;
}
@media (max-width: 767px) {
  .europec-popular-badge { top: 24px; right: 24px; }
}


/* Point 27: accessibility and contrast refinement */
.europec-skip-link {
  position: fixed;
  left: 16px;
  top: 12px;
  z-index: 20000;
  min-height: 44px;
  display: inline-flex;
  align-items: center;
  padding: 0 18px;
  border-radius: 999px;
  background: #0F2C61;
  color: #fff;
  font-size: 14px;
  font-weight: 800;
  text-decoration: none;
  box-shadow: 0 8px 24px rgba(0,0,0,.20);
  transform: translateY(-180%);
  transition: transform .16s ease;
}
.europec-skip-link:focus { transform: translateY(0); }

/* Focus is intentionally conspicuous for keyboard users only. */
:where(a,button,input,select,textarea,summary,[tabindex]):focus-visible {
  outline: 3px solid #fff !important;
  outline-offset: 2px !important;
  box-shadow: 0 0 0 6px #0F2C61 !important;
}

input::placeholder,
textarea::placeholder {
  color: #697586 !important;
  opacity: 1 !important;
}

.europec-orange-action { color: #0B1F44 !important; }
.europec-orange-on-light { color: #A64D00 !important; }

#mobile-menu-btn,
#menuBtn,
.hamb,
#legal-close,
.pf-photo-lightbox-close,
.memory-lightbox-close,
#memory-lightbox-close,
#memory-prev,
#memory-next,
#europec-review-prev,
#europec-review-next {
  min-width: 44px !important;
  min-height: 44px !important;
}

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


/* Point 32: consistent symbols, labels and badges */
.europec-line-svg {
  width: 20px;
  height: 20px;
  display: block;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.9;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.europec-icon-circle,
.europec-fact-icon {
  display: inline-grid;
  place-items: center;
  border-radius: 999px;
  background: #FFF2E8;
  color: #A64D00;
  border: 1px solid rgba(166,77,0,.12);
}
.europec-icon-circle {
  width: 34px;
  height: 34px;
  flex: 0 0 34px;
  font-size: 0;
}
.europec-fact-icon {
  width: 30px;
  height: 30px;
  margin-top: -2px;
}
.europec-fact-icon .europec-line-svg { width: 17px; height: 17px; }
.europec-meta-badge {
  min-height: 28px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 5px 13px !important;
  border-radius: 999px;
  font-size: 11px !important;
  line-height: 1 !important;
  font-weight: 800 !important;
  letter-spacing: .015em !important;
}
.europec-meta-badge--solid {
  background: #0F2C61 !important;
  color: #fff !important;
  border: 1px solid #0F2C61 !important;
}
.europec-meta-badge--light {
  background: #fff !important;
  color: #0F2C61 !important;
  border: 1px solid rgba(15,44,97,.14) !important;
}
.europec-eyebrow {
  font-size: 12px !important;
  line-height: 1.25 !important;
  font-weight: 800 !important;
  letter-spacing: .16em !important;
  text-transform: uppercase !important;
}
.europec-faq-symbol {
  width: 30px !important;
  height: 30px !important;
  flex: 0 0 30px;
  color: #A64D00 !important;
  border-color: rgba(166,77,0,.18) !important;
  background: #FFF8F2 !important;
  font-size: 15px !important;
  font-weight: 800 !important;
}
.location-card .fact {
  grid-template-columns: 30px minmax(0,1fr) !important;
  gap: 12px !important;
}
@media (max-width: 767px) {
  .europec-icon-circle { width: 32px; height: 32px; flex-basis: 32px; }
  .europec-icon-circle .europec-line-svg { width: 18px; height: 18px; }
}

/* Point 34: global safety space above the fixed contact bar */
:root {
  --europec-sticky-reserve-mobile: calc(59px + env(safe-area-inset-bottom, 0px));
  --europec-sticky-reserve-desktop: 51px;
  --europec-sticky-content-gap-mobile: 16px;
  --europec-sticky-content-gap-desktop: 12px;
}
/* The 26 standard pages receive a measured reserve plus a small visible gap. */
body:has(#stickybar):has(footer[class~="bg-[#0B1F44]"]) {
  padding-bottom: var(--europec-sticky-reserve-mobile) !important;
  scroll-padding-bottom: calc(var(--europec-sticky-reserve-mobile) + var(--europec-sticky-content-gap-mobile));
}
body:has(#stickybar) footer[class~="bg-[#0B1F44]"]:last-of-type {
  padding-bottom: var(--europec-sticky-content-gap-mobile) !important;
}
/* Pforzheim and Mannheim already have a deeper custom footer; keep that safety distance. */
body:has(#stickybar) footer:last-of-type:not([class]) {
  padding-bottom: calc(96px + env(safe-area-inset-bottom, 0px)) !important;
}
#stickybar {
  padding-bottom: env(safe-area-inset-bottom, 0px);
}
@media (min-width: 768px) {
  body:has(#stickybar):has(footer[class~="bg-[#0B1F44]"]) {
    padding-bottom: var(--europec-sticky-reserve-desktop) !important;
    scroll-padding-bottom: calc(var(--europec-sticky-reserve-desktop) + var(--europec-sticky-content-gap-desktop));
  }
  body:has(#stickybar) footer[class~="bg-[#0B1F44]"]:last-of-type {
    padding-bottom: var(--europec-sticky-content-gap-desktop) !important;
  }
  #stickybar { padding-bottom: 0; }
}

/* Point 35: Fächerübersicht follows the compact card standard of the homepage */
#faecher a.europec-faecher-compact-card {
  border-radius: 18px !important;
}

/* Point 1: mobile menu bottom safety space above the fixed contact bar */
@media (max-width: 1023px) {
  #mobile-menu,
  #mobileMenu.mobile.open {
    padding-bottom: calc(16px + var(--europec-sticky-reserve-mobile)) !important;
    scroll-padding-bottom: calc(16px + var(--europec-sticky-reserve-mobile));
  }
}
