/* ═══════════════════════════════════════════════════════════════
   QSB Quiz & Survey Builder — Frontend Styles
   ═══════════════════════════════════════════════════════════════ */

/* ── Variables ─────────────────────────────────────────────────── */
.qsb-wrap {
  --qsb-primary:   #2563eb;
  --qsb-primary-h: #1d4ed8;
  --qsb-primary:   var(--qsb-accent, #2563eb);
  --qsb-pale:      color-mix(in srgb, var(--qsb-primary) 8%, #fff);
  --qsb-ring:      color-mix(in srgb, var(--qsb-primary) 18%, transparent);
  --qsb-success:   #16a34a;
  --qsb-error:     #dc2626;
  --qsb-border:    #e5e7eb;
  --qsb-bg:        #f9fafb;
  --qsb-radius:    12px;
  --qsb-font:      -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  font-family: var(--qsb-font);
  max-width: 680px;
  margin: 2rem auto;
  padding: 2rem;
  background: #fff;
  border: 1px solid var(--qsb-border);
  border-radius: var(--qsb-radius);
  box-shadow: 0 2px 20px rgba(0,0,0,.07);
}

/* ── Title ─────────────────────────────────────────────────────── */
.qsb-title {
  margin: 0 0 1.5rem;
  font-size: 1.45rem;
  font-weight: 700;
  color: #111827;
  line-height: 1.3;
}

/* ── Progress bar ──────────────────────────────────────────────── */
.qsb-progress-wrap {
  background: #e5e7eb;
  border-radius: 99px;
  height: 7px;
  margin-bottom: 1.5rem;
  position: relative;
  overflow: visible;
}
.qsb-progress-bar {
  height: 100%;
  border-radius: 99px;
  background: linear-gradient(90deg, var(--qsb-primary), color-mix(in srgb, var(--qsb-primary) 70%, #7c3aed));
  transition: width .5s cubic-bezier(.4,0,.2,1);
  position: relative;
}
.qsb-progress-bar::after {
  content: '';
  position: absolute;
  right: -1px; top: 50%;
  transform: translateY(-50%);
  width: 13px; height: 13px;
  border-radius: 50%;
  background: var(--qsb-primary);
  border: 2px solid #fff;
  box-shadow: 0 0 0 2px var(--qsb-primary);
  transition: opacity .3s;
}
.qsb-progress-bar[style*="width: 0"]::after,
.qsb-progress-bar[style*="width:0"]::after { opacity: 0; }
.qsb-progress-label {
  position: absolute;
  right: 0; top: -22px;
  font-size: 11.5px;
  color: #9ca3af;
  font-weight: 600;
}

/* ── Question blocks ───────────────────────────────────────────── */
.qsb-question-block {
  margin-bottom: 1.5rem;
  padding-bottom: 1.5rem;
  border-bottom: 1px solid #f0f0f0;
}
.qsb-question-block:last-of-type { border-bottom: none; }
.qsb-q-hidden  { display: none !important; }

/* slide-in on step change */
@keyframes qsb-slide-in {
  from { opacity: 0; transform: translateX(16px); }
  to   { opacity: 1; transform: translateX(0); }
}
.qsb-q-enter { animation: qsb-slide-in .32s cubic-bezier(.4,0,.2,1) both; }

.qsb-q-label {
  display: block;
  font-weight: 600;
  color: #374151;
  margin-bottom: .7rem;
  font-size: 1.05rem;
  line-height: 1.4;
}
.qsb-required-mark { color: var(--qsb-error); margin-left: 2px; }
.qsb-label-error   { color: #dc2626 !important; }
.qsb-q-step {
  display: inline-flex; align-items: center; justify-content: center;
  width: 22px; height: 22px; border-radius: 50%;
  background: var(--qsb-primary); color: #fff;
  font-size: 11px; font-weight: 700; margin-right: 6px; flex-shrink: 0;
}

/* ── Standard inputs ───────────────────────────────────────────── */
.qsb-input, .qsb-textarea, .qsb-select {
  width: 100%; padding: .65rem .9rem;
  border: 1.5px solid var(--qsb-border);
  border-radius: 8px; font-size: 1rem;
  transition: border-color .18s, box-shadow .18s;
  box-sizing: border-box; font-family: var(--qsb-font);
}
.qsb-input--short { width: 120px; }
.qsb-input:focus, .qsb-textarea:focus, .qsb-select:focus {
  outline: none;
  border-color: var(--qsb-primary);
  box-shadow: 0 0 0 3px var(--qsb-ring);
}

/* ── Radio / checkbox options ──────────────────────────────────── */
.qsb-options-group { display: flex; flex-direction: column; gap: 8px; }
.qsb-option {
  display: flex; align-items: center; gap: .55rem; cursor: pointer;
  padding: .55rem .85rem;
  border: 1.5px solid var(--qsb-border);
  border-radius: 8px;
  transition: background .15s, border-color .15s;
}
.qsb-option:hover { background: var(--qsb-pale); border-color: var(--qsb-primary); }
.qsb-option input { accent-color: var(--qsb-primary); width: 1.1rem; height: 1.1rem; }

/* ── Card Select ───────────────────────────────────────────────── */
.qsb-card-select-group { display: flex; flex-direction: column; gap: 9px; }
.qsb-card-option { display: block; cursor: pointer; }
.qsb-card-option input[type="radio"] { position: absolute; opacity: 0; width: 0; height: 0; }
.qsb-card-inner {
  display: flex; align-items: center; gap: 14px;
  padding: 13px 16px;
  border: 1.5px solid var(--qsb-border);
  border-radius: 12px; background: #fff;
  transition: border-color .15s, background .15s, box-shadow .15s, transform .12s;
}
.qsb-card-option:hover .qsb-card-inner {
  border-color: var(--qsb-primary);
  background: var(--qsb-pale);
  box-shadow: 0 0 0 3px var(--qsb-ring);
  transform: translateX(2px);
}
.qsb-card-option input:checked + .qsb-card-inner {
  border-color: var(--qsb-primary);
  background: var(--qsb-pale);
  box-shadow: 0 0 0 3px var(--qsb-ring);
}
.qsb-card-ico {
  font-size: 1.7rem; line-height: 1;
  width: 46px; height: 46px;
  display: flex; align-items: center; justify-content: center;
  background: #f3f4f6; border-radius: 10px; flex-shrink: 0;
  transition: background .15s;
}
.qsb-card-option input:checked + .qsb-card-inner .qsb-card-ico {
  background: color-mix(in srgb, var(--qsb-primary) 14%, #fff);
}
.qsb-card-text { display: flex; flex-direction: column; gap: 2px; flex: 1; }
.qsb-card-ttl {
  font-weight: 600; font-size: 1rem; color: #111827; line-height: 1.3;
  transition: color .15s;
}
.qsb-card-sub  { font-size: .85rem; color: #6b7280; }
.qsb-card-option input:checked + .qsb-card-inner .qsb-card-ttl { color: var(--qsb-primary); }

/* ── Star Rating ───────────────────────────────────────────────── */
.qsb-rating { display: flex; flex-direction: row-reverse; gap: 4px; width: fit-content; }
.qsb-rating input { display: none; }
.qsb-rating label { font-size: 2rem; color: #d1d5db; cursor: pointer; transition: color .15s; }
.qsb-rating label:hover,
.qsb-rating label:hover ~ label,
.qsb-rating input:checked ~ label { color: #f59e0b; }

/* ── Nav buttons ───────────────────────────────────────────────── */
.qsb-pag-nav { display: flex; gap: 10px; margin-top: 1.5rem; align-items: center; }
.qsb-btn-prev, .qsb-btn-next {
  padding: .7rem 1.5rem; border-radius: 8px;
  font-size: .95rem; font-weight: 600;
  border: 2px solid var(--qsb-primary); cursor: pointer; transition: all .15s;
  font-family: var(--qsb-font);
}
.qsb-btn-prev { background: #fff; color: var(--qsb-primary); }
.qsb-btn-prev:hover { background: var(--qsb-primary); color: #fff; }
.qsb-btn-next { background: var(--qsb-primary); color: #fff; }
.qsb-btn-next:hover { opacity: .88; }

/* ── Submit button ─────────────────────────────────────────────── */
.qsb-submit-row { margin-top: 1.5rem; }
.qsb-submit-btn {
  background: var(--qsb-primary);
  color: #fff; border: none;
  padding: .8rem 2.2rem;
  font-size: 1rem; font-weight: 600;
  border-radius: 8px; cursor: pointer;
  transition: background .2s, transform .1s, opacity .2s;
  font-family: var(--qsb-font);
  display: inline-flex; align-items: center; gap: 8px;
}
.qsb-submit-btn:hover  { background: var(--qsb-primary-h); }
.qsb-submit-btn:active { transform: scale(.98); }
.qsb-submit-btn:disabled { opacity: .65; cursor: not-allowed; }

/* Spinner inside submit button */
@keyframes qsb-spin { to { transform: rotate(360deg); } }
.qsb-spinner {
  width: 16px; height: 16px;
  border: 2.5px solid rgba(255,255,255,.35);
  border-top-color: #fff;
  border-radius: 50%;
  animation: qsb-spin .6s linear infinite;
  flex-shrink: 0;
}

/* ── Error message ─────────────────────────────────────────────── */
.qsb-msg { margin-top: 1rem; padding: .75rem 1rem; border-radius: 8px; font-size: .95rem; }
.qsb-msg--error { background: #fef2f2; color: var(--qsb-error); border: 1px solid #fca5a5; }

/* ── Timer ─────────────────────────────────────────────────────── */
.qsb-timer {
  display: inline-flex; align-items: center; gap: 6px;
  background: #f3f4f6; border: 1px solid #e5e7eb; border-radius: 8px;
  padding: 5px 14px; font-size: .9rem; font-weight: 700; margin-bottom: 1rem; color: #374151;
}
.qsb-timer--urgent { background: #fef2f2; border-color: #fca5a5; color: #dc2626; animation: qsb-pulse 1s infinite; }
@keyframes qsb-pulse { 0%,100%{opacity:1} 50%{opacity:.6} }

/* ── Already responded / closed ────────────────────────────────── */
.qsb-already-responded, .qsb-closed-msg {
  padding: 1.5rem; background: var(--qsb-bg);
  border: 1px solid var(--qsb-border); border-radius: var(--qsb-radius);
  color: #374151; text-align: center;
}

/* ══════════════════════════════════════════════════════════════
   THANK-YOU / RESULT PANEL
   ══════════════════════════════════════════════════════════════ */
.qsb-thank-you { padding: .5rem 0; }

/* Header: icon + message shown BELOW the best match */
.qsb-ty-header {
  display: flex; flex-direction: column; align-items: center;
  text-align: center; margin: 1.25rem 0 .75rem;
}
.qsb-ty-icon {
  display: inline-flex; align-items: center; justify-content: center;
  width: 44px; height: 44px;
  background: var(--qsb-success);
  color: #fff; border-radius: 50%;
  font-size: 1.4rem; margin-bottom: .5rem;
  animation: qsb-pop .4s cubic-bezier(.34,1.56,.64,1) both;
}
@keyframes qsb-pop {
  from { transform: scale(.4); opacity: 0; }
  to   { transform: scale(1);  opacity: 1; }
}
.qsb-ty-message {
  font-size: .9rem; color: #9ca3af; margin: 0; text-align: center;
}

/* Score bar */
.qsb-score-display { margin: 1rem 0; text-align: center; }
.qsb-score-text    { font-weight: 700; font-size: 1.15rem; color: #111; margin-bottom: .5rem; }
.qsb-score-bar-wrap { background: #e5e7eb; border-radius: 99px; height: 12px; overflow: hidden; max-width: 320px; margin: 0 auto; }
.qsb-score-bar { height: 100%; background: var(--qsb-primary); border-radius: 99px; width: 0; transition: width .9s ease; }
.qsb-result-message { font-style: italic; color: #6b7280; margin-top: .75rem; text-align: center; }

/* ── Best Match result cards ───────────────────────────────────── */
.qsb-bestmatch { margin-bottom: 1.5rem; }

@keyframes qsb-result-in {
  from { opacity: 0; transform: translateY(18px); }
  to   { opacity: 1; transform: translateY(0); }
}

.qsb-bm-result {
  border: 1.5px solid var(--qsb-border);
  border-radius: 16px;
  background: #fff;
  overflow: hidden;
  margin-bottom: 14px;
  transition: box-shadow .2s, transform .2s;
  animation: qsb-result-in .45s cubic-bezier(.4,0,.2,1) both;
}
.qsb-bm-result:hover {
  box-shadow: 0 8px 28px rgba(0,0,0,.10);
  transform: translateY(-2px);
}

/* Best match card — highlighted */
.qsb-bm-result--best {
  border-color: var(--qsb-primary);
  box-shadow: 0 0 0 3px var(--qsb-ring), 0 4px 20px rgba(0,0,0,.08);
}
.qsb-bm-result--best:hover {
  box-shadow: 0 0 0 3px var(--qsb-ring), 0 10px 32px rgba(0,0,0,.14);
}

/* Top accent stripe on best card */
.qsb-bm-stripe {
  height: 5px;
  background: linear-gradient(90deg, var(--qsb-primary), color-mix(in srgb, var(--qsb-primary) 60%, #7c3aed));
}

.qsb-bm-result-inner { padding: 1.25rem 1.4rem; }

/* Featured image */
.qsb-bm-img {
  width: 100%; height: 180px;
  object-fit: cover; display: block;
  border-radius: 10px; margin-bottom: 1rem;
}

.qsb-bm-content { display: flex; flex-direction: column; gap: .65rem; }

/* Badge */
.qsb-bm-badge-wrap { display: flex; align-items: center; gap: 8px; }
.qsb-bm-badge {
  display: inline-flex; align-items: center; gap: 5px;
  background: linear-gradient(135deg, var(--qsb-primary), color-mix(in srgb, var(--qsb-primary) 60%, #7c3aed));
  color: #fff;
  font-size: .72rem; font-weight: 700;
  text-transform: uppercase; letter-spacing: .07em;
  padding: 4px 12px; border-radius: 99px;
}

/* Title */
.qsb-bm-title {
  font-size: 1.25rem; font-weight: 700;
  color: #111827; margin: 0;
  line-height: 1.25;
}
.qsb-bm-result--best .qsb-bm-title { font-size: 1.35rem; }

/* Match percent */
.qsb-bm-match-row {
  display: flex; align-items: center; gap: 10px;
}
.qsb-bm-match-label { font-size: .8rem; color: #9ca3af; font-weight: 500; white-space: nowrap; }
.qsb-bm-match-track {
  flex: 1; background: #e5e7eb;
  border-radius: 99px; height: 7px; overflow: hidden;
}
.qsb-bm-match-bar {
  height: 100%; border-radius: 99px; width: 0;
  background: linear-gradient(90deg, var(--qsb-primary), color-mix(in srgb, var(--qsb-primary) 60%, #7c3aed));
  transition: width 1s cubic-bezier(.4,0,.2,1);
}
.qsb-bm-match-pct { font-size: .85rem; font-weight: 700; color: var(--qsb-primary); white-space: nowrap; }

/* Description */
.qsb-bm-desc {
  font-size: .9rem; color: #4b5563;
  line-height: 1.65; margin: 0;
}

/* CTA button */
.qsb-bm-cta {
  display: inline-flex; align-items: center; gap: 7px;
  padding: .65rem 1.35rem;
  border-radius: 8px;
  font-size: .9rem; font-weight: 600;
  text-decoration: none;
  border: 1.5px solid var(--qsb-border);
  color: var(--qsb-primary);
  background: #fff;
  transition: all .15s;
  width: fit-content;
  margin-top: .25rem;
}
.qsb-bm-cta:hover { background: var(--qsb-pale); border-color: var(--qsb-primary); }
.qsb-bm-cta svg   { flex-shrink: 0; transition: transform .15s; }
.qsb-bm-cta:hover svg { transform: translateX(3px); }

/* Primary CTA (best match) */
.qsb-bm-cta--primary {
  background: var(--qsb-primary);
  border-color: var(--qsb-primary);
  color: #fff;
}
.qsb-bm-cta--primary:hover {
  background: var(--qsb-primary-h);
  border-color: var(--qsb-primary-h);
  color: #fff;
}

.qsb-bm-fallback-msg { text-align: center; color: #6b7280; font-style: italic; padding: 1rem; }

/* ── Quiz answer review ─────────────────────────────────────────── */
.qsb-answers-review { margin-top: 1.2rem; text-align: left; }
.qsb-ra-row {
  display: flex; align-items: flex-start; gap: 8px;
  padding: 9px 12px; border-radius: 8px; margin-bottom: 6px; font-size: .9rem;
}
.qsb-ra-correct { background: #f0fdf4; border: 1px solid #bbf7d0; color: #15803d; }
.qsb-ra-wrong   { background: #fef2f2; border: 1px solid #fca5a5; color: #b91c1c; }
.qsb-ra-icon    { font-size: 1rem; font-weight: 700; flex-shrink: 0; margin-top: 2px; }
.qsb-ra-body    { display: flex; flex-direction: column; gap: 2px; }
.qsb-ra-question     { font-weight: 600; margin-bottom: 2px; }
.qsb-ra-correct-lbl  { font-weight: 600; margin-top: 2px; }

/* ── Survey summary ─────────────────────────────────────────────── */
.qsb-summary { margin-top: 1.5rem; text-align: left; border-top: 1px solid #e5e7eb; padding-top: 1.2rem; }
.qsb-sum-title { font-size: 1rem; font-weight: 700; color: #374151; margin: 0 0 .75rem; }
.qsb-sum-row {
  display: flex; flex-direction: column; gap: 3px;
  padding: 9px 12px; background: #f9fafb;
  border: 1px solid #e5e7eb; border-radius: 8px; margin-bottom: 6px; font-size: .9rem;
}
.qsb-sum-label  { font-weight: 600; color: #374151; }
.qsb-sum-answer { color: var(--qsb-primary); word-break: break-word; }

/* ── Retake button ─────────────────────────────────────────────── */
.qsb-retake-wrap { margin-top: 1.5rem; padding-top: 1.25rem; border-top: 1px solid var(--qsb-border); text-align: center; }
.qsb-retake-btn {
  background: transparent;
  border: 1.5px solid var(--qsb-border);
  border-radius: 8px; padding: 8px 22px;
  font-size: .9rem; color: #9ca3af; cursor: pointer;
  font-family: var(--qsb-font); transition: all .15s;
}
.qsb-retake-btn:hover { border-color: var(--qsb-primary); color: var(--qsb-primary); background: var(--qsb-pale); }

/* ── Outcome card (outcome matching engine) ────────────────────── */
.qsb-outcome-card {
  margin-top: 1.5rem; padding: 1.25rem 1.5rem;
  background: var(--qsb-pale); border: 1.5px solid var(--qsb-primary);
  border-radius: 12px; text-align: left;
}
.qsb-oc-title  { font-size: 1.25rem; font-weight: 700; color: #111; margin-bottom: .5rem; }
.qsb-oc-desc   { font-size: .9rem; color: #6b7280; line-height: 1.7; margin-bottom: .9rem; }
.qsb-oc-traits { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 1rem; }
.qsb-oc-trait  { font-size: 12px; padding: 3px 10px; border-radius: 99px; background: #fff; color: #6b7280; border: 1px solid #e5e7eb; }
.qsb-oc-cta    { display: inline-block; background: var(--qsb-primary); color: #fff; text-decoration: none; font-size: .9rem; font-weight: 600; padding: 9px 20px; border-radius: 7px; transition: opacity .15s; }
.qsb-oc-cta:hover { opacity: .85; }

/* ── Mobile ─────────────────────────────────────────────────────── */
@media (max-width: 520px) {
  .qsb-wrap { padding: 1.25rem; margin: 1rem auto; border-radius: 12px; }
  .qsb-bm-title { font-size: 1.1rem; }
  .qsb-bm-result--best .qsb-bm-title { font-size: 1.2rem; }
  .qsb-bm-cta { width: 100%; justify-content: center; }
}

/* ── Email Gate ──────────────────────────────────────────────────── */
.qsb-email-gate {
  text-align: center;
  padding: 2.5rem 1.5rem;
  animation: qsb-fade-in .35s ease;
}
.qsb-email-gate-inner {
  max-width: 440px;
  margin: 0 auto;
}
.qsb-email-gate-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 64px; height: 64px;
  border-radius: 50%;
  background: var(--qsb-pale);
  font-size: 1.75rem;
  margin-bottom: 1rem;
  border: 2px solid var(--qsb-primary);
  color: var(--qsb-primary);
}
.qsb-email-gate-title {
  font-size: 1.3rem;
  font-weight: 700;
  color: #111;
  margin: 0 0 .4rem;
}
.qsb-email-gate-desc {
  font-size: .93rem;
  color: #6b7280;
  margin: 0 0 1.4rem;
}
.qsb-email-gate-field {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  justify-content: center;
}
.qsb-email-input {
  flex: 1 1 200px;
  padding: .65rem 1rem;
  border: 1.5px solid #d1d5db;
  border-radius: 8px;
  font-size: .95rem;
  outline: none;
  transition: border-color .15s;
  min-width: 0;
}
.qsb-email-input:focus {
  border-color: var(--qsb-primary);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--qsb-primary) 15%, transparent);
}
.qsb-email-submit-btn {
  flex: 0 0 auto;
  padding: .65rem 1.4rem;
  background: var(--qsb-primary);
  color: #fff;
  border: none;
  border-radius: 8px;
  font-size: .95rem;
  font-weight: 600;
  cursor: pointer;
  transition: opacity .15s;
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.qsb-email-submit-btn:hover:not(:disabled) { opacity: .85; }
.qsb-email-submit-btn:disabled { opacity: .6; cursor: not-allowed; }
.qsb-email-gate-error {
  margin-top: .75rem;
  font-size: .875rem;
  color: #dc2626;
}
@keyframes qsb-fade-in {
  from { opacity: 0; transform: translateY(10px); }
  to   { opacity: 1; transform: translateY(0); }
}
