/* =========================================================================
   TPR Quiz — styles. Everything is scoped under .tprq so it can't collide
   with the GeneratePress theme (or leak out into it).

   THEME TOKENS: edit the values in the .tprq block below to match TPR.
   `font-family: inherit` means the widget picks up your theme font on the
   live site automatically; the system stack is only a standalone fallback.
   ========================================================================= */

/* Tokens live on BOTH .tprq and .tprq-modal, because the summary modal is
   mounted on <body> (outside .tprq) so it can't be clipped by the container.
   Edit colors here once and both the widget and the modal update. */
.tprq, .tprq-modal {
  /* ---- TPR brand tokens (sampled from testprepreview.com) ---- */
  --tprq-accent:        #0870c8;   /* TPR blue: buttons, selected, progress */
  --tprq-accent-ink:    #ffffff;   /* text/icon on blue                     */
  --tprq-accent-soft:   #e6f1fb;   /* selected choice background            */
  --tprq-cta:           #f8c800;   /* TPR "Start Test" yellow: full-test CTA*/
  --tprq-cta-ink:       #1a1c20;   /* dark text on yellow                   */
  --tprq-correct:       #1a7f43;   /* right answers (not a TPR-defined color)*/
  --tprq-correct-soft:  #e6f4ec;
  --tprq-incorrect:     #c1372c;   /* wrong answers (not a TPR-defined color)*/
  --tprq-incorrect-soft:#fceceb;
  --tprq-text:          #333333;
  --tprq-muted:         #5b6470;
  --tprq-surface:       #ffffff;
  --tprq-panel:         #f4f6f8;
  --tprq-border:        #d9dde3;
  --tprq-radius:        10px;
  --tprq-shadow:        0 1px 2px rgba(16,24,40,.06), 0 1px 3px rgba(16,24,40,.08);
  /* Native system UI font: Segoe UI on Windows, San Francisco on macOS/iOS,
     Roboto on Android. Not a specific/downloaded face. */
  --tprq-font: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
}

.tprq {
  font-family: var(--tprq-font); /* native system stack (see --tprq-font) */
  color: var(--tprq-text);
  max-width: 720px;
  margin: 1.5rem auto;
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
}

/* Base resets. Scoped with :where() so they carry ZERO specificity: they
   tidy UA/theme defaults but can never outrank the component classes below.
   (A type-qualified reset like `.tprq button` DID outrank `.tprq-next`,
   which is what stripped every button down to plain text.) They apply under
   both roots so the body-mounted modal is covered too. */
:where(.tprq, .tprq-modal) *,
:where(.tprq, .tprq-modal) *::before,
:where(.tprq, .tprq-modal) *::after { box-sizing: border-box; }
:where(.tprq, .tprq-modal) button,
:where(.tprq, .tprq-modal) input,
:where(.tprq, .tprq-modal) ol,
:where(.tprq, .tprq-modal) ul,
:where(.tprq, .tprq-modal) li,
:where(.tprq, .tprq-modal) p,
:where(.tprq, .tprq-modal) h3 { margin: 0; }
:where(.tprq, .tprq-modal) ol,
:where(.tprq, .tprq-modal) ul { padding: 0; list-style: none; }
:where(.tprq, .tprq-modal) button,
:where(.tprq, .tprq-modal) input { font: inherit; color: inherit; }
:where(.tprq, .tprq-modal) button { cursor: pointer; -webkit-appearance: none; appearance: none; }

/* Buttons that need a fill/border set their own (single-class, so they win
   without a type-qualified reset fighting them). Chromeless ones opt out. */
.tprq-next, .tprq-summary-btn, .tprq-modal-close, .tprq-order-handle { border: none; }
.tprq-modal-close, .tprq-order-handle { background: transparent; }

:where(.tprq, .tprq-modal) :focus-visible { outline: 3px solid color-mix(in srgb, var(--tprq-accent) 45%, white); outline-offset: 2px; }

/* ---------- progress ---------- */
.tprq-progress { margin-bottom: .9rem; }
.tprq-progress-text { display: block; font-size: .8rem; font-weight: 600; letter-spacing: .02em; text-transform: uppercase; color: var(--tprq-muted); margin-bottom: .4rem; }
.tprq-progress-bar { height: 5px; border-radius: 999px; background: var(--tprq-border); overflow: hidden; }
.tprq-progress-fill { height: 100%; background: var(--tprq-accent); border-radius: 999px; transition: width .35s ease; }

/* ---------- card / prompt ---------- */
.tprq-card { background: var(--tprq-surface); border: 1px solid var(--tprq-border); border-radius: var(--tprq-radius); box-shadow: var(--tprq-shadow); padding: 1.25rem 1.35rem 1.4rem; outline: none; }
.tprq-qmeta { font-size: .78rem; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--tprq-accent); margin-bottom: .5rem; }
.tprq-prompt { font-size: 1.12rem; font-weight: 600; margin-bottom: 1rem; }
.tprq-prompt sup, .tprq-prompt sub { font-weight: 400; }
.tprq-passage { background: var(--tprq-panel); border-left: 3px solid var(--tprq-border); padding: .75rem .9rem; border-radius: 6px; margin-bottom: 1rem; font-size: .96rem; }
.tprq-passage p { margin-bottom: .65rem; }
.tprq-passage p:last-child { margin-bottom: 0; }
.tprq-passage strong, .tprq-passage b { font-weight: 600; }
.tprq-passage em { font-style: italic; }

/* The global reset strips list markers/indent (to avoid theme conflicts). Restore
   them inside author-authored content so <ul>/<ol> render as real lists. */
.tprq-prompt ul, .tprq-passage ul, .tprq-sum-prompt ul, .tprq-sum-passage ul, .tprq-sum-exp-body ul { list-style: disc; padding-left: 1.4em; margin: .45em 0; }
.tprq-prompt ol, .tprq-passage ol, .tprq-sum-prompt ol, .tprq-sum-passage ol, .tprq-sum-exp-body ol { list-style: decimal; padding-left: 1.5em; margin: .45em 0; }
.tprq-prompt li, .tprq-passage li, .tprq-sum-prompt li, .tprq-sum-passage li, .tprq-sum-exp-body li { display: list-item; margin: .2em 0; }
.tprq-hint { font-size: .85rem; color: var(--tprq-muted); margin-bottom: .7rem; }

/* ---------- choices (MC / MS) ---------- */
.tprq-choices { display: flex; flex-direction: column; gap: .55rem; }
.tprq-choice { display: flex; align-items: flex-start; gap: .7rem; width: 100%; text-align: left; padding: .7rem .85rem; border: 1.5px solid var(--tprq-border); border-radius: 8px; background: var(--tprq-surface); transition: border-color .12s, background .12s; }
.tprq-choice:hover { border-color: color-mix(in srgb, var(--tprq-accent) 55%, var(--tprq-border)); background: color-mix(in srgb, var(--tprq-accent) 4%, white); }
.tprq-choice.is-selected { border-color: var(--tprq-accent); background: var(--tprq-accent-soft); }
.tprq-choice-mark { flex: 0 0 auto; width: 1.6rem; height: 1.6rem; border-radius: 50%; border: 1.5px solid var(--tprq-border); display: flex; align-items: center; justify-content: center; font-size: .85rem; font-weight: 700; color: var(--tprq-muted); background: var(--tprq-surface); }
.tprq-choice.is-selected .tprq-choice-mark { background: var(--tprq-accent); border-color: var(--tprq-accent); color: var(--tprq-accent-ink); }
.tprq-choice-mark--box { border-radius: 5px; }
.tprq-choice.is-selected .tprq-choice-mark--box::after { content: "\2713"; }
.tprq-choice-body { padding-top: .12rem; }
/* Themes often bold and/or uppercase <button> text; choices are buttons, so force
   normal typography with enough specificity to win over theme rules. */
.tprq .tprq-choice, .tprq .tprq-choice-body { font-weight: 400; text-transform: none; letter-spacing: normal; }

/* ---------- fill in the blank ---------- */
.tprq-fib { display: flex; align-items: center; gap: .6rem; flex-wrap: wrap; }
.tprq-input { padding: .65rem .8rem; border: 1.5px solid var(--tprq-border); border-radius: 8px; min-width: 12rem; max-width: 100%; background: var(--tprq-surface); }
.tprq-input:focus { border-color: var(--tprq-accent); outline: none; }
.tprq-fib-unit { color: var(--tprq-muted); font-weight: 600; }

/* ---------- hot spot ---------- */
.tprq-hs-frame { position: relative; display: inline-block; max-width: 100%; border: 1px solid var(--tprq-border); border-radius: 8px; overflow: visible; background: var(--tprq-panel); }
.tprq-hs-media { display: block; max-width: 100%; height: auto; border-radius: 7px; }
.tprq-hs-media svg { display: block; width: 100%; height: auto; border-radius: 7px; }
.tprq-hs-region { position: absolute; border: 2.5px solid color-mix(in srgb, var(--tprq-accent) 75%, transparent); border-radius: 6px; background: color-mix(in srgb, var(--tprq-accent) 18%, transparent); box-shadow: 0 1px 6px rgba(16,24,40,.35); transition: background .12s, border-color .12s, box-shadow .12s; }
.tprq-hs-region:hover { background: color-mix(in srgb, var(--tprq-accent) 30%, transparent); border-color: var(--tprq-accent); box-shadow: 0 2px 12px rgba(16,24,40,.45); }
.tprq-hs-region.is-selected { background: color-mix(in srgb, var(--tprq-accent) 42%, transparent); border-color: var(--tprq-accent); box-shadow: 0 2px 12px rgba(16,24,40,.45); }
.tprq-hs-region.is-correct { background: color-mix(in srgb, var(--tprq-correct) 42%, transparent); border-color: var(--tprq-correct); box-shadow: 0 2px 12px rgba(16,24,40,.42); }
.tprq-hs-region.is-wrong { background: color-mix(in srgb, var(--tprq-incorrect) 40%, transparent); border-color: var(--tprq-incorrect); box-shadow: 0 2px 12px rgba(16,24,40,.42); }
.tprq-hs-dot { position: absolute; inset: 0; margin: auto; width: 10px; height: 10px; border-radius: 50%; background: var(--tprq-accent); opacity: 0; }
.tprq-hs-region.is-selected .tprq-hs-dot { opacity: 1; }

/* ---------- ordered response (two-box, TEAS-style) ---------- */
.tprq-o2-cols { display: flex; gap: 1rem; align-items: stretch; }
.tprq-o2-box { flex: 1 1 0; min-width: 0; min-height: 12rem; display: flex; flex-direction: column; gap: .5rem; padding: .65rem; border: 1.5px solid #9aa1ab; border-radius: 8px; }
.tprq-o2-source { background: var(--tprq-panel); }
.tprq-o2-answer { background: var(--tprq-surface); }
.tprq-o2-box.is-empty { justify-content: center; }
.tprq-o2-answer.is-empty::before { content: "Add options here, in order"; display: block; text-align: center; color: var(--tprq-muted); font-size: .9rem; padding: 1rem; }
.tprq-o2-source.is-empty::before { content: "All options placed"; display: block; text-align: center; color: var(--tprq-muted); font-size: .9rem; padding: 1rem; }

.tprq-o2-item { display: flex; align-items: center; gap: .5rem; padding: .6rem .7rem; border: 1px solid color-mix(in srgb, var(--tprq-accent) 32%, var(--tprq-border)); border-radius: 6px; background: var(--tprq-surface); cursor: grab; }
.tprq-o2-source .tprq-o2-item { position: relative; justify-content: center; text-align: center; padding-left: 1.9rem; padding-right: 1.9rem; }
.tprq-o2-source .tprq-o2-item::after { content: "+"; position: absolute; right: .55rem; top: 50%; transform: translateY(-50%); width: 1.3rem; height: 1.3rem; border-radius: 50%; background: var(--tprq-accent-soft); color: var(--tprq-accent); font-weight: 700; display: flex; align-items: center; justify-content: center; font-size: .95rem; opacity: .7; }
.tprq-o2-source .tprq-o2-item:hover { border-color: var(--tprq-accent); background: var(--tprq-accent-soft); }
.tprq-o2-source .tprq-o2-item:hover::after { opacity: 1; }
.tprq-o2-source .tprq-o2-num { display: none; }
.tprq-o2-text { flex: 1 1 auto; }
.tprq-o2-source .tprq-o2-text { flex: 0 1 auto; }
.tprq-o2-num { flex: 0 0 auto; width: 1.4rem; height: 1.4rem; border-radius: 50%; background: var(--tprq-accent-soft); color: var(--tprq-accent); font-weight: 700; font-size: .78rem; display: flex; align-items: center; justify-content: center; }
/* SortableJS drag states */
.tprq-o2-ghost { opacity: .35; }              /* placeholder gap at the drop position */
.tprq-o2-chosen { border-color: var(--tprq-accent); }
.tprq-o2-drag { cursor: grabbing; box-shadow: var(--tprq-shadow); opacity: .98; }
@media (max-width: 520px) {
  .tprq-o2-cols { flex-direction: column; }
  /* On mobile the boxes stack, so size them to their content instead of the
     desktop equal-height flex (which was pushing options out of the box), and
     override the tall inline min-height that keeps the two columns level on desktop. */
  .tprq-o2-box { flex: none; min-height: 6rem !important; }
}

/* ---------- nav button ---------- */
.tprq-nav { display: flex; justify-content: space-between; align-items: center; gap: 1rem; margin-top: 1.1rem; }
.tprq-navbtns { display: flex; align-items: center; gap: .6rem; }
.tprq-back { padding: .7rem 1.15rem; border-radius: 8px; background: var(--tprq-surface); color: var(--tprq-muted); border: 1.5px solid var(--tprq-border); font-weight: 600; }
.tprq-back:hover { border-color: var(--tprq-accent); color: var(--tprq-accent); background: var(--tprq-accent-soft); }
.tprq-report { font-size: .85rem; color: var(--tprq-muted); text-align: left; }
.tprq .tprq-report-link, .tprq-modal .tprq-report-link { color: var(--tprq-accent); text-decoration: underline; font-weight: 400; }
.tprq .tprq-report-link:hover, .tprq-modal .tprq-report-link:hover { text-decoration: none; }
.tprq-report--modal { text-align: center; margin-top: .9rem; font-size: .85rem; color: var(--tprq-muted); }
.tprq-modal-retake { text-align: center; margin-top: 1.3rem; }
.tprq-next { padding: .7rem 1.6rem; border-radius: 8px; background: var(--tprq-accent); color: var(--tprq-accent-ink); font-weight: 700; letter-spacing: .01em; transition: opacity .15s, transform .05s, filter .15s; }
.tprq-next:hover:not(:disabled) { filter: brightness(1.06); }
.tprq-next:active:not(:disabled) { transform: translateY(1px); }
.tprq-next:disabled { opacity: .38; cursor: not-allowed; }

/* ---------- results ---------- */
.tprq-results { background: var(--tprq-surface); border: 1px solid var(--tprq-border); border-radius: var(--tprq-radius); box-shadow: var(--tprq-shadow); padding: 1.5rem 1.4rem; text-align: center; }
.tprq-results-head { font-size: 1.35rem; font-weight: 800; margin-bottom: .9rem; }
.tprq-results-head.is-perfect { color: var(--tprq-correct); }
.tprq-scorebar { height: 8px; border-radius: 999px; background: var(--tprq-border); overflow: hidden; margin: 0 auto 1.3rem; max-width: 320px; }
.tprq-scorebar-fill { height: 100%; background: var(--tprq-accent); transition: width .5s ease; }
.tprq-scorebar-fill.is-perfect { background: var(--tprq-correct); }
.tprq-result-list { display: flex; flex-direction: column; gap: .45rem; text-align: left; max-width: 340px; margin: 0 auto 1.4rem; }
.tprq-result-item { display: flex; align-items: center; gap: .65rem; padding: .55rem .7rem; border-radius: 8px; border: 1px solid var(--tprq-border); }
.tprq-result-item.is-correct { background: var(--tprq-correct-soft); border-color: color-mix(in srgb, var(--tprq-correct) 30%, var(--tprq-border)); }
.tprq-result-item.is-wrong { background: var(--tprq-incorrect-soft); border-color: color-mix(in srgb, var(--tprq-incorrect) 28%, var(--tprq-border)); }
.tprq-result-icon { flex: 0 0 auto; width: 1.4rem; height: 1.4rem; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-weight: 800; color: #fff; font-size: .8rem; }
.tprq-result-item.is-correct .tprq-result-icon { background: var(--tprq-correct); }
.tprq-result-item.is-wrong .tprq-result-icon { background: var(--tprq-incorrect); }
.tprq-result-label { flex: 1 1 auto; font-weight: 600; }
.tprq-result-status { font-size: .85rem; font-weight: 600; color: var(--tprq-muted); }
.tprq-results-actions { display: flex; gap: .6rem; justify-content: center; flex-wrap: wrap; }
.tprq-summary-btn { padding: .7rem 1.6rem; border-radius: 8px; background: var(--tprq-accent); color: var(--tprq-accent-ink); font-weight: 700; }
.tprq-summary-btn:hover { filter: brightness(1.06); }
.tprq-retake-btn { padding: .7rem 1.6rem; border-radius: 8px; background: var(--tprq-surface); color: var(--tprq-accent); font-weight: 700; border: 1.5px solid var(--tprq-accent); }
.tprq-retake-btn:hover { background: var(--tprq-accent-soft); }

/* ---------- summary modal ---------- */
body.tprq-modal-open { overflow: hidden; }
.tprq-modal { position: fixed; inset: 0; z-index: 2147483000; background: rgba(16,20,28,.55); display: flex; align-items: flex-start; justify-content: center; padding: 2.5rem 1rem; overflow-y: auto; -webkit-overflow-scrolling: touch; font-family: var(--tprq-font); line-height: 1.5; }
.tprq-modal-panel { font-family: inherit; background: var(--tprq-surface); color: var(--tprq-text); width: 100%; max-width: 640px; border-radius: 14px; box-shadow: 0 12px 40px rgba(16,24,40,.28); overflow: hidden; }
.tprq-modal-topbar { position: sticky; top: 0; display: flex; align-items: center; justify-content: space-between; padding: 1rem 1.25rem; background: var(--tprq-surface); border-bottom: 1px solid var(--tprq-border); }
.tprq-modal-title { font-size: 1.1rem; font-weight: 800; }
.tprq-modal-close { width: 2.2rem; height: 2.2rem; border-radius: 8px; font-size: 1.4rem; line-height: 1; color: var(--tprq-muted); }
.tprq-modal-close:hover { background: var(--tprq-panel); color: var(--tprq-text); }
.tprq-modal-body { padding: 1.25rem; }

.tprq-sum-block { border: 1px solid var(--tprq-border); border-left-width: 4px; border-radius: 10px; padding: 1rem 1.1rem; margin-bottom: 1rem; }
.tprq-sum-block.is-correct { border-left-color: var(--tprq-correct); }
.tprq-sum-block.is-wrong { border-left-color: var(--tprq-incorrect); }
.tprq-sum-head { display: flex; align-items: center; justify-content: space-between; gap: .6rem; margin-bottom: .55rem; }
.tprq-sum-num { font-size: .78rem; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; color: var(--tprq-muted); }
.tprq-sum-badge { font-size: .78rem; font-weight: 700; padding: .18rem .55rem; border-radius: 999px; }
.tprq-sum-badge.is-correct { background: var(--tprq-correct-soft); color: var(--tprq-correct); }
.tprq-sum-badge.is-wrong { background: var(--tprq-incorrect-soft); color: var(--tprq-incorrect); }
.tprq-sum-prompt { font-weight: 600; margin-bottom: .7rem; }
.tprq-sum-passage-wrap { margin: 0 0 .75rem; }
.tprq-sum-passage { position: relative; background: var(--tprq-panel); border-left: 3px solid var(--tprq-border); padding: .55rem .7rem; border-radius: 6px; font-size: .93rem; }
.tprq-sum-passage.is-clamped { max-height: 4.6em; overflow: hidden; }
/* fade colour matches --tprq-panel (#f4f6f8); update if you change that token */
.tprq-sum-passage.is-clamped::after { content: ''; position: absolute; left: 0; right: 0; bottom: 0; height: 2.4em; background: linear-gradient(to bottom, rgba(244,246,248,0), rgba(244,246,248,1)); pointer-events: none; border-radius: 0 0 6px 6px; }
.tprq-sum-passage.is-clamped.is-expanded { max-height: none; overflow: visible; }
.tprq-sum-passage.is-clamped.is-expanded::after { display: none; }
.tprq-sum-passage-toggle { margin-top: .35rem; background: none; border: none; color: var(--tprq-accent); font-weight: 600; font-size: .85rem; cursor: pointer; padding: .1rem 0; text-decoration: underline; }
.tprq-sum-passage-toggle:hover { text-decoration: none; }

.tprq-review-choices { display: flex; flex-direction: column; gap: .35rem; margin-bottom: .3rem; }
.tprq-rc { display: flex; align-items: center; gap: .55rem; padding: .45rem .6rem; border-radius: 7px; border: 1px solid var(--tprq-border); font-size: .94rem; }
.tprq-rc.is-correct { background: var(--tprq-correct-soft); border-color: color-mix(in srgb, var(--tprq-correct) 30%, var(--tprq-border)); }
.tprq-rc.is-wrong { background: var(--tprq-incorrect-soft); border-color: color-mix(in srgb, var(--tprq-incorrect) 28%, var(--tprq-border)); }
.tprq-rc-mark { flex: 0 0 auto; width: 1.35rem; height: 1.35rem; border-radius: 50%; border: 1px solid var(--tprq-border); display: flex; align-items: center; justify-content: center; font-size: .75rem; font-weight: 700; color: var(--tprq-muted); }
.tprq-rc-mark--box { border-radius: 4px; }
.tprq-rc.is-correct .tprq-rc-mark { background: var(--tprq-correct); border-color: var(--tprq-correct); color: #fff; }
.tprq-rc.is-wrong .tprq-rc-mark { background: var(--tprq-incorrect); border-color: var(--tprq-incorrect); color: #fff; }
.tprq-rc-body { flex: 1 1 auto; }
.tprq-tag { flex: 0 0 auto; font-size: .72rem; font-weight: 700; color: var(--tprq-muted); }

.tprq-review-fib .tprq-rf-line, .tprq-review-hs .tprq-rf-line { font-size: .94rem; margin-bottom: .25rem; }
.tprq-rf-line.is-correct { color: var(--tprq-correct); }
.tprq-rf-line.is-wrong { color: var(--tprq-incorrect); }
.tprq-rf-label { font-weight: 700; }
.tprq-rf-val { font-weight: 600; }
.tprq-review-hs { margin-bottom: .3rem; }
.tprq-review-hs .tprq-hs-frame { margin-bottom: .6rem; }

.tprq-review-order { display: flex; flex-direction: column; gap: .3rem; margin: .3rem 0 .7rem; }
.tprq-ro { display: flex; align-items: center; gap: .5rem; counter-increment: ro; padding: .4rem .6rem; border-radius: 7px; border: 1px solid var(--tprq-border); font-size: .94rem; }
.tprq-ro::before { content: counter(ro) "."; font-weight: 700; color: var(--tprq-muted); }
.tprq-review-order { counter-reset: ro; }
.tprq-ro.is-correct { background: var(--tprq-correct-soft); border-color: color-mix(in srgb, var(--tprq-correct) 30%, var(--tprq-border)); }
.tprq-ro.is-wrong { background: var(--tprq-incorrect-soft); border-color: color-mix(in srgb, var(--tprq-incorrect) 28%, var(--tprq-border)); }

.tprq-sum-exp { margin-top: .7rem; padding: .7rem .8rem; background: var(--tprq-panel); border-radius: 8px; }
.tprq-sum-exp-label { display: block; font-size: .72rem; font-weight: 800; letter-spacing: .05em; text-transform: uppercase; color: var(--tprq-muted); margin-bottom: .25rem; }
.tprq-sum-exp-body { font-size: .94rem; }

/* ---------- CTA ---------- */
.tprq-cta { margin-top: 1.4rem; padding: 1rem 1rem 0; text-align: center; background: transparent; border: none; }
.tprq-cta-blurb { font-weight: 600; margin-bottom: .9rem; }
.tprq-cta-btn { display: inline-block; padding: .8rem 1.9rem; border-radius: 8px; background: var(--tprq-cta); color: var(--tprq-cta-ink); font-weight: 600; text-decoration: none; box-shadow: var(--tprq-shadow); transition: transform .12s ease, box-shadow .12s ease; }
.tprq-modal .tprq-cta-btn, .tprq .tprq-cta-btn { color: var(--tprq-cta-ink); }
.tprq-modal .tprq-cta-btn:hover, .tprq .tprq-cta-btn:hover { color: var(--tprq-cta-ink); transform: translateY(-2px); box-shadow: 0 7px 18px rgba(16,24,40,.20); text-decoration: none; }

/* ---------- responsive ---------- */
@media (max-width: 520px) {
  .tprq-prompt { font-size: 1.04rem; }
  .tprq-card { padding: 1.05rem 1rem 1.15rem; }
  .tprq-summary-btn, .tprq-retake-btn { width: 100%; }
  .tprq-nav { flex-direction: column-reverse; align-items: stretch; }
  .tprq-navbtns { width: 100%; }
  .tprq-navbtns .tprq-next { flex: 1; }
  .tprq-report { text-align: center; }
  .tprq-results-actions { flex-direction: column; }
}

/* ---------- crawlable server-rendered fallback ----------
   The plugin also prints the full quiz (all questions, correct answers, and
   explanations) as plain HTML inside the container, so search engines and LLMs
   can read it from the page source. Once JS enhances the container it's hidden. */
.tprq-enhanced .tprq-ssr { display: none; }
.tprq-ssr { color: var(--tprq-text); font-family: var(--tprq-font); line-height: 1.5; }
.tprq-ssr-list { margin: 1rem 0; padding-left: 1.4rem; list-style: decimal; }
.tprq-ssr-q { margin: 0 0 1.3rem; padding-left: .2rem; }
.tprq-ssr-prompt { font-weight: 600; margin-bottom: .4rem; }
.tprq-ssr-passage { background: var(--tprq-panel); border-left: 3px solid var(--tprq-border); padding: .5rem .7rem; border-radius: 6px; margin: .4rem 0; }
.tprq-ssr-choices { margin: .3rem 0; padding-left: 1.2rem; list-style: disc; }
.tprq-ssr-choices .tprq-ssr-correct { font-weight: 600; color: var(--tprq-correct); }
.tprq-ssr-answer { margin: .3rem 0; }
.tprq-ssr-exp { margin-top: .45rem; font-size: .95rem; }
.tprq-ssr-img { max-width: 100%; height: auto; border: 1px solid var(--tprq-border); border-radius: 6px; }

@media (prefers-reduced-motion: reduce) {
  .tprq *, .tprq *::before, .tprq *::after { transition: none !important; }
}
