/* Red Pen Prep · "Ink & Gold" (v129). One file for every page: tokens, type, atoms, the buy bar, and the skin that moves the
   older pages onto the same tokens. Gold is only for numbers, red only for corrections and the primary button. */
@font-face { font-family: "Archivo"; font-weight: 100 900; font-stretch: 62% 125%; font-display: swap; src: url(/fonts/interd-700.woff2) format("woff2"); }
@font-face { font-family: "Inter"; font-weight: 100 550; font-display: swap; src: url(/fonts/inter-400.woff2) format("woff2"); }
@font-face { font-family: "Inter"; font-weight: 551 1000; font-display: swap; src: url(/fonts/inter-600.woff2) format("woff2"); }
@font-face { font-family: "JBM"; font-weight: 100 450; font-display: swap; src: url(/fonts/inter-400.woff2) format("woff2"); }
@font-face { font-family: "JBM"; font-weight: 451 900; font-display: swap; src: url(/fonts/inter-600.woff2) format("woff2"); }

:root {
  --r-ink: #0A0A0B; --r-ink-1: #141416; --r-ink-2: #1D1D20;
  --r-line: rgba(245,245,246,.10); --r-line-2: rgba(245,245,246,.18);
  --r-ivory: #F5F5F6; --r-stone: #A1A1A9; --r-dim: #84848C;
  --r-pen: #F0453A; --r-pen-btn: #D9342B; --r-pen-hov: #E23C32; --r-pen-glow: rgba(240,69,58,.18);
  --r-gold: #F5F5F6; --r-gold-hi: #FFFFFF; --r-gold-line: rgba(245,245,246,.35);
  --r-disp: "Archivo", "Helvetica Neue", Arial, sans-serif;
  --r-sans: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  --r-mono: "JBM", "JetBrains Mono", ui-monospace, Menlo, monospace;
  --r-ease: cubic-bezier(.2,.8,.2,1);
  --rbar-h: 0px;
}

/* ---------- atoms ---------- */
.r-num { font-family: var(--r-disp); font-weight: 900; font-stretch: 118%; font-variation-settings: "wdth" 118; letter-spacing: -.04em;
  font-variant-numeric: lining-nums tabular-nums; color: var(--r-gold); }
.r-num.hi { background: linear-gradient(180deg, var(--r-gold-hi), var(--r-gold) 62%); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; }
.r-lbl { font: 500 13px/1.3 var(--r-sans); letter-spacing:0; text-transform:none; color: var(--r-pen); }
.r-lbl .d { color: var(--r-dim); }
.r-chip { display: inline-flex; align-items: center; height: 28px; padding: 0 10px; border: 1px solid var(--r-line-2); border-radius: 10px; font: 500 14px/1 var(--r-mono); color: var(--r-stone); white-space: nowrap; }
.r-chip.w { color: var(--r-gold); border-color: var(--r-gold-line); }
.r-btn { display: inline-flex; align-items: center; justify-content: center; gap: 10px; min-height: 52px; padding: 0 22px; border-radius: 10px; border: 1px solid transparent;
  font: 600 16px/1.15 var(--r-sans); text-decoration: none; cursor: pointer; text-align: center; transition: background .2s, border-color .2s; }
.r-btn svg { width: 18px; height: 18px; flex: none; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; transition: transform .2s; }
.r-btn:hover svg { transform: translateX(3px); }
.r-btn.red { background: var(--r-pen-btn); color: var(--r-ivory); }
.r-btn.red:hover { background: var(--r-pen-hov); }
.r-btn.ghost { border-color: var(--r-line-2); color: var(--r-ivory); background: transparent; }
.r-btn.ghost:hover { border-color: var(--r-ivory); }
.r-stroke { fill: none; stroke: var(--r-pen); stroke-linecap: round; stroke-linejoin: round; }

/* ---------- the buy bar: one tap to checkout from every page ---------- */
.rbar { z-index: 60; background: rgba(20,20,22,.96); -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px); color: var(--r-stone);
  font: 400 14px/1.25 var(--r-sans); -webkit-font-smoothing: antialiased; }
.rbar[hidden] { display: none !important; }
.rbar-in { display: flex; align-items: center; justify-content: space-between; gap: 12px; max-width: 1264px; margin: 0 auto; }
.rbar-t { margin: 0; min-width: 0; }
.rbar-t b.r-num { font-size: 21px; letter-spacing: -.02em; margin-right: 6px; vertical-align: -1px; }
.rbar-t .s { color: var(--r-dim); margin: 0 6px; }
.rbar-btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; flex: none; min-height: 44px; padding: 0 16px; border-radius: 10px;
  background: var(--r-pen-btn); color: var(--r-ivory) !important; font: 600 16px/1 var(--r-sans); text-decoration: none !important; white-space: nowrap; }
.rbar-btn:hover { background: var(--r-pen-hov); }
.rbar-btn svg { width: 16px; height: 16px; fill: none; stroke: currentColor; stroke-width: 1.9; stroke-linecap: round; stroke-linejoin: round; }
.rbar-btn:focus-visible, .r-btn:focus-visible { outline: 2px solid var(--r-gold); outline-offset: 3px; }
/* phone: fixed at the bottom */
@media (max-width: 899px) {
  .rbar { position: fixed; left: 0; right: 0; bottom: 0; border-top: 1px solid var(--r-line-2); padding: 8px 16px calc(8px + env(safe-area-inset-bottom)); }
  .rbar-t .x { display: none; }
  body.has-rbar { padding-bottom: calc(64px + env(safe-area-inset-bottom)) !important; }
}
@media (max-width: 359px) { .rbar-t .y { display: none; } .rbar { padding-left: 12px; padding-right: 12px; } }
/* desktop: a slim strip, sticky at the top, the button at the top right */
@media (min-width: 900px) {
  :root { --rbar-h: 44px; }
  .rbar { position: sticky; top: 0; height: 44px; border-bottom: 1px solid var(--r-line); }
  .rbar-in { justify-content: flex-end; height: 44px; padding: 0 32px; gap: 18px; }
  .rbar-t { font-size: 14px; }
  .rbar-t b.r-num { font-size: 18px; }
  .rbar-btn { min-height: 32px; padding: 0 14px; font-size: 14px; }
  .rbar-btn::after { content: ""; position: absolute; inset: -6px -4px; }
  .rbar-btn { position: relative; }
}
@media print { .rbar { display: none !important; } }
/* pinned headers of the older pages sit under the desktop strip from the first paint (rpp.js keeps it right after) */
@media (min-width: 900px) { body.has-rbar .hdr, body.has-rbar header.top { top: 44px; } }

/* ---------- skin: the older pages, moved onto the same tokens (html.rpp is set by the v129 convert) ---------- */
html.rpp:not(#v129):not([data-theme="day"]) {
  --bg: #0A0A0B; --bg2: #0E0E10; --bg3: #141416; --card: #141416; --card2: #19191C; --desk: #0A0A0B; --desk2: #0E0E10; --deskpane: #0A0A0B;
  --paper: #0A0A0B; --pfill: #19191C; --pink: #F5F5F6; --pdim: #A1A1A9; --prule: #303034;
  --sheet: #141416; --sheet2: #19191C; --sheet0: rgba(20,20,22,0); --panel: rgba(245,245,246,.025);
  --ink: #F5F5F6; --read: #E4E4E7; --ink2: #A1A1A9; --ink3: #84848C; --dim: #A1A1A9; --faint: #84848C;
  --rule: rgba(245,245,246,.10); --rule2: rgba(245,245,246,.18); --line: rgba(245,245,246,.10); --line2: rgba(245,245,246,.18);
  --edge: rgba(245,245,246,.10); --edge2: rgba(245,245,246,.20);
  --pen: #F0453A; --pen-btn: #D9342B; --pen-d: #F0453A; --red: #F0453A; --pen-soft: rgba(240,69,58,.12); --glow: rgba(240,69,58,.25);
  --redwash: rgba(240,69,58,.09); --redwash2: rgba(240,69,58,.2); --penline: rgba(240,69,58,.55); --contring: rgba(240,69,58,.45);
  --btn: #D9342B; --btnink: #F5F5F6; --btnhov: #E23C32; --hdr: rgba(10,10,11,.9); --bar: #0E0E10; --selbg: #19191C; --probe: #19191C;
  --focus: #F5F5F6; --hl: rgba(245,245,246,.2); --hl2: rgba(245,245,246,.1);
  --v2gold: #F5F5F6; --v2goldwash: rgba(245,245,246,.12);
  color-scheme: dark;
}
html.rpp:not([data-theme="day"]) body { background-color: #0A0A0B !important; }
html.rpp :focus-visible { outline-color: #F5F5F6; }
/* square-ish buttons, as on the home page: no pills */
html.rpp body .btn, html.rpp body a.open, html.rpp body button.all, html.rpp body .cnav a, html.rpp body .rbar-btn { border-radius: 10px !important; }
html.rpp:not([data-theme="day"]) body .cnav a[aria-current="page"] { background: transparent; color: #F5F5F6; box-shadow: inset 0 -2px #F0453A; border-radius: 0 !important; }
/* red buttons: the button red with ivory text (4.7:1), never white on the stroke red (4.0:1) */
html.rpp body .btn.red, html.rpp body .btn.buy, html.rpp body .btn.pen, html.rpp body .btn.danger, html.rpp body .upsell .u-row .btn { background: #D9342B !important; color: #F5F5F6 !important; border-color: #D9342B !important; }
html.rpp body .btn.red:hover, html.rpp body .btn.buy:hover, html.rpp body .btn.pen:hover { background: #E23C32 !important; }
html.rpp body .op.mine.x .L { background: #D9342B; border-color: #D9342B; color: #F5F5F6; }
/* the student's own numbers are gold, everywhere */
html.rpp .v2-gold, html.rpp .r-gold { color: #F5F5F6 !important; }
@media (prefers-reduced-motion: reduce) { .rbar, .r-btn, .r-btn svg { transition: none !important; } }

/* ================= v131 (the jury's top-20 fixes) ================= */
/* fix 7: the bar slides away while a call to action is on screen */
.rbar { transition: transform .2s var(--r-ease), opacity .2s; }
body.rbar-off .rbar { transform: translateY(100%); opacity: 0; pointer-events: none; }
@media (min-width: 900px) { body.rbar-off .rbar { transform: none; margin-top: -44px; visibility: hidden; } .rbar { transition: opacity .2s, margin-top .2s; } }
@media (max-width: 899px) { body.rbar-off { padding-bottom: calc(64px + env(safe-area-inset-bottom)) !important; } }
@media (prefers-reduced-motion: reduce) { body.rbar-off .rbar { transition: none; } }
[data-days]:empty, .days:empty { display: none !important; }

/* fix 10: one header on every page (monogram + wordmark, Lessons, Diagnostic, ghost "Open the course") */
header.rhdr { display: block !important; position: relative !important; top: auto; z-index: 20; width: 100vw !important; max-width: none !important;
  margin: 0 0 0 calc(50% - 50vw) !important; padding: 0 !important; border: 0 !important; border-bottom: 1px solid var(--r-line) !important;
  background: #0A0A0B !important; font: 400 16px/1.2 var(--r-sans); color: var(--r-ivory); box-shadow: none !important; }
.rh-in { display: flex; align-items: center; justify-content: space-between; gap: 16px; max-width: 1264px; height: 68px; margin: 0 auto; padding: 0 32px; }
.rh-brand { display: inline-flex; align-items: center; gap: 12px; color: var(--r-ivory) !important; text-decoration: none !important; min-width: 0; }
.rh-mono { width: 34px; height: 34px; flex: none; display: block; }
.rh-wm { font: 800 21px/1 var(--r-disp) !important; font-stretch: 100%; letter-spacing: -.03em !important; white-space: nowrap; color: var(--r-ivory); }
.rh-wm i { font-style: normal; position: relative; display: inline-block; }
.rh-wm i svg { position: absolute; left: -2px; right: -2px; bottom: -7px; width: calc(100% + 4px); height: 6px; overflow: visible; }
.rh-nav { display: flex; align-items: center; gap: 6px; margin: 0 !important; padding: 0 !important; border: 0 !important; background: none !important; position: static !important; }
.rh-l { display: inline-flex; align-items: center; min-height: 44px; padding: 0 12px; color: var(--r-stone) !important; text-decoration: none !important; font: 500 16px/1 var(--r-sans) !important; border: 0 !important; background: none !important; }
.rh-l:hover { color: var(--r-ivory) !important; }
.rh-nav .r-btn.ghost { min-height: 44px; padding: 0 16px; font-size: 16px; margin-left: 6px; }
.rh-x { display: inline-flex; align-items: center; }
.rh-x .theme { min-height: 36px; }
@media (max-width: 640px) {
  .rh-in { height: 60px; padding: 0 16px; gap: 10px; }
  .rh-mono { width: 30px; height: 30px; }
  .rh-wm { font-size: 18px !important; }
  .rh-l { display: none; }
  .rh-nav .r-btn.ghost { min-height: 44px; padding: 0 14px; font-size: 16px; }
}
@media (max-width: 359px) { .rh-nav .r-btn.ghost { display: none; } }
/* the course app and the Trap Bank: the full wordmark with the monogram */
.wm .rh-mono { width: 26px; height: 26px; margin-right: 8px; }
.wm b.rh-wm2 { font: 800 18px/1 var(--r-disp) !important; letter-spacing: -.02em !important; text-transform: none !important; white-space: nowrap; color: #F5F5F6; }
.wm { display: inline-flex !important; align-items: center !important; overflow: visible !important; max-width: none !important; }
@media (max-width: 440px) { .wm .rh-mono { width: 22px; height: 22px; margin-right: 6px; } .wm b.rh-wm2 { font-size: 14px !important; letter-spacing: -.03em !important; } }
#brand .rh-mono { width: 24px; height: 24px; margin-right: 8px; vertical-align: -6px; display: inline-block; }

/* fix 13: H1 in one colour, never a grey second clause */
html.rpp body h1 .l2, html.rpp body h1 em, html.rpp body h1 .spec, html.rpp body h1:not(.bigscore) > span:not(.r-num):not(.u) { color: inherit !important; -webkit-text-fill-color: currentColor; }

/* fix 19: shapes. Primary = red, square; the "SAMPLE" gate is a solid ink card with a gold hairline */
html.rpp body .btn.main, html.rpp body .xbtn, html.rpp body #s-intro #go { background: #D9342B !important; color: #F5F5F6 !important; border-color: #D9342B !important; border-radius: 10px !important; }
html.rpp body .btn.main:hover, html.rpp body .xbtn:hover { background: #E23C32 !important; }
html.rpp body .btn.main[disabled] { background: #1D1D20 !important; color: #84848C !important; border-color: rgba(245,245,246,.18) !important; }
html.rpp body .gate { border: 1px solid rgba(245,245,246,.35) !important; border-style: solid !important; background: #141416 !important; outline: 0 !important; }
html.rpp body .gate .note { border: 1px solid rgba(245,245,246,.35) !important; border-style: solid !important; color: #F5F5F6 !important; background: #141416 !important; border-radius: 10px !important; }

/* fix 20: the tool pages end at one course question, then the offer */
.rq { max-width: 760px; margin: 48px auto 0; padding: 0; font: 400 16px/1.55 var(--r-sans); color: var(--r-ivory); text-align: left; }
.rq > .r-lbl { display: block; margin-bottom: 10px; }
.rq h2.rq-h { margin: 0 0 14px; font: 800 26px/1.08 var(--r-disp); letter-spacing: -.03em; color: var(--r-ivory); }
.rq .qcard { border: 1px solid var(--r-line-2); border-radius: 10px; background: #141416; padding: 20px; }
.rq .qh { display: flex; justify-content: space-between; gap: 10px; margin: 0 0 10px; font: 500 13px/1.3 var(--r-sans); letter-spacing:0; text-transform:none; color: var(--r-stone); }
.rq .qh b { color: var(--r-ivory); font-weight: 500; }
.rq .stem { margin: 0 0 14px; font-size: 16px; color: #E4E4E7; }
.rq .ops { display: grid; gap: 8px; }
.rq .op { position: relative; display: grid; grid-template-columns: 30px minmax(0, 1fr); gap: 4px 10px; align-items: start; width: 100%; padding: 12px 14px; text-align: left;
  border: 1px solid var(--r-line-2); border-radius: 10px; background: transparent; color: var(--r-ivory); font: 400 16px/1.45 var(--r-sans); cursor: pointer; }
.rq .op:hover:not([disabled]) { border-color: var(--r-ivory); }
.rq .op .L { display: inline-flex; align-items: center; justify-content: center; width: 26px; height: 26px; border: 1px solid var(--r-line-2); border-radius: 10px; font: 500 14px/1 var(--r-mono); }
.rq .op svg { display: none; }
.rq .op .tag { grid-column: 2; font: 500 13px/1.3 var(--r-sans); letter-spacing:0; text-transform:none; color: var(--r-pen); }
.rq .op .tag:empty { display: none; }
.rq .op.x .tx { text-decoration: line-through; text-decoration-color: var(--r-pen); text-decoration-thickness: 2px; color: var(--r-stone); }
.rq .op.ok { border-color: var(--r-gold-line); box-shadow: inset 3px 0 0 var(--r-gold); }
.rq .op.ok .L { border-color: var(--r-gold); color: var(--r-gold); }
.rq .op.mine.x { border-color: rgba(240,69,58,.6); }
.rq .op[disabled] { cursor: default; }
.rq .pick { margin: 12px 0 0; font-size: 14px; color: var(--r-dim); }
.rq .verdict { margin-top: 16px; padding-top: 14px; border-top: 1px solid var(--r-line); }
.rq .verdict .vh { margin: 0 0 6px; font: 700 18px/1.25 var(--r-disp); color: var(--r-pen); }
.rq .verdict .ex, .rq .verdict .rs { margin: 0 0 10px; color: #E4E4E7; font-size: 16px; }
.rq .verdict .dl { margin: 0 0 10px; padding: 10px 12px; border-left: 2px solid var(--r-pen); background: rgba(240,69,58,.07); font-size: 16px; color: #E4E4E7; }
.rq .verdict .dl small { display: block; font: 500 13px/1.3 var(--r-sans); letter-spacing:0; text-transform:none; color: var(--r-pen); margin-bottom: 4px; }
.rq details { margin: 0 0 10px; font-size: 16px; color: var(--r-stone); }
.rq details summary { cursor: pointer; color: var(--r-ivory); min-height: 36px; display: flex; align-items: center; }
.rq .whys { list-style: none; margin: 6px 0 0; padding: 0; display: grid; gap: 8px; }
.rq .whys li { display: grid; grid-template-columns: 22px minmax(0, 1fr); gap: 8px; }
.rq .rptw { margin: 0; font-size: 14px; }
.rq .rptw a { color: var(--r-stone); }
.rq .after { display: none; }
.rq-offer { margin: 18px 0 0; padding: 18px 20px; border: 1px solid var(--r-gold-line); border-radius: 10px; background: #141416; display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px 20px; }
.rq-offer p { margin: 0; color: var(--r-stone); font-size: 16px; max-width: 30em; }
.rq-offer p b { color: var(--r-ivory); }
.rq-offer .r-btn { min-height: 52px; }
.rq-offer .rf { flex-basis: 100%; font-size: 14px; color: var(--r-dim); }
@media (max-width: 640px) { .rq { margin-top: 36px; } .rq .qcard { padding: 16px 14px; } .rq-offer .r-btn { width: 100%; } }

/* fix 5: the proof strip (verified Instagram numbers) */
.rproof { display: flex; flex-wrap: wrap; align-items: baseline; gap: 10px 28px; margin: 0; padding: 18px 0 16px; border-top: 1px solid var(--r-line); border-bottom: 1px solid var(--r-line); list-style: none; }
.rproof li { display: flex; align-items: baseline; gap: 10px; font-size: 14px; color: var(--r-stone); }
.rproof b { font: 900 32px/1 var(--r-disp); font-stretch: 112%; font-variation-settings: "wdth" 112; letter-spacing: -.03em; color: var(--r-gold); font-variant-numeric: lining-nums tabular-nums; }
.rproof a { color: var(--r-ivory); min-height: 44px; display: inline-flex; align-items: center; }
.rproof .src { flex-basis: 100%; font: 500 12px/1.3 var(--r-mono); letter-spacing: .06em; color: var(--r-dim); }
@media (max-width: 640px) { .rproof { gap: 6px 18px; padding: 14px 0 12px; } .rproof b { font-size: 26px; } .rproof li { font-size: 14px; } }
.rproof-line { margin: 14px 0 0; font-size: 14px; color: var(--r-stone); }
.rproof-line b { color: var(--r-gold); font-weight: 700; }
.rproof-line a { color: var(--r-ivory); }
