/* /plugins/activity-popups/assets/css/popups.css */
/* Live Activity Popups: one small note at a time in a bottom corner, in the
   theme's own colours (--paper, --ink, --rule, --theme-600). "start" is the
   reading side's corner, so it flips in right-to-left languages. On a phone
   it spans the width above the bottom bar (--appop-lift, set by the script
   from the bar's height). Long names and words wrap rather than being cut. */
.appop{position:fixed;z-index:45;bottom:calc(var(--appop-lift, 0px) + 16px + env(safe-area-inset-bottom, 0px));inset-inline-start:16px;width:min(360px, calc(100vw - 32px));pointer-events:none}
.appop[data-pos="end"]{inset-inline-start:auto;inset-inline-end:16px}
.appop-live{display:block}
.appop-toast{pointer-events:auto;position:relative;display:flex;align-items:flex-start;gap:12px;padding:12px 40px 12px 12px;padding-inline:12px 40px;border:1px solid var(--rule, rgba(15,23,42,.12));border-radius:14px;background:var(--paper, #fff);color:var(--ink, #0f172a);box-shadow:0 12px 32px rgba(0,0,0,.18);opacity:0;transform:translateY(12px);transition:opacity .28s ease, transform .28s ease}
.appop-toast.is-in{opacity:1;transform:none}
.appop-icon{flex:none;display:inline-flex;align-items:center;justify-content:center;width:48px;height:48px;border-radius:10px;background:var(--paper-2, rgba(15,23,42,.05));color:var(--theme-600, #4f46e5);font-size:20px;overflow:hidden}
.appop-icon img{display:block;width:100%;height:100%;object-fit:cover}
.appop-body{display:flex;flex-direction:column;gap:3px;min-width:0;color:inherit;text-decoration:none}
a.appop-body:hover .appop-line strong,a.appop-body:focus-visible .appop-line strong{color:var(--theme-600, #4f46e5);text-decoration:underline}
a.appop-body:focus-visible{outline:2px solid var(--theme-600, #4f46e5);outline-offset:3px;border-radius:6px}
.appop-line{margin:0;font-size:14px;line-height:1.4;overflow-wrap:anywhere}
.appop-line strong{font-weight:700}
.appop-meta{margin:0;font-size:12px;line-height:1.35;color:var(--ink-soft, #64748b);overflow-wrap:anywhere}
.appop-close{position:absolute;top:6px;inset-inline-end:6px;display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border:0;border-radius:999px;background:transparent;color:var(--ink-soft, #64748b);font-size:15px;cursor:pointer}
.appop-close:hover{color:var(--theme-600, #4f46e5);background:var(--paper-2, rgba(15,23,42,.06))}
.appop-close:focus-visible{outline:2px solid var(--theme-600, #4f46e5);outline-offset:1px}
@media (max-width:639px){
  .appop,.appop[data-pos="end"]{inset-inline:8px;width:auto;bottom:calc(var(--appop-lift, 0px) + 8px + env(safe-area-inset-bottom, 0px))}
  .appop-icon{width:40px;height:40px;font-size:17px}
  .appop-line{font-size:13.5px}
}
@media (prefers-reduced-motion:reduce){
  .appop-toast{transition:none;transform:none}
}
@media print{.appop{display:none}}

/* /assets/css/components/membership-terms.css */
/* Automatic-renewal disclosure and consent, shown inside each pricing card
   directly above its subscribe button.

   Sized to be read, not to be skipped: the same colour as the feature list
   above it rather than a faint grey, because the point of putting it here is
   that somebody sees it before they agree. */

.mship-terms {
  margin: 0 0 10px;
  font-size: 0.75rem;
  line-height: 1.55;
  color: var(--ink-soft, #6b6560);
}

.mship-consent {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  margin: 0 0 12px;
  font-size: 0.75rem;
  line-height: 1.5;
  color: var(--ink-2, #3a3632);
  cursor: pointer;
}

.mship-consent input[type="checkbox"] {
  flex: 0 0 auto;
  width: 14px;
  height: 14px;
  margin: 2px 0 0;
  accent-color: var(--theme-600, currentColor);
  cursor: pointer;
}

/* The signed-in member's own plan, above the cards: renewing, ending, or a
   renewal that failed and is in its grace period. */
.mship-status-wrap { display: flex; flex-direction: column; gap: 12px; }
.mship-status {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 16px;
  border-radius: 12px;
  background: var(--paper-2);
  border: 1px solid var(--rule);
}
.mship-status--warn { border-color: #d97706; background: color-mix(in srgb, #d97706 10%, var(--paper-2)); }
.mship-status__text { flex: 1 1 280px; margin: 0; font-size: 0.875rem; line-height: 1.5; color: var(--ink); overflow-wrap: anywhere; }
.mship-status__actions { display: flex; flex-wrap: wrap; gap: 8px; }
.mship-status__actions form { margin: 0; }

.mship-vouchers {
  padding: 16px;
  border-radius: 12px;
  background: var(--paper-2);
  border: 1px dashed var(--rule);
}
.mship-vouchers__title { margin: 0 0 8px; font-weight: 700; color: var(--ink); }
.mship-vouchers__list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 6px; }
.mship-vouchers__list li { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 10px; font-size: 0.875rem; color: var(--ink-soft, #6b6560); }
.mship-vouchers__list code {
  font-family: ui-monospace, monospace;
  font-weight: 700;
  letter-spacing: .04em;
  padding: 2px 8px;
  border-radius: 6px;
  background: var(--paper);
  color: var(--ink);
  overflow-wrap: anywhere;
}
.mship-vouchers__hint { margin: 8px 0 0; font-size: 0.75rem; color: var(--ink-soft, #6b6560); }

/* "Your plan" in place of a card's subscribe form. */
.mship-current {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 42px;
  border-radius: 10px;
  font-size: 0.875rem;
  font-weight: 700;
  color: var(--ink);
  background: var(--paper);
  border: 1px solid var(--rule);
}

/* Comparison table built from the real tiers. Tier names and row labels wrap
   at word boundaries; amounts stay whole, and on a narrow phone the table
   scrolls inside its own frame rather than splitting "$1,999" across lines. */
.mship-compare-cell { overflow-wrap: normal; word-break: normal; }
td.mship-compare-cell:not(:first-child) { white-space: nowrap; }

/* "Members only" in place of a product's buy buttons. */
.mship-locked {
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 16px;
  border-radius: 12px;
  background: var(--paper-2);
  border: 1px solid var(--rule);
}
.mship-locked__title { margin: 0; font-weight: 700; color: var(--ink); display: flex; align-items: center; gap: 8px; }
.mship-locked__desc { margin: 0; font-size: 0.875rem; color: var(--ink-soft, #6b6560); }

