* { box-sizing: border-box; }
body {
  margin: 0;
  background: #f7f6f2;
  color: #202020;
  font-family: Arial, Helvetica, sans-serif;
  line-height: 1.5;
}
a { color: #1d5d52; }
.aff-page {
  max-width: 1180px;
  margin: 0 auto;
  padding: 24px;
}
.aff-hero {
  min-height: 520px;
  display: grid;
  grid-template-columns: minmax(0, 1.05fr) minmax(300px, .95fr);
  align-items: center;
  gap: 32px;
}
.aff-hero-copy h1 {
  margin: 0 0 18px;
  font-size: 46px;
  line-height: 1.04;
  color: #111;
  letter-spacing: 0;
}
.aff-hero-copy p {
  max-width: 650px;
  font-size: 19px;
  color: #3b3b3b;
}
.aff-hero-image img,
.aff-media-card img {
  display: block;
  width: 100%;
  height: auto;
}
.aff-hero-image {
  border-radius: 8px;
  overflow: hidden;
  box-shadow: 0 18px 45px rgba(0,0,0,.18);
}
.aff-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-top: 24px;
}
.aff-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 44px;
  padding: 11px 18px;
  border-radius: 6px;
  border: 1px solid #173f38;
  background: #173f38;
  color: #fff;
  text-decoration: none;
  font-weight: bold;
}
.aff-button.secondary {
  color: #173f38;
  background: transparent;
}
.aff-section {
  padding: 36px 0;
  border-top: 1px solid #dfddd5;
}
.aff-section h2 {
  margin: 0 0 18px;
  font-size: 30px;
  line-height: 1.15;
}
.aff-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 16px;
}
.aff-card,
.aff-panel {
  background: #fff;
  border: 1px solid #e0ddd3;
  border-radius: 8px;
  padding: 18px;
}
.aff-card h3,
.aff-panel h3 {
  margin: 0 0 8px;
  font-size: 20px;
}
.aff-kpi {
  font-size: 34px;
  font-weight: bold;
  color: #173f38;
}
.aff-muted { color: #666; }
.aff-form {
  display: grid;
  gap: 14px;
  max-width: 760px;
}
.aff-form label {
  display: grid;
  gap: 6px;
  font-weight: bold;
}
.aff-form input,
.aff-form textarea,
.aff-form select {
  width: 100%;
  min-height: 42px;
  border: 1px solid #c9c5bb;
  border-radius: 6px;
  padding: 10px;
  font: inherit;
  background: #fff;
}
.aff-form textarea { min-height: 110px; resize: vertical; }
.aff-notice {
  padding: 14px 16px;
  border-radius: 8px;
  background: #e9f4ef;
  border: 1px solid #b9dbce;
}
.aff-warning {
  background: #fff3d8;
  border-color: #e8ca82;
}
.aff-table {
  width: 100%;
  border-collapse: collapse;
  background: #fff;
  border: 1px solid #e0ddd3;
}
.aff-table th,
.aff-table td {
  padding: 10px;
  border-bottom: 1px solid #ece9df;
  vertical-align: top;
  text-align: left;
  font-size: 14px;
}
.aff-table th {
  background: #173f38;
  color: #fff;
}
.aff-admin-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.aff-mini-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 32px;
  border: 1px solid #173f38;
  border-radius: 5px;
  background: #fff;
  color: #173f38;
  padding: 6px 10px;
  cursor: pointer;
  text-decoration: none;
}
.aff-mini-button.danger {
  border-color: #9b2d22;
  color: #9b2d22;
}
.aff-histogram {
  display: grid;
  gap: 10px;
}
.aff-bar-row {
  display: grid;
  grid-template-columns: 110px 1fr 130px;
  gap: 10px;
  align-items: center;
}
.aff-bar {
  height: 18px;
  background: #dedbd0;
  border-radius: 4px;
  overflow: hidden;
}
.aff-bar span {
  display: block;
  height: 100%;
  background: linear-gradient(90deg, #1d5d52, #caa64b);
}
.aff-media-grid {
  display: grid;
  grid-template-columns: 1.4fr .9fr .9fr;
  gap: 16px;
}
.aff-media-card {
  background: #fff;
  border: 1px solid #e0ddd3;
  border-radius: 8px;
  overflow: hidden;
}
.aff-media-card div { padding: 14px; }
.aff-public-page {
  color: #222;
  font-family: Arial, Helvetica, sans-serif;
  font-size: 15px;
  line-height: 1.6;
}
.aff-public-page h1,
.aff-public-page h2,
.aff-public-page h3 {
  color: #2e3a46;
  letter-spacing: 0;
}
.aff-public-page h1 {
  margin: 0 0 14px;
  font-size: 34px;
  line-height: 1.12;
}
.aff-public-page h2 {
  margin: 0 0 14px;
  font-size: 24px;
  line-height: 1.2;
}
.aff-public-page h3 {
  margin: 0 0 7px;
  font-size: 17px;
}
.aff-public-hero {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 285px;
  gap: 18px;
  align-items: center;
  margin: 18px 0 26px;
  padding: 18px;
  border: 1px solid rgba(226,184,16,.45);
  border-radius: 14px;
  background: linear-gradient(180deg, #fffdf1, #fff);
  box-shadow: 0 3px 12px rgba(0,0,0,.08);
}
.aff-public-eyebrow {
  display: inline-block;
  margin: 0 0 10px;
  padding: 5px 9px;
  border: 1px solid rgba(226,184,16,.8);
  border-radius: 999px;
  background: #fff7c2;
  color: #4b3d05;
  font-size: 13px;
  font-weight: bold;
}
.aff-public-hero-text p {
  margin: 0 0 12px;
  color: #444;
}
.aff-public-hero-image {
  overflow: hidden;
  border-radius: 10px;
  border: 1px solid rgba(0,0,0,.08);
  background: #fff;
}
.aff-public-hero-image img,
.aff-public-media img {
  display: block;
  width: 100%;
  height: auto;
}
.aff-public-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 14px;
}
.aff-public-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 40px;
  padding: 9px 15px;
  border: 1px solid #927600;
  border-radius: 8px;
  background: linear-gradient(#fff7c2, #e2b810);
  color: #222;
  text-decoration: none;
  font-weight: bold;
  box-shadow: 0 2px 5px rgba(0,0,0,.18);
}
.aff-public-button.secondary {
  background: linear-gradient(#fff, #ececec);
  border-color: #aaa;
}
.aff-public-section {
  margin: 0 0 24px;
  padding: 18px 0 0;
  border-top: 1px solid #e7e2cf;
}
.aff-public-band {
  padding: 18px;
  border: 1px solid rgba(0,0,0,.06);
  border-left: 5px solid #e2b810;
  border-radius: 12px;
  background: #fff;
  box-shadow: 0 2px 10px rgba(0,0,0,.05);
}
.aff-public-kpis,
.aff-public-grid,
.aff-public-media,
.aff-public-faq {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 14px;
}
.aff-public-kpis article,
.aff-public-grid article,
.aff-public-media article,
.aff-public-faq article {
  position: relative;
  overflow: hidden;
  border: 1px solid rgba(0,0,0,.08);
  border-radius: 10px;
  background: #fff;
  box-shadow: 0 2px 9px rgba(0,0,0,.06);
}
.aff-public-kpis article {
  isolation: isolate;
  transform-origin: center;
  animation: affKpiJoy 6s infinite both;
}
.aff-public-kpis article:nth-child(2) { animation-delay: 2s; }
.aff-public-kpis article:nth-child(3) { animation-delay: 4s; }
.aff-public-kpis article > * {
  position: relative;
  z-index: 2;
}
.aff-public-kpis article::before {
  content: "€";
  position: absolute;
  z-index: 1;
  top: 7px;
  right: 15px;
  color: #e2b810;
  font-size: 32px;
  font-weight: bold;
  line-height: 1;
  opacity: 0;
  text-shadow:
    0 0 5px rgba(255,255,255,.95),
    0 0 12px rgba(226,184,16,.9),
    -24px 34px 0 rgba(226,184,16,.38),
    -72px 20px 0 rgba(255,219,76,.35);
  animation: affKpiEuroSparkle 6s infinite both;
}
.aff-public-kpis article:nth-child(2)::before { animation-delay: 2s; }
.aff-public-kpis article:nth-child(3)::before { animation-delay: 4s; }
.aff-public-kpis article::after {
  content: "";
  position: absolute;
  z-index: 1;
  inset: -18px;
  opacity: 0;
  background:
    radial-gradient(circle at 18% 28%, #fff7a8 0 3px, transparent 4px),
    radial-gradient(circle at 28% 72%, #f5c300 0 2px, transparent 3px),
    radial-gradient(circle at 70% 24%, #ffffff 0 2px, transparent 3px),
    radial-gradient(circle at 84% 64%, #e2b810 0 3px, transparent 4px),
    radial-gradient(circle at 50% 50%, rgba(255,236,116,.45) 0 2px, transparent 42px);
  transform: scale(.72) rotate(-8deg);
  animation: affKpiFireworks 6s infinite both;
}
.aff-public-kpis article:nth-child(2)::after { animation-delay: 2s; }
.aff-public-kpis article:nth-child(3)::after { animation-delay: 4s; }
.aff-public-kpis article,
.aff-public-grid article,
.aff-public-faq article {
  padding: 14px;
}
.aff-public-kpis strong {
  display: block;
  margin: 6px 0 8px;
  color: #2e3a46;
  font-size: 28px;
  line-height: 1.1;
}
.aff-public-kpis p,
.aff-public-grid p,
.aff-public-faq p {
  margin: 0;
  color: #444;
}
.aff-public-media div {
  padding: 12px;
  color: #444;
}
.aff-public-note {
  margin: 22px 0 30px;
  padding: 13px 15px;
  border: 1px solid rgba(226,184,16,.65);
  border-left: 5px solid #e2b810;
  border-radius: 10px;
  background: #fffdf1;
  color: #333;
}
.aff-public-small {
  margin: 10px 0 0;
  color: #666;
  font-size: 13px;
}
.aff-religion-calendar {
  padding-bottom: 8px;
  scroll-margin-top: 175px;
}
.aff-religion-calendar > p {
  max-width: 760px;
  margin: 0 auto 14px;
  color: #444;
  text-align: center;
}
.aff-religion-tabs {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 8px;
  margin: 14px 0 18px;
}
.aff-religion-tabs button {
  min-height: 36px;
  padding: 8px 12px;
  border: 1px solid #c7c0af;
  border-radius: 999px;
  background: linear-gradient(#fff, #eee);
  color: #2e3a46;
  cursor: pointer;
  font: inherit;
  font-weight: bold;
  box-shadow: 0 2px 5px rgba(0,0,0,.12);
}
.aff-religion-tabs button.active {
  border-color: #caa400;
  background: linear-gradient(#fff5a8, #e5bd09);
  color: #171717;
}
.aff-calendar-chart {
  position: relative;
  overflow-x: auto;
  padding: 16px 12px 12px;
  border: 1px solid #e1dbc9;
  border-radius: 12px;
  background:
    linear-gradient(180deg, rgba(255,252,232,.85), rgba(255,255,255,.96)),
    #fff;
  box-shadow: 0 4px 16px rgba(0,0,0,.08);
}
.aff-calendar-grid {
  min-width: 920px;
}
.aff-week-line-svg {
  display: block;
  width: 100%;
  height: auto;
  min-height: 320px;
  font-family: Arial, Helvetica, sans-serif;
}
.aff-week-grid-line {
  stroke: rgba(70,70,70,.18);
  stroke-width: 1;
}
.aff-week-month-line {
  stroke: rgba(70,70,70,.1);
  stroke-width: 1;
}
.aff-week-axis-label {
  color: #555;
  fill: #555;
  font-size: 12px;
  font-weight: bold;
}
.aff-week-axis-label.y {
  text-anchor: end;
}
.aff-week-axis-label.x {
  text-anchor: middle;
}
.aff-week-line {
  fill: none;
  stroke-width: 3.2;
  stroke-linecap: round;
  stroke-linejoin: round;
  filter: drop-shadow(0 2px 2px rgba(0,0,0,.12));
}
.aff-week-dot {
  stroke: #fff;
  stroke-width: 1.6;
}
.aff-week-event-dot {
  cursor: help;
  stroke: #fff;
  stroke-width: 2.2;
  filter: drop-shadow(0 2px 4px rgba(0,0,0,.28));
}
.aff-week-event-dot:hover,
.aff-week-event-dot:focus {
  stroke: #111;
  outline: none;
}
.aff-week-tooltip {
  position: absolute;
  z-index: 20;
  width: 242px;
  max-width: calc(100% - 16px);
  padding: 10px 12px;
  border: 1px solid #c9b56b;
  border-radius: 8px;
  background: rgba(255,255,255,.97);
  box-shadow: 0 10px 25px rgba(0,0,0,.18);
  color: #2e3a46;
  text-align: left;
  pointer-events: none;
  opacity: 0;
  transform: translateY(-100%);
  transition: opacity .15s ease;
}
.aff-week-tooltip.visible {
  opacity: 1;
}
.aff-week-tooltip strong,
.aff-week-tooltip span,
.aff-week-tooltip em {
  display: block;
}
.aff-week-tooltip strong {
  margin-bottom: 5px;
  font-size: 14px;
}
.aff-week-tooltip span,
.aff-week-tooltip em {
  color: #555;
  font-size: 12px;
  line-height: 1.35;
}
.aff-week-tooltip em {
  margin-top: 5px;
  color: #333;
  font-style: normal;
}
.aff-calendar-legend {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 8px;
  margin: 13px 0 8px;
}
.aff-calendar-pill {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 9px;
  border: 1px solid #ded8c8;
  border-radius: 999px;
  background: #fff;
  color: #3d4650;
  font-size: 12px;
}
.aff-calendar-dot {
  width: 10px;
  height: 10px;
  border-radius: 50%;
}
.aff-calendar-windows {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
  margin-top: 14px;
}
.aff-calendar-window {
  padding: 12px;
  border: 1px solid #e1dbc9;
  border-left: 5px solid #e2b810;
  border-radius: 10px;
  background: #fff;
  box-shadow: 0 2px 9px rgba(0,0,0,.05);
  text-align: left;
}
.aff-calendar-window strong {
  display: block;
  color: #2e3a46;
  font-size: 15px;
}
.aff-calendar-window span {
  display: block;
  color: #666;
  font-size: 13px;
}
.aff-calendar-window em {
  display: block;
  margin-top: 5px;
  color: #444;
  font-size: 13px;
  font-style: normal;
}
.aff-public-mobile {
  padding: 0 10px;
}
.aff-chart-head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 18px;
  margin-bottom: 18px;
}
.aff-chart-head h2 { margin-bottom: 4px; }
.aff-range-tabs {
  display: inline-flex;
  gap: 6px;
  padding: 5px;
  border: 1px solid #d7d2c5;
  border-radius: 8px;
  background: #fff;
  box-shadow: 0 10px 26px rgba(32,32,32,.07);
}
.aff-range-tabs a {
  display: inline-flex;
  align-items: center;
  min-height: 34px;
  padding: 7px 12px;
  border-radius: 6px;
  color: #173f38;
  text-decoration: none;
  font-weight: bold;
  white-space: nowrap;
}
.aff-range-tabs a.active {
  background: #173f38;
  color: #fff;
}
.aff-chart-summary {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
  margin-bottom: 14px;
}
.aff-chart-summary div {
  padding: 14px 16px;
  border: 1px solid #dfd9ca;
  border-radius: 8px;
  background: linear-gradient(180deg, #fff, #fbfaf5);
  box-shadow: 0 10px 24px rgba(32,32,32,.06);
}
.aff-chart-summary span {
  display: block;
  color: #68645b;
  font-size: 13px;
  text-transform: uppercase;
  letter-spacing: .04em;
}
.aff-chart-summary strong {
  display: block;
  margin-top: 4px;
  color: #173f38;
  font-size: 28px;
  line-height: 1.1;
}
.aff-chart-card {
  position: relative;
  overflow: hidden;
  border: 1px solid #ddd6c7;
  border-radius: 8px;
  background:
    linear-gradient(135deg, rgba(29,93,82,.08), transparent 34%),
    linear-gradient(315deg, rgba(202,166,75,.14), transparent 28%),
    #fff;
  box-shadow: 0 18px 44px rgba(31,42,39,.12);
}
.aff-chart-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 14px;
  padding: 14px 16px;
  border-bottom: 1px solid #eee8da;
  color: #46433e;
  font-size: 14px;
}
.aff-chart-legend span {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.aff-dot {
  display: inline-block;
  width: 10px;
  height: 10px;
  border-radius: 50%;
}
.aff-dot.visits { background: #1d5d52; }
.aff-dot.sales { background: #caa64b; }
.aff-dot.commission { background: #7b4fa0; }
.aff-stat-chart {
  padding: 18px;
  overflow-x: auto;
  background: #fbfbf8;
}
.aff-stat-svg {
  display: block;
  width: 100%;
  min-width: 720px;
  height: auto;
  font-family: Arial, Helvetica, sans-serif;
}
.aff-svg-bg {
  fill: #fff;
  stroke: #c9c9c9;
  stroke-width: 1;
}
.aff-grid-line {
  stroke: #d9d9d9;
  stroke-width: 1;
}
.aff-grid-line.subtle {
  stroke: #eeeeee;
}
.aff-axis-line {
  stroke: #6d6d6d;
  stroke-width: 1.2;
}
.aff-axis-label {
  fill: #555;
  font-size: 12px;
}
.aff-axis-label.x {
  fill: #4b4b4b;
  font-size: 13px;
}
.aff-histo-bar {
  stroke-width: 1.4;
  shape-rendering: geometricPrecision;
}
.aff-histo-bar.visits {
  fill: rgba(47, 111, 183, .28);
  stroke: #2f6fb7;
}
.aff-histo-bar.sales {
  fill: rgba(201, 78, 72, .27);
  stroke: #c94e48;
}
.aff-histo-bar.commission {
  fill: rgba(126, 84, 166, .22);
  stroke: #7e54a6;
}
.aff-curve {
  fill: none;
  stroke-width: 3.2;
  stroke-linecap: round;
  stroke-linejoin: round;
  filter: drop-shadow(0 2px 2px rgba(0,0,0,.12));
}
.aff-curve.visits {
  stroke: #0064c8;
}
.aff-curve.sales {
  stroke: #c33e38;
  stroke-dasharray: 8 7;
}
.aff-curve.commission {
  stroke: #6e3ca0;
  stroke-dasharray: 2 6;
}
.aff-dot.visits { background: #0064c8; }
.aff-dot.sales { background: #c33e38; }
.aff-dot.commission { background: #6e3ca0; }
.aff-chart-note {
  margin: 10px 2px 0;
  color: #666;
  font-size: 13px;
}
@keyframes affKpiJoy {
  0%, 5%, 38%, 100% {
    border-color: rgba(0,0,0,.08);
    box-shadow: 0 2px 9px rgba(0,0,0,.06);
    transform: translateY(0) scale(1);
  }
  10%, 25% {
    border-color: rgba(226,184,16,.8);
    box-shadow:
      0 8px 20px rgba(0,0,0,.12),
      0 0 0 3px rgba(255,232,101,.38),
      0 0 26px rgba(226,184,16,.55);
    transform: translateY(-5px) scale(1.025);
  }
  31% {
    border-color: rgba(226,184,16,.45);
    box-shadow: 0 4px 14px rgba(0,0,0,.09);
    transform: translateY(0) scale(1);
  }
}
@keyframes affKpiEuroSparkle {
  0%, 6%, 38%, 100% {
    opacity: 0;
    transform: translateY(10px) rotate(-12deg) scale(.75);
  }
  10%, 18% {
    opacity: 1;
    transform: translateY(0) rotate(8deg) scale(1);
  }
  26% {
    opacity: .85;
    transform: translateY(-17px) rotate(-6deg) scale(1.18);
  }
  33% {
    opacity: 0;
    transform: translateY(-30px) rotate(16deg) scale(.9);
  }
}
@keyframes affKpiFireworks {
  0%, 8%, 38%, 100% {
    opacity: 0;
    transform: scale(.55) rotate(-10deg);
  }
  13% {
    opacity: .95;
    transform: scale(1) rotate(0);
  }
  24% {
    opacity: .72;
    transform: scale(1.22) rotate(6deg);
  }
  33% {
    opacity: 0;
    transform: scale(1.45) rotate(12deg);
  }
}
@media (prefers-reduced-motion: reduce) {
  .aff-public-kpis article,
  .aff-public-kpis article::before,
  .aff-public-kpis article::after {
    animation: none;
  }
}
.aff-public-kpis .aff-kpi-tile {
  animation: none !important;
  isolation: isolate;
  transform-origin: center;
  transition: border-color .22s ease, box-shadow .22s ease, transform .22s ease, background .22s ease;
}
.aff-public-kpis .aff-kpi-tile > * {
  position: relative;
  z-index: 4;
}
.aff-public-kpis .aff-kpi-tile::before {
  content: "\20AC";
  position: absolute;
  z-index: 3;
  top: -6px;
  right: 12px;
  color: #e2b810;
  font-size: 54px;
  font-weight: bold;
  line-height: 1;
  opacity: 0;
  text-shadow:
    0 0 5px #fff,
    0 0 15px rgba(255,221,42,.95),
    -42px 54px 0 rgba(226,184,16,.58),
    -96px 28px 0 rgba(255,219,76,.48);
  transform: translateY(24px) rotate(-18deg) scale(.55);
  animation: none !important;
}
.aff-public-kpis .aff-kpi-tile::after {
  content: "";
  position: absolute;
  z-index: 2;
  inset: -30px;
  opacity: 0;
  background:
    radial-gradient(circle at 13% 32%, #ffffff 0 4px, transparent 5px),
    radial-gradient(circle at 23% 70%, #f5c300 0 5px, transparent 6px),
    radial-gradient(circle at 36% 16%, #ffd84b 0 4px, transparent 5px),
    radial-gradient(circle at 62% 22%, #ffffff 0 4px, transparent 5px),
    radial-gradient(circle at 77% 72%, #e2b810 0 5px, transparent 6px),
    radial-gradient(circle at 92% 38%, #ffef83 0 4px, transparent 5px),
    radial-gradient(circle at 50% 50%, rgba(255,236,116,.56) 0 4px, transparent 64px);
  transform: scale(.42) rotate(-12deg);
  animation: none !important;
}
.aff-public-kpis .aff-kpi-tile.aff-kpi-active {
  border-color: rgba(226,184,16,.98);
  background:
    linear-gradient(115deg, rgba(255,255,255,.94), rgba(255,244,153,.96) 42%, rgba(255,255,255,.98) 76%),
    #fff;
  box-shadow:
    0 12px 26px rgba(0,0,0,.16),
    0 0 0 4px rgba(255,226,64,.58),
    0 0 36px rgba(226,184,16,.9);
  transform: translateY(-8px) scale(1.055);
  animation: affKpiTilePopStrong 1.35s ease-out both !important;
}
.aff-public-kpis .aff-kpi-tile.aff-kpi-active strong {
  color: #111;
  text-shadow: 0 0 10px rgba(255,230,83,.95);
  animation: affKpiNumberPulseStrong 1.35s ease-out both;
}
.aff-public-kpis .aff-kpi-tile.aff-kpi-active::before {
  animation: affKpiEuroBangStrong 1.35s ease-out both !important;
}
.aff-public-kpis .aff-kpi-tile.aff-kpi-active::after {
  animation: affKpiFireworkBangStrong 1.35s ease-out both !important;
}
@keyframes affKpiTilePopStrong {
  0% { transform: translateY(0) scale(1); }
  16% { transform: translateY(-11px) scale(1.075); }
  72% { transform: translateY(-8px) scale(1.055); }
  100% { transform: translateY(0) scale(1); }
}
@keyframes affKpiNumberPulseStrong {
  0% { transform: scale(1); }
  20% { transform: scale(1.12); }
  56% { transform: scale(1.04); }
  100% { transform: scale(1); }
}
@keyframes affKpiEuroBangStrong {
  0% {
    opacity: 0;
    transform: translateY(28px) rotate(-18deg) scale(.5);
  }
  16% {
    opacity: 1;
    transform: translateY(0) rotate(8deg) scale(1.05);
  }
  58% {
    opacity: .95;
    transform: translateY(-18px) rotate(-8deg) scale(1.25);
  }
  100% {
    opacity: 0;
    transform: translateY(-34px) rotate(16deg) scale(.9);
  }
}
@keyframes affKpiFireworkBangStrong {
  0% {
    opacity: 0;
    transform: scale(.35) rotate(-14deg);
  }
  18% {
    opacity: 1;
    transform: scale(1) rotate(0);
  }
  58% {
    opacity: .82;
    transform: scale(1.3) rotate(7deg);
  }
  100% {
    opacity: 0;
    transform: scale(1.65) rotate(16deg);
  }
}
@media (max-width: 850px) {
  .aff-page { padding: 16px; }
  .aff-hero,
  .aff-grid,
  .aff-media-grid,
  .aff-public-hero,
  .aff-public-kpis,
  .aff-public-grid,
  .aff-public-media,
  .aff-public-faq,
  .aff-chart-summary {
    grid-template-columns: 1fr;
  }
  .aff-public-page h1 { font-size: 28px; }
  .aff-public-page h2 { font-size: 22px; }
  .aff-public-hero { padding: 14px; }
  .aff-public-actions {
    align-items: stretch;
    flex-direction: column;
  }
  .aff-public-button { width: 100%; }
  .aff-calendar-grid {
    grid-template-columns: repeat(12, 52px);
  }
  .aff-calendar-windows {
    grid-template-columns: 1fr;
  }
  .aff-religion-tabs {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .aff-hero-copy h1 { font-size: 34px; }
  .aff-bar-row { grid-template-columns: 1fr; }
  .aff-chart-head {
    align-items: stretch;
    flex-direction: column;
  }
  .aff-range-tabs {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
  }
  .aff-range-tabs a {
    justify-content: center;
    text-align: center;
  }
  .aff-stat-chart { padding: 12px; }
  .aff-stat-svg { min-width: 680px; }
}
