/* ============================================================
   THE SIGNUP PROMISE  —  .qc-promise

   One sentence, stated inside every capture form on the site:

       "Free for the first 200. Founders keep it, forever. £29 after."

   It gets its own file for the same reason .qc-foot did: the three
   capture components live in three different stylesheets (styles.css
   for .cap-*, sections.css for .founding-*, workshop.css for .qcw-*),
   and one class declared three times, resolved by load order, is the
   parallel source of truth this project bans. One file, one rule, and
   every page with a form loads it.

   It is deliberately NOT fine print. The whole reason the sentence
   exists is so that nobody who signs up today can later feel they were
   charged for something they were promised free — and a promise set in
   .78rem grey under the button does not do that job. So: paper-100
   plate, struck ink edge, the price rubricated, at body size.

   Needs tokens.css and nothing else.
   ============================================================ */

.qc-promise{
  display:block;
  margin:1rem 0 0;
  padding:.7rem .9rem;
  background:var(--paper-100);
  border:1px solid var(--ink-500);
  /* the rubricator's mark down the edge — this is the important line */
  border-left:3px solid var(--rubric-deep);
  border-radius:2px;
  box-shadow:2px 2px 0 rgba(28,19,10,.12);

  font-family:var(--font-body);
  font-size:clamp(.9rem,1.35vw,.98rem);
  line-height:1.5;
  color:var(--ink-900);
  max-width:38rem;
}
/* "Free for the first 200" carries the whole sentence; the price is the part a
   person needs to have seen, so it is the one rubricated phrase. */
.qc-promise b{ font-weight:700;color:var(--ink-900); }
.qc-promise .qc-promise__price{ color:var(--rubric-deep);font-weight:700;font-style:normal; }

/* On the dark workshop panels the plate would glare, so it sits as ink on the
   same parchment the panel already uses. Same object, one plate darker. */
.qcw-vault .qc-promise{ margin:.85rem 0 0; }

/* The honeypot. A field no sighted user sees, no keyboard user reaches, and no
   screen reader announces — but a form-filling bot fills, because it fills every
   input it finds. Positioned off-canvas rather than display:none, which some
   bots specifically skip. */
.qc-hp{
  position:absolute !important;
  left:-9999px !important;
  width:1px !important;
  height:1px !important;
  opacity:0 !important;
  pointer-events:none !important;
}
