/* Affiliate enrolment and results (spec 72 AC-HUB-6/7/9/12/19).
   Mobile uses real native-dialog bottom sheets; desktop centres the same
   dialogs. All spacing, radii and type sizes use the deck-app token scale. */
.affiliate-eyebrow {
  margin: 0;
  color: var(--kk-accent-text);
  font-size: var(--kk-fs-micro);
  font-weight: 700;
  letter-spacing: .09em;
  text-transform: uppercase;
}

.affiliate-prompt,
.affiliate-results,
.affiliate-traffic {
  padding: var(--kk-s-4);
  border: 1px solid var(--kk-border);
  border-radius: var(--kk-r-md);
  background: var(--kk-card);
  box-shadow: var(--kk-shadow-sm);
}

.affiliate-prompt {
  position: relative;
  z-index: 1;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--kk-s-4);
  margin: 0 0 var(--kk-s-5);
}

/* The dashboard hero bleeds upward when it is the first child. A prompt makes
   it the second child, so remove only that negative top bleed. */
.kk-main-inner:has(> .affiliate-prompt) > .kk-dash .kk-dash-hero {
  margin-top: 0;
}

.affiliate-prompt h2,
.affiliate-results h2,
.affiliate-opt-in h2,
.affiliate-traffic h2,
.affiliate-admin-form h2 {
  margin: var(--kk-s-1) 0 var(--kk-s-2);
  font-size: var(--kk-fs-heading);
}

.affiliate-prompt p,
.affiliate-opt-in p,
.affiliate-traffic p,
.affiliate-admin-form p {
  margin: 0;
  color: var(--kk-text-soft);
  font-size: var(--kk-fs-body);
}

.affiliate-prompt-actions,
.affiliate-admin-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  gap: var(--kk-s-2);
}

.affiliate-prompt-actions {
  flex-shrink: 0;
}

.affiliate-admin-actions {
  margin-block: var(--kk-s-3) var(--kk-s-4);
}

.affiliate-admin-actions form,
.affiliate-admin-stop,
.affiliate-admin-form {
  display: grid;
  gap: var(--kk-s-2);
}

.affiliate-admin-stop {
  max-width: 30rem;
  margin-top: var(--kk-s-4);
}

.affiliate-results {
  margin-bottom: var(--kk-s-4);
}

.affiliate-result-grid,
.affiliate-traffic-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--kk-s-2);
  margin: var(--kk-s-4) 0 0;
}

.affiliate-result-grid div,
.affiliate-traffic-grid div {
  min-width: 0;
  padding: var(--kk-s-3);
  border: 1px solid var(--kk-border);
  border-radius: var(--kk-r-sm);
  background: var(--kk-bg);
}

.affiliate-result-grid dt,
.affiliate-traffic-grid span {
  display: block;
  color: var(--kk-text-soft);
  font-size: var(--kk-fs-micro);
}

.affiliate-result-grid dd,
.affiliate-traffic-grid strong {
  display: block;
  margin: var(--kk-s-1) 0 0;
  font-size: var(--kk-fs-heading);
  font-weight: 600;
}

.affiliate-result-note {
  margin: var(--kk-s-2) 0 0;
  color: var(--kk-text-soft);
  font-size: var(--kk-fs-meta);
}

.affiliate-blocked {
  padding-left: var(--kk-s-2);
  border-left: 3px solid var(--kk-blocker);
  font-size: var(--kk-fs-body);
}

.affiliate-sheet-launcher {
  min-width: 0;
}

dialog.affiliate-sheet {
  position: fixed;
  width: min(35rem, calc(100% - 2 * var(--kk-s-5)));
  max-height: 80dvh;
  margin: auto;
  padding: 0;
  overflow: auto;
  border: 1px solid var(--kk-border);
  border-radius: var(--kk-r-lg);
  background: var(--kk-card);
  color: var(--kk-text);
  box-shadow: var(--kk-shadow-lg);
}

dialog.affiliate-sheet::backdrop {
  background: color-mix(in srgb, var(--kk-ink) 40%, transparent);
}

.affiliate-sheet-body {
  position: relative;
  min-width: 0;
  padding: var(--kk-s-5);
}

.affiliate-sheet-close {
  position: absolute;
  top: var(--kk-s-2);
  right: var(--kk-s-2);
  padding: var(--kk-s-1) var(--kk-s-2);
  border: 0;
  background: none;
  color: var(--kk-text-soft);
  cursor: pointer;
  font-size: var(--kk-fs-title);
  line-height: 1;
}

.affiliate-opt-in form {
  display: grid;
  gap: var(--kk-s-2);
  margin-top: var(--kk-s-4);
}

.affiliate-terms {
  color: var(--kk-text-soft);
}

.affiliate-terms a {
  color: var(--kk-accent-text);
  text-decoration: underline;
}

.affiliate-traffic {
  margin-top: var(--kk-s-4);
}

.affiliate-table-scroll {
  max-width: 100%;
  margin-top: var(--kk-s-4);
  overflow-x: auto;
}

.affiliate-table-scroll table {
  width: 100%;
  border-collapse: collapse;
  font-size: var(--kk-fs-meta);
}

.affiliate-table-scroll th,
.affiliate-table-scroll td {
  padding: var(--kk-s-2);
  border-bottom: 1px solid var(--kk-border);
  text-align: left;
}

.affiliate-table-scroll small {
  display: block;
  max-width: 48ch;
  color: var(--kk-text-soft);
  overflow-wrap: anywhere;
}

@media (max-width: 639px) {
  .affiliate-prompt {
    align-items: stretch;
    flex-direction: column;
    margin-bottom: var(--kk-s-4);
  }

  .affiliate-prompt-actions,
  .affiliate-prompt-actions form,
  .affiliate-prompt-actions .kk-btn {
    width: 100%;
  }

  .affiliate-result-grid,
  .affiliate-traffic-grid {
    grid-template-columns: minmax(0, 1fr);
  }

  dialog.affiliate-sheet {
    inset: auto 0 0;
    width: 100%;
    max-width: 100%;
    max-height: 88dvh;
    margin: 0;
    border-bottom: 0;
    border-radius: var(--kk-r-lg) var(--kk-r-lg) 0 0;
  }

  .affiliate-sheet-body {
    padding: var(--kk-s-4) var(--kk-s-4) calc(var(--kk-s-4) + env(safe-area-inset-bottom));
  }

  .affiliate-admin-actions {
    align-items: stretch;
    flex-direction: column;
  }
}

@media (hover: none) and (pointer: coarse) {
  dialog.affiliate-sheet input,
  dialog.affiliate-sheet select,
  dialog.affiliate-sheet textarea,
  .affiliate-admin-stop input {
    font-size: var(--kk-fs-input);
  }
}

/* Applying to earn cash (spec 72 D-72-32): the note field and the admin's view of it. */
.affiliate-apply-label {
  display: block;
  margin-top: var(--kk-s-3);
  font-size: var(--kk-fs-meta);
  font-weight: 600;
}

.affiliate-apply-note {
  box-sizing: border-box;
  width: 100%;
  margin-top: var(--kk-s-1);
  padding: var(--kk-s-2);
  border: 1px solid var(--kk-border);
  border-radius: var(--kk-r-sm);
  background: var(--kk-card);
  color: var(--kk-text);
  font: inherit;
  font-size: var(--kk-fs-body);
  resize: vertical;
}

.affiliate-application {
  margin-bottom: var(--kk-s-4);
  padding-bottom: var(--kk-s-4);
  border-bottom: 1px solid var(--kk-border);
}

.affiliate-application-note {
  margin: var(--kk-s-2) 0;
  padding-left: var(--kk-s-2);
  border-left: 3px solid var(--kk-border);
  color: var(--kk-text);
  font-size: var(--kk-fs-body);
  overflow-wrap: anywhere;
}
