/*
 * die Seelmeisterin — Atelier: Shop-Schicht.
 *
 * Wird nur auf `page-seelenschaetze.php` geladen. Keine neuen Tokens,
 * keine neuen Farben — alles kommt aus style.css. Was hier steht, sind
 * die Bauteile, die es nur im Shop gibt: Regal, Programme, laufende
 * Reihe, Ritual, Bücher, Feingedrucktes.
 */

/* ═══════════════════════════════════════════════════════════
   Hero der Shop-Seite

   Einspaltig statt zweispaltig: hier steht kein Porträt daneben,
   die Copy liegt in der freien Bildhälfte links.
   ═══════════════════════════════════════════════════════════ */

.sma-hero--shop { min-height: min(78vh, 760px); }

/* Eigene Stufe für die Überschrift: „Was ich weitergebe, steht in
   keinem Regal" läuft über vier Zeilen, die Startseite kommt mit zwei
   aus. In der Display-Größe der Startseite schiebt sie den Knopf unter
   die Falte — und ein Hero, dessen Handlung man nicht sieht, ist keiner. */
.sma-hero--shop .sma-hero__title { font-size: clamp(2.5rem, 5.6vw, 5rem); }
@media (min-width: 900px) {
  .sma-hero--shop .sma-hero__inner { grid-template-columns: 7fr 5fr; }
}
.sma-hero--shop .sma-hero__bg img { object-position: center 55%; }

/* ═══════════════════════════════════════════════════════════
   Produktregal
   ═══════════════════════════════════════════════════════════ */

/* Haarlinien statt Karten — Kartenfüllungen kennt diese Seite nicht:
   die Trennlinie ist der Hintergrund, der durch den 1px-gap scheint.

   `auto-fit` statt fester Spaltenzahl: die Fläche zwischen den Karten
   ist die Haarlinie (Hintergrund + 1px gap). Bei weniger Karten als
   Spalten blieben sonst leere Zellen stehen — und die zeigen sich als
   Farbblock, nicht als Leere. `auto-fit` klappt leere Spuren zusammen,
   die vorhandenen Karten füllen die Zeile. */
.sma-shelf {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 236px), 1fr));
  gap: 1px;
  margin-top: clamp(36px, 4.5vw, 64px);
  background: var(--rule-soft);
  border-block: 1px solid var(--rule-soft);
}

.sma-prod {
  display: flex;
  flex-direction: column;
  gap: 0;
  padding: clamp(20px, 2.4vw, 28px);
  background: var(--paper);
}
.sma-band--light .sma-prod { background: var(--paper-light); }

.sma-prod__media { margin-bottom: 18px; }
.sma-prod__media img {
  width: 100%;
  aspect-ratio: 4 / 5;
  object-fit: cover;
  border: 1px solid var(--rule-soft);
}

.sma-prod__body { display: flex; flex-direction: column; gap: 8px; }
.sma-prod__gate { color: var(--accent); }
.sma-prod h3 { font-size: 1.375rem; }
.sma-prod__for { color: var(--text-muted); font-size: var(--fs-small); margin: 0; }
.sma-prod__price {
  font-family: var(--font-display);
  font-size: 1.5rem;
  line-height: 1.1;
  color: var(--ink);
  margin: 6px 0 0;
  font-variant-numeric: tabular-nums;
}
.sma-prod__price:empty { display: none; }
.sma-prod__size { margin: 0; }
.sma-prod .sma-btn { align-self: start; margin-top: 12px; }

.sma-shelf__note { margin-top: 22px; }

/* ═══════════════════════════════════════════════════════════
   Programme
   ═══════════════════════════════════════════════════════════ */

.sma-programme {
  margin-top: clamp(44px, 5.5vw, 80px);
  padding-top: clamp(30px, 3.6vw, 46px);
  border-top: 1px solid var(--rule);
}
.sma-programme h3 { font-size: var(--fs-h3); margin-bottom: 12px; }
.sma-programme > .sma-prose { color: var(--text-muted); }

.sma-programme__list {
  margin: clamp(26px, 3vw, 38px) 0 0;
  display: grid;
  grid-template-columns: 1fr;
  gap: 0;
}
@media (min-width: 620px)  { .sma-programme__list { grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: clamp(28px, 4vw, 64px); } }
@media (min-width: 1000px) { .sma-programme__list { grid-template-columns: repeat(4, minmax(0, 1fr)); } }

.sma-programme__list > div {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 14px;
  padding: 13px 0;
  border-bottom: 1px solid var(--rule-soft);
}
.sma-programme__list dt { font-size: var(--fs-small); color: var(--ink); }
.sma-programme__list dd {
  margin: 0;
  font-size: var(--fs-small);
  font-weight: 600;
  color: var(--ink-soft);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.sma-programme__foot {
  margin-top: clamp(26px, 3vw, 36px);
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 16px 24px;
}

/* Redaktionshinweis, nur für Angemeldete mit Themerechten. */
.sma-todo {
  margin-top: 28px;
  padding: 14px 18px;
  border: 1px dashed var(--accent);
  color: var(--accent);
  font-size: var(--fs-label);
}

/* ═══════════════════════════════════════════════════════════
   Die Dose — Sonderfall der Scroll-Szene

   Die Szene erbt alles von `.sma-flow` in style.css. Hier steht nur,
   was an dieser Sequenz anders ist: sie ist quer aufgenommen und
   deshalb heller als die Tuschewolke, der Schleier muss also kräftiger
   decken, damit der Text darauf sicher lesbar bleibt.
   ═══════════════════════════════════════════════════════════ */

.sma-tin { background: var(--paper-light); }
.sma-tin .sma-flow__veil {
  background: linear-gradient(100deg,
    rgba(250, 245, 238, 0.97) 0%,
    rgba(250, 245, 238, 0.93) 32%,
    rgba(250, 245, 238, 0.42) 60%,
    rgba(250, 245, 238, 0.06) 100%);
}
@media (max-width: 1023px) {
  .sma-tin .sma-flow__veil {
    background: linear-gradient(180deg,
      rgba(250, 245, 238, 0.08) 0%,
      rgba(250, 245, 238, 0.78) 44%,
      rgba(250, 245, 238, 0.98) 100%);
  }
}
.sma-tin .sma-flow__figure img { object-position: center 30%; }

/* Zugelassene Angaben nach VO (EU) 432/2012. */
.sma-claims {
  list-style: none;
  margin: 0 0 18px;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 7px;
}
.sma-claims li {
  display: flex;
  gap: 10px;
  font-size: var(--fs-small);
  line-height: 1.55;
  color: var(--text-muted);
}
.sma-claims span { color: var(--accent); flex: none; }

/* Pflichthinweise stehen neben der Angabe, nicht am Seitenende. Sie
   sind kleiner gesetzt, aber nie unter 13px — und nie grau-auf-grau. */
.sma-note {
  margin: 18px 0 0;
  padding-top: 14px;
  border-top: 1px solid var(--rule-soft);
  font-size: var(--fs-label);
  line-height: 1.6;
  color: var(--ink-soft);
  max-width: 60ch;
}
.sma-note--wide { margin-top: clamp(34px, 4vw, 52px); max-width: none; }

.sma-tin__buy {
  margin-top: 22px;
  padding-top: 20px;
  border-top: 1px solid var(--rule);
  display: flex;
  flex-wrap: wrap;
  align-items: end;
  justify-content: space-between;
  gap: 18px 28px;
}
.sma-tin__buy .sma-prod__price { margin: 0 0 4px; }

/* ═══════════════════════════════════════════════════════════
   Laufende Reihe der 49 Themen
   ═══════════════════════════════════════════════════════════ */

.sma-rail { margin: clamp(30px, 3.6vw, 52px) 0; }

/* Der Anhalter steht über der Bahn, nicht darauf: schwebte er darüber,
   verdeckte er dauerhaft ein Schlagwort — und ausgerechnet ein Knopf
   darf nichts verdecken. */
.sma-rail__bar {
  max-width: var(--max-content);
  margin: 0 auto 16px;
  padding-inline: var(--gutter);
  display: flex;
  justify-content: flex-end;
}

.sma-rail__viewport {
  padding-block: 4px;
  overflow: hidden;
  /* Die Enden laufen aus, statt hart abzuschneiden. Ein Werkzeug-
     verlauf, kein Zierverlauf — er maskiert. */
  -webkit-mask-image: linear-gradient(90deg, transparent, #000 7%, #000 93%, transparent);
          mask-image: linear-gradient(90deg, transparent, #000 7%, #000 93%, transparent);
}
.sma-rail__track {
  display: flex;
  gap: 12px;
  width: max-content;
  animation: sma-rail-run 64s linear infinite;
}
.sma-rail.is-paused .sma-rail__track { animation-play-state: paused; }

@keyframes sma-rail-run {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}

.sma-tag {
  display: inline-flex;
  align-items: baseline;
  gap: 9px;
  padding: 10px 18px;
  border: 1px solid var(--rule);
  border-radius: var(--radius-pill);
  font-size: var(--fs-label);
  color: var(--ink-soft);
  white-space: nowrap;
}
.sma-tag b {
  font-weight: 600;
  letter-spacing: var(--ls-label);
  text-transform: uppercase;
  color: var(--accent);
}

/* Bewegung über fünf Sekunden braucht einen Anhalter (WCAG 2.2.2).
   `:hover` ist keiner — am Handy gibt es ihn nicht. */
.sma-rail__pause {
  width: 44px;
  height: 44px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--paper-light);
  border: 1px solid var(--rule);
  border-radius: var(--radius-pill);
  cursor: pointer;
}
.sma-rail__icon {
  width: 12px;
  height: 13px;
  border-left: 3px solid var(--ink);
  border-right: 3px solid var(--ink);
}
.sma-rail__pause[aria-pressed="true"] .sma-rail__icon {
  border: none;
  width: 0;
  height: 0;
  border-top: 7px solid transparent;
  border-bottom: 7px solid transparent;
  border-left: 12px solid var(--ink);
}

@media (prefers-reduced-motion: reduce) {
  .sma-rail__track { animation: none; }
  .sma-rail__viewport { overflow-x: auto; }
}

/* ═══════════════════════════════════════════════════════════
   Partnerprogramm

   Die Werbekennzeichnung ist Pflicht (Punkt 4.2 der Vereinbarung) und
   steht deshalb oben, in Akzentfarbe, nicht im Kleingedruckten.
   ═══════════════════════════════════════════════════════════ */

.sma-affil {
  margin-top: clamp(40px, 5vw, 72px);
  padding: clamp(26px, 3.4vw, 44px);
  border: 1px solid var(--rule);
  background: var(--paper);
}
.sma-affil__kennung { color: var(--accent); margin-bottom: 14px; }
.sma-affil h3 { font-size: var(--fs-h3); margin-bottom: 14px; }
.sma-affil .sma-prose { color: var(--text-muted); }
.sma-affil__aktion {
  margin-top: clamp(22px, 2.6vw, 30px);
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 16px 24px;
}
.sma-affil__aktion b { color: var(--ink); }

/* ═══════════════════════════════════════════════════════════
   Ritual
   ═══════════════════════════════════════════════════════════ */

.sma-ritual { margin-top: clamp(36px, 4.5vw, 64px); align-items: start; }

.sma-ritual__stage video,
.sma-ritual__stage img {
  width: 100%;
  border: 1px solid var(--rule-soft);
}
@media (min-width: 900px) {
  .sma-ritual__stage { position: sticky; top: 108px; }
}

.sma-ritual__steps { display: grid; gap: 0; }
.sma-ritual__step {
  padding: clamp(20px, 2.6vw, 28px) 0;
  border-top: 1px solid var(--rule-soft);
}
.sma-ritual__step:first-child { border-top: none; padding-top: 0; }
.sma-ritual__step h3 { margin-bottom: 8px; }
.sma-ritual__step p { color: var(--text-muted); margin: 0; max-width: var(--max-prose); }

/* ═══════════════════════════════════════════════════════════
   Bücher
   ═══════════════════════════════════════════════════════════ */

.sma-books { margin-top: clamp(36px, 4.5vw, 64px); align-items: start; }
.sma-books__list { display: grid; gap: 0; }
.sma-book {
  padding: clamp(22px, 2.8vw, 30px) 0;
  border-top: 1px solid var(--rule-soft);
}
.sma-book:first-child { border-top: none; padding-top: 0; }
.sma-book h3 { margin: 10px 0 10px; }
.sma-book > p { color: var(--text-muted); max-width: var(--max-prose); }
.sma-book__foot {
  margin-top: 16px;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 12px 22px;
}
.sma-book__foot .sma-prod__price { margin: 0; font-size: 1.375rem; }

.sma-books__media img { width: 100%; border: 1px solid var(--rule-soft); }
@media (min-width: 900px) {
  .sma-books__media { position: sticky; top: 108px; }
}

/* ═══════════════════════════════════════════════════════════
   Vertrauensband & Feingedrucktes
   ═══════════════════════════════════════════════════════════ */

.sma-trust {
  margin: clamp(44px, 5.5vw, 80px) 0 0;
  padding-top: clamp(28px, 3.4vw, 40px);
  border-top: 1px solid rgba(243, 235, 224, 0.18);
  display: grid;
  grid-template-columns: 1fr;
  gap: 0;
}
@media (min-width: 720px)  { .sma-trust { grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: clamp(28px, 4vw, 56px); } }
@media (min-width: 1060px) { .sma-trust { grid-template-columns: repeat(4, minmax(0, 1fr)); } }

.sma-trust > div { padding: 16px 0; border-bottom: 1px solid rgba(243, 235, 224, 0.14); }
.sma-trust dt {
  font-size: var(--fs-label);
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--blush);
  margin-bottom: 6px;
}
.sma-trust dd {
  margin: 0;
  font-size: var(--fs-small);
  line-height: 1.6;
  color: rgba(243, 235, 224, 0.78);
}

.sma-fine { padding-block: clamp(44px, 6vw, 88px); }
.sma-fine__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: clamp(16px, 2vw, 26px);
}
@media (min-width: 860px) { .sma-fine__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.sma-fine__grid p {
  margin: 0;
  font-size: var(--fs-label);
  line-height: 1.65;
  color: var(--ink-soft);
}
.sma-fine__grid strong { color: var(--ink); font-weight: 600; }
