/*
 * Athletic Camps — component styles for header, footer, pattern sections, legal pages and WooCommerce.
 * Values were measured on the live Kajabi storefront (lukas-storath.mykajabi.com, 09.09.2026) and
 * reference/kajabi/atc-design-system.css; tokens (--atc-*) replace the hex values.
 * Block-specific CSS lives with the blocks in lukefit-core.
 */

/* ---------- Header (Kajabi: 93 px, logo 200 px, Roboto 18 px, red outline CTA, flag toggle) ---------- */

.atc-header {
  background-color: var(--atc-dark);
  padding: 0 20px;
}

/* Sticky sits on the template-part wrapper, not on .atc-header: WordPress renders the part as
   <header class="wp-block-template-part"> around it, exactly as tall as the header, and a sticky
   element only sticks inside its parent — so .atc-header itself scrolled away at once. */
.wp-site-blocks > .wp-block-template-part:has(> .atc-header) {
  position: sticky;
  top: 0;
  z-index: 1000;
}
/* Logged in: below the admin bar (32 px, 46 px under 783 px; under 601 px it scrolls away). */
body.admin-bar .wp-site-blocks > .wp-block-template-part:has(> .atc-header) { top: 32px; }
@media (max-width: 782px) {
  body.admin-bar .wp-site-blocks > .wp-block-template-part:has(> .atc-header) { top: 46px; }
}
@media (max-width: 600px) {
  body.admin-bar .wp-site-blocks > .wp-block-template-part:has(> .atc-header) { top: 0; }
}

.atc-header__inner {
  max-width: 1200px;
  margin: 0 auto;
  min-height: 93px;
  padding: 18px 0;
  gap: 30px;
  align-items: center;
}

.atc-header__logo { flex: 0 0 auto; line-height: 1; }
.atc-header__logo img { width: 200px; height: auto; display: block; }

.atc-header__right { flex: 1 1 auto; gap: 24px; align-items: center; }
.atc-header__nav { flex: 0 1 auto; }

.atc-header__nav .wp-block-navigation__container { gap: 28px; }

.atc-header__nav .wp-block-navigation-item__content {
  color: var(--atc-text);
  font-family: var(--atc-font-body);
  font-size: 18px;
  font-weight: 400;
  text-decoration: none;
  transition: color 0.3s ease;
  white-space: nowrap;
}

.atc-header__nav .wp-block-navigation-item__content:hover,
.atc-header__nav .current-menu-item > .wp-block-navigation-item__content { color: var(--atc-primary); }

.atc-header__nav .wp-block-navigation__responsive-container-open,
.atc-header__nav .wp-block-navigation__responsive-container-close { color: var(--atc-text); }

.atc-header__nav .wp-block-navigation__responsive-container-open svg { width: 32px; height: 32px; }

.atc-header__nav .wp-block-navigation__responsive-container.is-menu-open {
  background: var(--atc-dark);
  padding: 100px 24px 24px;
}

.atc-header__nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content {
  font-family: var(--atc-font-heading);
  font-size: 28px;
  text-transform: uppercase;
  padding: 10px 0;
}

.atc-header__account {
  display: inline-flex;
  align-items: center;
  color: var(--atc-text);
  line-height: 1;
  transition: color 0.3s ease;
}

.atc-header__account:hover { color: var(--atc-primary); }

.atc-header__actions { margin: 0; }

.atc-header__cta.is-style-outline > .wp-block-button__link,
.atc-header__cta.is-style-outline > .wp-block-button__link:not(.has-text-color) {
  color: var(--atc-text);
  border-color: var(--atc-cta);
  padding: 12px 30px;
  white-space: nowrap;
}

.atc-header__cta.is-style-outline > .wp-block-button__link:hover,
.atc-header__cta.is-style-outline > .wp-block-button__link:not(.has-text-color):hover {
  background-color: var(--atc-cta);
  color: var(--atc-text);
}

.atc-translate-btn {
  background: none;
  border: 2px solid #555;
  border-radius: 4px;
  padding: 4px 8px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0.7;
  transition: all 0.2s ease;
  flex-shrink: 0;
  position: relative;
}

.atc-translate-btn:hover { opacity: 1; border-color: var(--atc-primary); }
.atc-translate-btn svg { display: block; }

.atc-translate-consent {
  position: absolute;
  top: calc(100% + 10px);
  right: 0;
  background: var(--atc-dark-card);
  border: 1px solid #333;
  border-radius: 10px;
  padding: 18px 20px;
  width: 280px;
  box-shadow: 0 8px 30px rgba(0, 0, 0, 0.6);
  z-index: 10001;
  text-align: left;
  cursor: default;
}

.atc-translate-consent p { color: #ccc; font-size: 13px; line-height: 1.5; margin: 0 0 14px; }
.atc-translate-consent__buttons { display: flex; gap: 8px; }
.atc-translate-consent__btn {
  flex: 1;
  padding: 8px 10px;
  border-radius: 4px;
  font-size: 12px;
  font-weight: 700;
  cursor: pointer;
  border: 1px solid #555;
  background: transparent;
  color: var(--atc-text);
}
.atc-translate-consent__btn--accept { background: var(--atc-primary); color: var(--atc-dark); border-color: var(--atc-primary); }

/* Google Translate injects a top bar and a hidden widget: keep the layout untouched. */
body { top: 0 !important; }
.skiptranslate iframe, #goog-gt-tt, .goog-te-banner-frame { display: none !important; }
#atc-google-translate { display: none; }

@media (max-width: 767px) {
  .atc-header { padding: 0 15px; }
  .atc-header__inner { min-height: 80px; padding: 14px 0; gap: 12px; }
  .atc-header__logo img { width: 160px; }
  .atc-header__right { gap: 14px; }
  .atc-header .atc-header__actions,
  .atc-header .atc-header__account { display: none !important; }
  .atc-header__nav .wp-block-navigation__responsive-container-open { padding: 0; }
}

/* ---------- Footer (Kajabi: one row — logo · two link lists · copyright · social; legal row below) ---------- */

.atc-footer {
  background-color: var(--atc-dark);
  padding: 20px 20px 8px;
  font-size: 18px;
}

.atc-footer__inner {
  max-width: 1200px;
  margin: 0 auto;
  align-items: center;
  gap: 20px 30px;
  padding: 0 20px;
}

.atc-footer__logo { flex: 0 0 auto; margin: 0; line-height: 1; }
.atc-footer__logo img { width: 180px; height: auto; display: block; }

.atc-footer__menus { flex: 1 1 auto; gap: 40px; align-items: flex-start; padding: 15px 0; }

.atc-footer__menu { flex: 0 0 auto; margin: 0; }
.atc-footer__menu .wp-block-navigation__container { gap: 0; }
.atc-footer__menu .wp-block-navigation-item__content {
  color: var(--atc-text);
  font-family: var(--atc-font-body);
  font-size: 18px;
  line-height: 1.6;
  text-decoration: none;
  transition: color 0.3s;
  display: block;
}
.atc-footer__menu--right .wp-block-navigation-item { text-align: right; }
.atc-footer__menu .wp-block-navigation-item__content:hover { color: var(--atc-primary); }

.atc-footer__meta { flex: 0 0 auto; gap: 20px; align-items: center; }
.atc-footer__copy { color: var(--atc-text-muted); font-size: 18px; margin: 0; white-space: nowrap; }
.atc-footer__social { gap: 12px; margin: 0; }
.atc-footer__social .wp-social-link { width: 20px; height: 20px; }
.atc-footer__social .wp-social-link svg { width: 20px; height: 20px; }
.atc-footer__social .wp-social-link a:hover { color: var(--atc-primary) !important; }

.atc-footer__legal-actions { text-align: center; padding: 16px 0 8px; margin: 0; font-size: 13px; }

.atc-widerruf-btn {
  display: inline-block;
  padding: 8px 20px;
  border: 1px solid var(--atc-cta);
  border-radius: 6px;
  color: var(--atc-cta);
  text-decoration: none;
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.5px;
  transition: var(--atc-transition);
}

.atc-widerruf-btn:hover { background: var(--atc-cta); color: var(--atc-text); }
.atc-cookie-settings-link { display: inline-block; margin-left: 16px; color: #696c74; text-decoration: none; font-size: 13px; }
.atc-cookie-settings-link:hover { color: var(--atc-primary); }

@media (max-width: 991px) {
  .atc-footer__inner { justify-content: center; text-align: center; }
  .atc-footer__logo { flex-basis: 100%; display: flex; justify-content: center; }
  .atc-footer__menus { flex-basis: 100%; justify-content: center; gap: 30px; }
  .atc-footer__menu--right .wp-block-navigation-item,
  .atc-footer__menu .wp-block-navigation-item { text-align: center; }
  /* The lists are vertical flex boxes aligned right/left on desktop: centre the items, not only their text. */
  .atc-footer__menu .wp-block-navigation__container { align-items: center; }
  .atc-footer__meta { flex-basis: 100%; flex-direction: column; gap: 12px; }
}

@media (max-width: 600px) {
  .atc-footer { padding: 30px 15px 8px; font-size: 16px; }
  .atc-footer__menus { flex-direction: column; gap: 10px; align-items: center; }
  .atc-footer__menu .wp-block-navigation-item__content, .atc-footer__copy { font-size: 16px; }
  .atc-cookie-settings-link { display: block; margin: 10px 0 0; }
  /* One list on a phone: two stacked lists left a gap in the middle. */
  .atc-footer__menus { gap: 0; }
}

/* Cart and chat buttons are fixed bottom-left: at the end of the page they sat on the legal links. */
@media (max-width: 767px) {
  body:has(.atc-cart-fab, .atc-chatbot) .atc-footer { padding-bottom: 150px; }
}

/* ---------- Sections (pattern building blocks) ---------- */

.atc-section { padding: 80px 20px; margin: 0; }
.atc-section--sm { padding: 40px 20px; }
.atc-section--card { background: var(--atc-dark-card); }
.atc-section--alt { background: #111111; }
.atc-section .sizer { max-width: 1200px; margin: 0 auto; }
.atc-section__intro { text-align: center; max-width: 760px; margin: 0 auto 40px; }
.atc-section__intro .atc-divider { margin: 20px auto; }
.atc-section__intro p { color: var(--atc-text-muted); }
.atc-section__intro p.atc-lead { color: var(--atc-color-body); font-size: 1.1em; }

@media (max-width: 767px) {
  .atc-section { padding: 60px 15px; }
}

/* Early-bird bar (Kajabi: gradient, 14 px, yellow bottom border) */
.atc-early-bird {
  background: linear-gradient(90deg, var(--atc-dark), #1a1a1a);
  border-bottom: 2px solid var(--atc-primary);
  padding: 10px 20px;
  margin: 0;
}
.atc-early-bird p { font-size: 14px; text-align: center; margin: 0; line-height: 1.4; color: var(--atc-color-body); }
.atc-early-bird a { color: var(--atc-primary); text-decoration: underline; margin-left: 8px; }

/* Stats grid (counters read the number from the text) */
.atc-stats-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 28px 20px;
  max-width: 960px;
  margin: 0 auto;
  text-align: center;
  padding: 10px 0;
}
.atc-stats-grid__item { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 6px; }
.atc-stats-grid__num { font-family: var(--atc-font-heading); font-size: 52px; font-weight: 700; color: var(--atc-primary); margin: 0; line-height: 1; letter-spacing: 0.5px; }
.atc-stats-grid__label { color: var(--atc-text-muted); font-size: 14px; text-transform: uppercase; letter-spacing: 1.2px; margin: 0; }

@media (max-width: 991px) {
  .atc-stats-grid { gap: 24px 16px; max-width: 680px; }
  .atc-stats-grid__num { font-size: 44px; }
}
@media (max-width: 767px) {
  .atc-stats-grid { grid-template-columns: repeat(2, 1fr); gap: 28px 12px; max-width: 420px; }
  .atc-stats-grid__num { font-size: 40px; }
  .atc-stats-grid__label { font-size: 12px; letter-spacing: 1px; }
}
@media (max-width: 380px) { .atc-stats-grid__num { font-size: 34px; } }

/* Feature columns ("Für wen": round 100 px icon, yellow H3 36 px) and info cards (location) */
.atc-features { max-width: 1200px; margin: 0 auto; gap: 30px; }
.atc-feature { text-align: center; }
/* align-items too: with the lightbox on, the figure is a column flexbox and justify-content only centers vertically. */
.atc-feature .wp-block-image { display: flex; justify-content: center; align-items: center; margin: 0 0 16px; }
.atc-feature img { width: 100px; height: 100px; border-radius: 50%; object-fit: cover; }
.atc-feature h3 { color: var(--atc-primary); font-size: 36px; margin-bottom: 8px; }
.atc-feature p { color: var(--atc-color-body); margin: 0; }

.atc-info-cards { max-width: 960px; margin: 0 auto; }
.atc-info-cards--grid { max-width: 800px; }
.atc-info-cards__row { margin-bottom: 20px; }
.atc-info-card { background: var(--atc-dark-card); padding: 24px; border-radius: var(--atc-radius); text-align: left; height: 100%; }
.atc-info-card h3 { color: var(--atc-primary); font-family: var(--atc-font-body); font-weight: 700; letter-spacing: .1em; font-size: 14px; text-transform: uppercase; margin: 0 0 10px; }
.atc-info-card p { color: var(--atc-color-body); margin: 0; }
/* A card may hold two paragraphs (arrival by car, arrival by train) — they need a gap. */
.atc-info-card p + p { margin-top: 12px; }

/* Process steps */
.atc-process { max-width: 1200px; margin: 0 auto; }
.atc-process__step { text-align: center; }
.atc-process__num { font-family: var(--atc-font-heading); font-size: 48px; font-weight: 700; color: var(--atc-primary); margin: 0 0 10px; line-height: 1; }
.atc-process__step h3 { font-size: 22px; margin-bottom: 10px; }
.atc-process__step p { color: var(--atc-text-muted); }

/* Schedule */
.atc-schedule__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 30px; max-width: 1200px; margin: 0 auto; }
.atc-schedule__block { background-color: var(--atc-dark-card); border-radius: var(--atc-radius); padding: 30px; text-align: center; }
.atc-schedule__icon { font-size: 40px; margin: 0 0 15px; line-height: 1; }
.atc-schedule__time { color: var(--atc-primary); font-family: var(--atc-font-heading); font-size: 14px; text-transform: uppercase; margin: 0 0 10px; letter-spacing: 1px; }
.atc-schedule__title { font-size: 20px; margin: 0 0 10px; }
.atc-schedule__desc { color: var(--atc-text-muted); font-size: 14px; margin: 0; }

/* Testimonials: Kajabi = one centred quote at a time (fade carousel, dots). Cards variant stays available. */
.atc-testimonials { max-width: 1200px; margin: 0 auto; }
.atc-testimonial { background: var(--atc-dark-card); border-radius: var(--atc-radius); padding: 30px; margin: 0; border: 0; height: 100%; }
.atc-testimonial p { font-size: 1.15em; font-style: italic; color: var(--atc-text); line-height: 1.6; margin: 0 0 20px; }
.atc-testimonial cite { color: var(--atc-primary); font-weight: 700; font-style: normal; font-size: 15px; display: block; }
/* Review carousel (atc/review-carousel): link to the full text, authenticity note (§ 5b UWG). */
.atc-testimonial__more { display: inline-block; margin-top: 10px; color: var(--atc-text-muted); font-size: 14px; text-decoration: underline; text-underline-offset: 3px; }
.atc-testimonial__more:hover { color: var(--atc-primary); }
.atc-review-carousel__note { text-align: center; margin: 12px 0 0; font-size: 13px; }
.atc-review-carousel__note a { color: var(--atc-text-muted); text-decoration: underline; text-underline-offset: 3px; }
.atc-review-carousel__note a:hover { color: var(--atc-primary); }
.atc-testimonial--single { max-width: 720px; margin: 0 auto; text-align: center; background: transparent; padding: 0; }
.atc-testimonial--single p { color: var(--atc-color-body); line-height: 1.7; }
.atc-testimonial--plain { background: transparent; padding: 0; height: auto; }
.atc-testimonial--plain p { color: var(--atc-color-body); }
.atc-testimonial-photo { max-width: 1140px; margin: 0 auto; align-items: center; gap: 40px; }
.atc-testimonial-photo__text .atc-divider { margin: 20px 0; }
.atc-testimonial-photo__image img { border-radius: var(--atc-radius); width: 100%; height: auto; }

.atc-carousel { position: relative; max-width: 900px; margin: 0 auto; text-align: center; }
.atc-carousel .atc-testimonial { background: transparent; padding: 0 40px; height: auto; }
.atc-carousel .atc-testimonial p { font-size: 1.3em; max-width: 700px; margin: 0 auto 20px; line-height: 1.6; }
.atc-carousel .atc-testimonial cite { font-size: 16px; }
.atc-carousel.is-ready .atc-carousel__slide { display: none; }
.atc-carousel.is-ready .atc-carousel__slide.is-active { display: block; animation: atc-fade 0.5s ease; }
@keyframes atc-fade { from { opacity: 0; } to { opacity: 1; } }
.atc-carousel__dots { display: flex; justify-content: center; gap: 10px; margin: 30px 0 0; padding: 0; list-style: none; }
.atc-carousel__dot { width: 10px; height: 10px; border-radius: 50%; border: 0; background: #444; cursor: pointer; padding: 0; transition: background 0.3s; }
.atc-carousel__dot.is-active, .atc-carousel__dot:hover { background: var(--atc-primary); }
.atc-carousel__arrow {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 40px;
  height: 40px;
  border: 0;
  border-radius: 50%;
  background: transparent;
  color: var(--atc-text-muted);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: color 0.3s;
}
.atc-carousel__arrow:hover { color: var(--atc-primary); }
.atc-carousel__arrow--prev { left: -10px; }
.atc-carousel__arrow--next { right: -10px; }
@media (max-width: 767px) {
  .atc-carousel .atc-testimonial { padding: 0 10px; }
  .atc-carousel__arrow { display: none; }
}

/* Cover CTA (quiz teaser, final CTA, team hero) */
.atc-cta { min-height: 60vh; margin: 0; }
.atc-cta .wp-block-cover__inner-container { max-width: 900px; text-align: center; }
.atc-cta .atc-divider { margin: 20px auto; }
.atc-cta p { font-size: 1.2em; color: var(--atc-color-body); }
.atc-cta .wp-block-buttons { justify-content: center; margin-top: 30px; }
.atc-cta--plain { min-height: 0; padding: 80px 20px; }
.atc-cta--compact { min-height: 0; padding: 140px 20px; }

/* Partner (ESN): plain section, text 60 % + logo 40 % (380 px), both centred */
.atc-partner { max-width: 1140px; margin: 0 auto; align-items: center; gap: 30px; text-align: center; }
.atc-partner__text { flex-basis: 60% !important; }
.atc-partner h3 { color: var(--atc-primary); font-size: 36px; margin-bottom: 12px; }
.atc-partner p { font-size: 1.1em; color: var(--atc-color-body); }
.atc-partner .wp-block-image { display: flex; justify-content: center; align-items: center; margin: 0; }
.atc-partner img { width: 380px; max-width: 100%; height: auto; }
.atc-partner__logo { flex-basis: 40% !important; }

/* Instagram */
.atc-instagram__embed { max-width: 1200px; margin: 0 auto; }
.atc-instagram__embed:empty { display: none; }
/* Instagram strip (lukefit-core module 44): pictures from our own server, filled into the empty
   group above. 6 posts = 3 columns, 7–8 = 4 columns; phones 2 columns. */
.atc-instagram__grid { list-style: none; margin: 0 0 40px; padding: 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; }
.atc-instagram__grid[data-count="6"],
.atc-instagram__grid[data-count="5"],
.atc-instagram__grid[data-count="3"] { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.atc-instagram__item { margin: 0; }
.atc-instagram__item a { display: block; position: relative; overflow: hidden; border-radius: 10px; background: var(--atc-dark-card); aspect-ratio: 1 / 1; }
.atc-instagram__item img { display: block; width: 100%; height: 100%; object-fit: cover; transition: transform .4s ease, opacity .4s ease; }
.atc-instagram__item a::after { content: ""; position: absolute; inset: 0; border: 2px solid transparent; border-radius: 10px; transition: border-color .3s ease; pointer-events: none; }
.atc-instagram__item a:hover img,
.atc-instagram__item a:focus-visible img { transform: scale(1.05); }
/* First words of the caption on hover/focus. Touch screens have no hover, so they keep the bare picture. */
.atc-instagram__overlay { position: absolute; inset: 0; display: flex; flex-direction: column; justify-content: flex-end; gap: 8px; padding: 16px; background: linear-gradient(to top, rgba(10, 10, 10, .92) 0%, rgba(10, 10, 10, .6) 55%, rgba(10, 10, 10, .15) 100%); opacity: 0; transition: opacity .3s ease; }
.atc-instagram__caption { font-family: var(--atc-font-body); font-size: 14px; line-height: 1.4; color: var(--atc-color-heading, #fff); display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; overflow-wrap: anywhere; }
.atc-instagram__more { font-family: var(--atc-font-body); font-size: 11px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--atc-primary); }
.atc-instagram__item a:hover .atc-instagram__overlay,
.atc-instagram__item a:focus-visible .atc-instagram__overlay { opacity: 1; }
@media (hover: none) { .atc-instagram__overlay { display: none; } }
.atc-instagram__item a:hover::after,
.atc-instagram__item a:focus-visible::after { border-color: var(--atc-primary); }
@media (max-width: 900px) { .atc-instagram__grid { gap: 10px; } }
@media (max-width: 767px) { .atc-instagram__grid, .atc-instagram__grid[data-count] { grid-template-columns: repeat(2, minmax(0, 1fr)); margin-bottom: 30px; } }
@media (max-width: 420px) { .atc-instagram__grid { gap: 6px; } .atc-instagram__item a, .atc-instagram__item a::after { border-radius: 6px; } }

/* FAQ (core details blocks) */
.atc-faq { max-width: 800px; margin: 0 auto; }
.atc-faq__cat { color: var(--atc-primary); font-size: 20px; letter-spacing: 3px; text-align: center; margin: 50px 0 25px; }
.atc-faq__cat::after { content: ""; display: block; width: 60px; height: 3px; background-color: var(--atc-primary); margin: 12px auto 0; }
.atc-faq__cat:first-child { margin-top: 0; }
.atc-faq details { background: var(--atc-dark-card); border-radius: 6px; margin: 0 0 2px; overflow: hidden; }
.atc-faq summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 15px;
  padding: 18px 22px;
  color: var(--atc-text);
  font-family: var(--atc-font-heading);
  font-size: 16px;
  font-weight: 600;
  letter-spacing: 0.3px;
  cursor: pointer;
  list-style: none;
  transition: color 0.3s;
}
.atc-faq summary::-webkit-details-marker { display: none; }
.atc-faq summary:hover { color: var(--atc-primary); }
.atc-faq summary::after {
  content: "";
  flex-shrink: 0;
  width: 16px;
  height: 16px;
  background:
    linear-gradient(var(--atc-primary), var(--atc-primary)) center/16px 2px no-repeat,
    linear-gradient(var(--atc-primary), var(--atc-primary)) center/2px 16px no-repeat;
  transition: transform 0.3s ease;
}
.atc-faq details[open] summary::after { transform: rotate(45deg); }
.atc-faq details > :not(summary) { padding: 0 22px 18px; color: var(--atc-text-muted); font-size: 15px; line-height: 1.7; }
.atc-faq details p { margin: 0 0 10px; }
.atc-faq details a { color: var(--atc-primary); text-decoration: underline; }
@media (max-width: 767px) { .atc-faq summary { font-size: 15px; padding: 15px 16px; } }

/* Gallery bento (core gallery with class atc-bento, core lightbox) */
.wp-block-gallery.atc-bento { max-width: 1100px; margin: 0 auto; display: grid; grid-template-columns: repeat(4, 1fr); grid-auto-rows: 180px; gap: 12px; }
.wp-block-gallery.atc-bento .wp-block-image { width: auto !important; height: 100%; margin: 0 !important; border-radius: 10px; overflow: hidden; }
.wp-block-gallery.atc-bento .wp-block-image img { width: 100% !important; height: 100% !important; object-fit: cover; transition: transform .4s ease; }
.wp-block-gallery.atc-bento .wp-block-image:hover img { transform: scale(1.05); }
.wp-block-gallery.atc-bento .wp-block-image:nth-child(1) { grid-column: span 2; grid-row: span 2; }
.wp-block-gallery.atc-bento .wp-block-image:nth-child(8) { grid-column: span 2; }
@media (max-width: 900px) {
  .wp-block-gallery.atc-bento { grid-template-columns: repeat(3, 1fr); grid-auto-rows: 160px; }
  .wp-block-gallery.atc-bento .wp-block-image:nth-child(8) { grid-column: span 3; }
}
@media (max-width: 600px) {
  .wp-block-gallery.atc-bento { grid-template-columns: repeat(2, 1fr); grid-auto-rows: 140px; }
  .wp-block-gallery.atc-bento .wp-block-image:nth-child(1),
  .wp-block-gallery.atc-bento .wp-block-image:nth-child(8) { grid-column: span 2; grid-row: auto; }
}

/* Legal pages */
.atc-legal { max-width: 800px; margin: 0 auto; padding: 80px 20px; }
.atc-legal h1 { text-align: center; font-size: 2.4em; letter-spacing: 2px; margin-bottom: 12px; }
/* Sized to the screen so STORNIERUNGSBEDINGUNGEN fits one line even where the browser cannot hyphenate. */
@media (max-width: 767px) { .atc-legal h1 { font-size: min(2.4em, calc((100vw - 40px) / 12)); letter-spacing: 1px; } }
.atc-legal__updated { color: var(--atc-text-muted); text-align: center; margin-bottom: 50px; font-size: 0.9em; }
.atc-legal h2 { color: var(--atc-primary); font-size: 1.3em; margin: 40px 0 12px; }
.atc-legal h3 { font-size: 1.1em; margin: 28px 0 10px; }
.atc-legal p, .atc-legal li { color: #ccc; line-height: 1.8; }
/* Text links only: the CTA button has its own colours (yellow text on a yellow hover was invisible). */
.atc-legal a:not(.wp-element-button) { color: var(--atc-primary); overflow-wrap: anywhere; }
.atc-legal table { width: 100%; border-collapse: collapse; font-size: 14px; }
.atc-legal th, .atc-legal td { border-bottom: 1px solid var(--atc-border); padding: 10px; text-align: left; color: #ccc; }
.atc-legal th { color: var(--atc-primary); }
/* Long cookie names (wp_woocommerce_session_*) must break, or the cookie table widens the page on a phone. */
.atc-legal td, .atc-legal th { overflow-wrap: anywhere; hyphens: auto; vertical-align: top; }
@media (max-width: 767px) {
  .atc-legal table { table-layout: fixed; font-size: 13px; }
  .atc-legal th, .atc-legal td { padding: 8px 6px; }
}
.atc-legal .atc-notice { background: #1a1a1a; border-left: 4px solid var(--atc-primary); padding: 24px 28px; border-radius: 0 8px 8px 0; margin: 0 0 40px; }
.atc-legal .atc-notice h2 { margin-top: 0; font-size: 1.1em; }
.atc-legal .atc-notice--cta { border-left-color: var(--atc-cta); }

/* Contact */
.atc-contact-card { background: var(--atc-dark-card); border-radius: var(--atc-radius); padding: 40px; height: 100%; }
.atc-contact-card h3 { color: var(--atc-primary); margin-bottom: 20px; }
.atc-contact-card p { margin-bottom: 15px; }
.atc-contact-card strong { color: var(--atc-text); }
.atc-contact-card a { color: var(--atc-color-body); }

/* 404 */
.atc-404 { padding: 120px 20px; text-align: center; }
.atc-404__code { font-size: clamp(100px, 20vw, 200px); font-weight: 700; color: var(--atc-primary); line-height: 1; margin: 0 0 20px; font-family: var(--atc-font-heading); }

/* Back to top */
.atc-back-to-top {
  position: fixed;
  bottom: 30px;
  right: 30px;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  border: none;
  background: var(--atc-primary);
  color: var(--atc-dark);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0;
  visibility: hidden;
  transform: translateY(10px);
  transition: opacity 0.3s ease, visibility 0.3s ease, transform 0.3s ease, background 0.2s ease;
  z-index: 999;
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.4);
}
.atc-back-to-top.is-visible { opacity: 1; visibility: visible; transform: translateY(0); }
.atc-back-to-top:hover { background: #fff; transform: translateY(-2px); }
@media (max-width: 600px) { .atc-back-to-top { display: none; } }

/* Anchor offset below the sticky header */
[id] { scroll-margin-top: 110px; }
@media (max-width: 767px) { [id] { scroll-margin-top: 90px; } }

/* ---------- WooCommerce pages in the dark design ---------- */

.woocommerce-page main, .woocommerce main { padding-top: 40px; padding-bottom: 60px; }
/* Cart and checkout render the classic shortcodes; WooCommerce's own block templates would swap
   in a bare header without menu and drop the footer, so the theme ships page-cart/page-checkout. */
.atc-shop { max-width: 1200px; margin: 0 auto; padding: 40px 20px 80px; }
.atc-shop h1 { text-align: center; font-size: 2.4em; letter-spacing: 2px; margin-bottom: 30px; }
.atc-shop .woocommerce-info, .atc-shop .woocommerce-message, .atc-shop .woocommerce-error,
.atc-shop .wc-block-components-notice-banner {
  background: var(--atc-dark-card); color: var(--atc-color-body); border-color: var(--atc-primary);
  border-radius: var(--atc-radius);
}
.atc-shop .woocommerce-error, .atc-shop .wc-block-components-notice-banner.is-error { border-color: var(--atc-cta); }
.atc-shop .woocommerce-info a, .atc-shop .woocommerce-message a, .atc-shop .woocommerce-error a { color: var(--atc-primary); }
.atc-shop .woocommerce-info::before { color: var(--atc-primary); }
.atc-shop .woocommerce-error::before { color: var(--atc-cta); }
/* WooCommerce sets the field background on ".form-row .input-text" (0,3,1); the element selector
   alone loses, so the textarea needs its class too. */
.woocommerce form .form-row textarea.input-text { background: var(--atc-dark-card); color: var(--atc-text); border: 1px solid #333; border-radius: 4px; padding: 10px 12px; }
.atc-shop .select2-container .select2-selection--single .select2-selection__rendered { color: var(--atc-text); }
/* The gateway description box is lavender in WooCommerce's stylesheet — the one light patch on a dark page. */
.woocommerce-checkout #payment div.payment_box { background: #2a2a2a; color: var(--atc-color-body); }
.woocommerce-checkout #payment div.payment_box::before { border-color: transparent transparent #2a2a2a; }
.woocommerce-checkout #payment ul.payment_methods { border-color: var(--atc-border); }
.woocommerce-checkout #payment ul.payment_methods li { color: var(--atc-text); }
.woocommerce-checkout #payment .place-order { padding-top: 1em; }
/* Germanized paints ".woocommerce-checkout .shop_table" #eee. The checkout table carries its own
   class, the order-pay table (checkout/order-pay/…) only "shop_table" — light grey under light text. */
.atc-shop .woocommerce-checkout-review-order-table,
.atc-shop .shop_table { background: var(--atc-dark-card); border-radius: var(--atc-radius); }
/* Order review: the product name needs the room, the amount only its width (Befund Lars
   28.09.2026: two equal columns left the amounts floating in the middle of the table). */
.atc-shop .woocommerce-checkout-review-order-table { table-layout: auto; }
.atc-shop .woocommerce-checkout-review-order-table th.product-total,
.atc-shop .woocommerce-checkout-review-order-table td.product-total,
.atc-shop .woocommerce-checkout-review-order-table tfoot td { width: 1%; white-space: nowrap; text-align: right; vertical-align: top; }
.atc-shop .woocommerce-checkout-review-order-table tfoot td[colspan] { width: auto; white-space: normal; text-align: left; }
.atc-shop .woocommerce-checkout-review-order-table dl.variation { display: grid; grid-template-columns: auto 1fr; gap: 2px 8px; margin: 6px 0 0; }
.atc-shop .woocommerce-checkout-review-order-table dl.variation dt,
.atc-shop .woocommerce-checkout-review-order-table dl.variation dd { margin: 0; padding: 0; float: none; }
.atc-shop .woocommerce-checkout-review-order-table dl.variation dd p { margin: 0; }
/* VAT total and the § 25 sentence: the row the customer looks for, in the brand yellow. */
.atc-shop .woocommerce-checkout-review-order-table tr.order-tax th,
.atc-shop .woocommerce-checkout-review-order-table tr.order-tax td,
.atc-shop .woocommerce-checkout-review-order-table tr.tax-rate th,
.atc-shop .woocommerce-checkout-review-order-table tr.tax-rate td,
.atc-shop .woocommerce-checkout-review-order-table tr.tax-total th,
.atc-shop .woocommerce-checkout-review-order-table tr.tax-total td { color: var(--atc-primary); }
.atc-shop .lf-tax-notice td { color: var(--atc-text-muted); line-height: 1.5; }
.atc-shop .checkout_coupon { background: var(--atc-dark-card); border-color: var(--atc-border); }
.atc-shop .blockUI.blockOverlay { background: var(--atc-dark) !important; }
@media (max-width: 767px) { .atc-shop { padding: 24px 15px 60px; } }
.woocommerce form .form-row input.input-text,
.woocommerce form .form-row textarea,
.woocommerce .select2-container .select2-selection--single {
  background: var(--atc-dark-card);
  color: var(--atc-text);
  border: 1px solid #333;
  border-radius: 4px;
  padding: 10px 12px;
}
.woocommerce #payment, .woocommerce-checkout #payment { background: var(--atc-dark-card); border-radius: var(--atc-radius); }
.woocommerce table.shop_table { border-color: var(--atc-border); }
.woocommerce table.shop_table th, .woocommerce table.shop_table td { border-color: var(--atc-border); color: var(--atc-color-body); }
.woocommerce #respond input#submit, .woocommerce a.button, .woocommerce button.button, .woocommerce input.button, .woocommerce #place_order {
  background: var(--atc-cta);
  color: var(--atc-text);
  border-radius: var(--atc-btn-radius);
  text-transform: uppercase;
  letter-spacing: .08em;
  font-weight: 700;
}
.woocommerce #place_order:hover, .woocommerce button.button:hover { background: var(--atc-primary); color: var(--atc-dark); }

/* ---------- Editor-native highlight = yellow text, never a box ---------- */
mark.has-inline-color,
mark.has-primary-color { background: transparent; color: var(--atc-primary); padding: 0; }
.wp-block-separator.atc-divider { border: 0; height: 3px; width: 60px; background-color: var(--atc-primary); margin: 20px 0; opacity: 1; }
.has-text-align-center .atc-divider, .atc-section__intro .atc-divider, .atc-cta .atc-divider { margin-left: auto; margin-right: auto; }

/* ---------- Payment plan (checkout choice above the payment methods, order-pay / thank-you / mail summary) ---------- */
.lf-plan-choice { border: 0; padding: 0; margin: 0 0 20px; min-width: 0; display: grid; gap: 10px; }
.lf-plan-choice[hidden] { display: none; }
.lf-plan-choice__intro { color: var(--atc-color-body); margin: 0; }
.lf-plan-choice__option { display: block; padding: 14px 16px; border: 2px solid #333; border-radius: 8px; cursor: pointer; color: var(--atc-color-body); }
.lf-plan-choice__option:has(input:checked) { border-color: var(--atc-primary); background: rgba(255, 238, 0, 0.06); }
.lf-plan-choice__option strong { color: var(--atc-text); }
.lf-plan-choice__option small { color: var(--atc-text-muted); }
.lf-plan-choice__hint { color: var(--atc-color-body); margin: 2px 0 0; }
.lf-plan-choice__hint strong { color: var(--atc-primary); }
/* Rest due within four weeks of the deposit (12–8 weeks before the start): not small print. */
.lf-plan-choice__warn { display: block; margin-top: 10px; padding: 10px 12px; border-left: 3px solid var(--atc-orange); border-radius: 2px; background: rgba(255, 159, 42, 0.12); color: var(--atc-color-body); font-size: 14px; line-height: 1.45; }
.lf-plan-choice__warn strong { color: var(--atc-orange); }
/* Deposit chosen: today's amount and the rest right under the full price in the order table. */
.woocommerce-checkout-review-order-table .lf-plan-due--now td strong { color: var(--atc-primary); }
.woocommerce-checkout-review-order-table .lf-plan-due--later th,
.woocommerce-checkout-review-order-table .lf-plan-due--later td { color: var(--atc-text-muted); font-weight: 400; }
.lf-plan-summary { background: var(--atc-dark-card); border-radius: var(--atc-radius); padding: 24px; margin: 0 0 30px; }
.lf-plan-summary__title { font-size: 22px; margin-bottom: 6px; }
.lf-plan-summary__order { color: var(--atc-text-muted); margin: 0 0 14px; }
.lf-plan-summary__table { width: 100%; border-collapse: collapse; }
.lf-plan-summary__table th, .lf-plan-summary__table td { text-align: left; padding: 10px 8px; border-bottom: 1px solid var(--atc-border); color: var(--atc-color-body); }
.lf-plan-summary__table th { color: var(--atc-primary); font-family: var(--atc-font-heading); text-transform: uppercase; letter-spacing: .05em; font-size: 13px; }
.lf-plan-summary__pay { display: inline-block; padding: 6px 14px; background: var(--atc-cta); color: var(--atc-text); border-radius: var(--atc-btn-radius); text-decoration: none; font-weight: 700; font-size: 13px; text-transform: uppercase; }
.lf-plan-summary__note { color: var(--atc-text-muted); margin: 12px 0 0; }

/* Google Translate returns isolated nouns in lowercase ("team", "contact"); a menu reads in
   Title Case in either language. The German labels already carry their capitals. */
.atc-header__nav .wp-block-navigation-item__content,
.atc-footer .wp-block-navigation-item__content { text-transform: capitalize; }
.atc-translate-consent__sub { color: #9c9c9c; font-size: 12px; line-height: 1.45; margin: -8px 0 14px; }

/* Mein Konto: booking cards with the customer's links (module 29). */
.lf-account-bookings { margin: 0 0 30px; }
.lf-account-bookings h2 { margin: 0 0 14px; }
.lf-account-booking { background: var(--atc-dark-card); border-radius: var(--atc-radius); padding: 20px 24px; margin: 0 0 16px; }
.lf-account-booking__head { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; font-size: 18px; margin: 0 0 12px; }
.lf-account-booking__status { font-size: 12px; text-transform: uppercase; letter-spacing: 0.08em; padding: 3px 8px; border-radius: 2px; background: #333; color: var(--atc-text); }
.lf-account-booking__status--ok { background: #7ed957; color: #0a0a0a; }
.lf-account-booking__status--warn { background: var(--atc-primary); color: #0a0a0a; }
.lf-account-booking__status--bad { background: var(--atc-cta); color: #fff; }
.lf-account-booking__links { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.lf-account-booking__links li { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.lf-account-booking__link { color: var(--atc-primary); text-decoration: underline; text-underline-offset: 3px; }
.lf-account-booking__note { color: var(--atc-text-muted); font-size: 13px; }
.lf-account-booking__note a { color: var(--atc-primary); }

/* Floating cart button: visible whenever the cart holds something (module 3, 16.09.2026). */
.atc-cart-fab {
  position: fixed;
  bottom: 30px;
  left: 30px;
  z-index: 999;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 10px 16px 10px 12px;
  border-radius: 999px;
  background: var(--atc-dark-card);
  border: 2px solid var(--atc-primary);
  color: var(--atc-text);
  text-decoration: none;
  font-weight: 700;
  font-size: 14px;
  box-shadow: 0 2px 12px rgba(0, 0, 0, 0.45);
  transition: background 0.2s ease, transform 0.2s ease;
}
.atc-cart-fab:hover { background: var(--atc-primary); color: var(--atc-dark); transform: translateY(-2px); }
.atc-cart-fab__count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 22px;
  height: 22px;
  padding: 0 6px;
  border-radius: 999px;
  background: var(--atc-cta);
  color: #fff;
  font-size: 12px;
}
body.atc-has-sticky .atc-cart-fab { bottom: calc(var(--atc-sticky-h, 80px) + 16px); }
@media (max-width: 600px) {
  .atc-cart-fab { left: 12px; bottom: 12px; padding: 8px 12px 8px 10px; }
  .atc-cart-fab__label { display: none; }
}
.atc-checkout-cart-link { margin: 0 0 12px; font-size: 14px; }
.atc-checkout-cart-link a { color: var(--atc-primary); }
