/* =====================================================================
   RegularPython roadmap. Light theme only.
   The look follows the lesson animations: rounded outlined shapes,
   numbered rings, thick grey pipes, and one colour for one meaning.
   ===================================================================== */
/* Everything in this file applies only inside an element with class "ra".
   Each page of the app wraps itself in <div class="ra">, so these styles
   do not touch the rest of your site. */
.ra {
  color-scheme: light;
  --paper: #FFFFFF;
  --mist: #F3F5F9;
  --ink: #17233A;
  --slate: #5A6678;
  --line: #D6DCE5;
  --pipe: #D3DAE4;
  --edge: #93A0B2;
  --teal: #0E8A8C;   --teal-t: #E3F4F4;     /* progress, and "you are here" */
  --blue: #2389DA;   --blue-t: #E8F3FC;     /* Content */
  --pink: #D0437F;   --pink-t: #FBEAF1;     /* Assignments */
  --purple: #7A4FD0; --purple-t: #F0EAFB;   /* Interview questions */
  --gold: #C4950F;   --gold-t: #FBF3DC;
  --orange: #D9652B; --orange-t: #FDEEE4;   /* Videos */
  --ok: #2B9A59;     --ok-t: #E4F4EA;       /* done */
  --head: "Baloo 2", "Trebuchet MS", system-ui, sans-serif;
  --body: "Figtree", system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
  --mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  --wrap: 1180px;
  color: var(--ink); font: 400 17px/1.6 var(--body); text-align: left;
}
.ra, .ra *, .ra *::before, .ra *::after { box-sizing: border-box; }
:where(.ra) h1, :where(.ra) h2, :where(.ra) h3 { font-family: var(--head); font-weight: 700; line-height: 1.1; margin: 0; padding: 0; letter-spacing: -0.01em; color: inherit; text-transform: none; }
:where(.ra) h1 { font-size: clamp(36.8px, 4.4vw, 56px); }
:where(.ra) h2 { font-size: clamp(25.6px, 2.6vw, 33.6px); }
:where(.ra) h3 { font-size: 21.6px; }
:where(.ra) p { margin: 0; }
:where(.ra) a { color: inherit; }
:where(.ra) code { font: 500 0.88em var(--mono); background: var(--mist); padding: 2px 6px; border-radius: 6px; }
.ra [hidden] { display: none !important; }
:where(.ra) :focus-visible { outline: 3px solid var(--teal); outline-offset: 3px; border-radius: 8px; }
.ra-sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.ra-wrap { width: min(100% - 40px, var(--wrap)); margin-inline: auto; }
.ra-wrap--wide { --wrap: 1320px; }
.ra-lede { font-size: 18.24px; color: var(--slate); max-width: 58ch; }

/* ---------- buttons, links, small parts ---------- */
.ra-btn { white-space: nowrap; display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 44px; padding: 9px 20px; border-radius: 999px; border: 2px solid var(--ink); background: var(--ink); color: #fff; font: 600 16px/1.2 var(--body); text-decoration: none; cursor: pointer; transition: background .15s, color .15s; }
.ra-btn:hover { background: #24344F; }
.ra-btn--big { min-height: 54px; padding: 12px 28px; font-size: 17.28px; }
.ra-btn--quiet { background: var(--paper); color: var(--ink); }
.ra-btn--quiet:hover { background: var(--mist); }
.ra-link { background: none; border: 0; padding: 4px 2px; font: 600 15.68px var(--body); color: var(--teal); text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }
.ra-link:hover { color: var(--ink); }
.ra-ring { flex: none; width: 46px; height: 46px; border-radius: 50%; border: 3px solid var(--c, var(--ink)); background: var(--paper); color: var(--ink); display: inline-flex; align-items: center; justify-content: center; font: 700 20.8px/1 var(--head); }
.ra-ring--lg { width: 68px; height: 68px; font-size: 32px; border-width: 4px; }
.ra-ring--xs { width: 28px; height: 28px; font-size: 14.72px; border-width: 2px; }
.ra-tick { width: 1em; height: 1em; fill: none; stroke: currentColor; stroke-width: 2.4; stroke-linecap: round; stroke-linejoin: round; }
.ra-meter { display: inline-block; width: 120px; height: 10px; border-radius: 999px; background: var(--pipe); overflow: hidden; vertical-align: middle; }
.ra-meter i { display: block; height: 100%; background: var(--teal); border-radius: 999px; }
.ra-flag { display: inline-block; margin-left: 10px; padding: 2px 10px; border-radius: 999px; background: var(--teal); color: #fff; font: 600 12.8px/1.5 var(--body); vertical-align: 3px; white-space: nowrap; }
.ra-c-blue { --c: var(--blue); --ct: var(--blue-t); } .ra-c-teal { --c: var(--teal); --ct: var(--teal-t); } .ra-c-pink { --c: var(--pink); --ct: var(--pink-t); }
.ra-c-purple { --c: var(--purple); --ct: var(--purple-t); } .ra-c-gold { --c: var(--gold); --ct: var(--gold-t); }
.ra-s-content { --s: var(--blue); --st: var(--blue-t); } .ra-s-videos { --s: var(--orange); --st: var(--orange-t); } .ra-s-assignments { --s: var(--pink); --st: var(--pink-t); } .ra-s-interview { --s: var(--purple); --st: var(--purple-t); }

/* ---------- home: hero ---------- */
.ra-hero { background: var(--mist); border-bottom: 1.5px solid var(--line); }
.ra-hero_in { display: grid; grid-template-columns: minmax(0, 0.82fr) minmax(0, 1.18fr); gap: 44px; align-items: center; padding-block: 52px 56px; }
.ra-hero h1 { max-width: 15ch; }
.ra-hero .ra-lede { margin-top: 18px; }
.ra-actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 28px; }
.ra-hero_note { margin-top: 16px; color: var(--slate); font-size: 15.68px; }
.ra-art { background: var(--paper); border: 1.5px solid var(--line); border-radius: 22px; padding: 22px 22px 14px; }
.ra-art svg { display: block; width: 100%; height: auto; }
.ra-art_cap { margin-top: 6px; font-size: 15.2px; color: var(--slate); text-align: center; }
.ra-art text { font-family: var(--body); fill: var(--ink); }
.ra-art .a-head { font: 700 17px var(--head); }
.ra-art .a-sub { font-size: 12.5px; fill: var(--slate); }
.ra-art .a-pill { font-size: 11.5px; font-weight: 600; }
.ra-art .a-pipe { fill: none; stroke: var(--pipe); stroke-width: 12; stroke-linecap: round; }
.ra-art .a-box { fill: var(--st); stroke: var(--s); stroke-width: 2.5; }
.ra-art .a-ring { fill: var(--paper); stroke: var(--s); stroke-width: 3; }
.ra-art .a-num { font: 700 17px var(--head); text-anchor: middle; }
.ra-art .a-chip { fill: var(--paper); stroke: var(--line); stroke-width: 1.5; }
.ra-art .a-lit { fill: none; stroke: var(--s); stroke-width: 5; opacity: 0; animation: ra-lit 9s infinite; }
.ra-art .a-lit--2 { animation-delay: 3s; } .ra-art .a-lit--3 { animation-delay: 6s; }
.ra-art .a-token { fill: var(--teal); stroke: var(--paper); stroke-width: 3; animation: ra-travel 9s infinite; }
@keyframes ra-travel { 0%, 22% { transform: translateX(0); } 33%, 55% { transform: translateX(200px); } 66%, 88% { transform: translateX(400px); } 100% { transform: translateX(400px); opacity: 0; } }
@keyframes ra-lit { 0%, 2% { opacity: 0; } 5%, 24% { opacity: 1; } 30%, 100% { opacity: 0; } }
@media (prefers-reduced-motion: reduce) { .ra-art .a-token, .ra-art .a-lit { animation: none; } .ra-btn { transition: none; } }

/* ---------- home: the road ---------- */
.ra-roadsec { padding-block: 44px 70px; }
.ra-roadsec_head { display: flex; flex-wrap: wrap; align-items: end; justify-content: space-between; gap: 12px 32px; margin-bottom: 22px; }
.ra-roadsec_head p { color: var(--slate); max-width: 56ch; margin-top: 8px; }
.ra-overall { display: flex; align-items: center; gap: 10px; color: var(--slate); font-weight: 600; font-size: 15.68px; }
.ra-road, .ra-topics { list-style: none; margin: 0; padding: 0; position: relative; }
.ra-road::before, .ra-topics::before { content: ""; position: absolute; left: 17px; top: 30px; bottom: 30px; width: 12px; border-radius: 6px; background: var(--pipe); }
.ra-station { position: relative; margin-bottom: 12px; }
.ra-station_link { display: grid; grid-template-columns: 46px minmax(0, 1.5fr) minmax(0, 0.9fr) 118px 170px; align-items: center; gap: 20px; padding: 14px 22px 14px 0; text-decoration: none; border-radius: 20px; }
.ra-station_link > :not(.ra-ring) { position: relative; }
.ra-station_link::before { content: ""; position: absolute; inset: 0 0 0 68px; border: 2px solid var(--line); border-radius: 20px; background: var(--paper); transition: border-color .15s; }
.ra-station_link:hover::before { border-color: var(--c, var(--ink)); }
.ra-station .ra-ring { position: relative; z-index: 1; }
.ra-station_body { padding-left: 24px; }
.ra-station_title { display: block; font: 700 22.4px/1.15 var(--head); }
.ra-station_tag { display: block; color: var(--slate); margin-top: 2px; font-size: 15.36px; }
.ra-station_meta { display: grid; gap: 1px; font-size: 14.4px; color: var(--slate); }
.ra-station_count { font-weight: 600; color: var(--ink); }
.ra-station_go, .ra-pass .ra-btn { justify-self: end; }
.ra-station_go { font-weight: 600; padding: 7px 20px; border-radius: 999px; border: 2px solid var(--ink); }
.ra-hero_note a { color: var(--teal); font-weight: 600; text-underline-offset: 3px; }
.ra-station_link:hover .ra-station_go { background: var(--ink); color: #fff; }
.ra-station.is-done .ra-ring { background: var(--ok); border-color: var(--ok); color: #fff; }
.ra-station.is-next .ra-ring, .ra-station.is-going .ra-ring { background: var(--ink); border-color: var(--ink); color: #fff; }
.ra-empty { padding: 24px 24px 24px 76px; color: var(--slate); }

/* ---------- prices ---------- */
.ra-price { display: grid; justify-items: start; line-height: 1.15; padding-left: 18px; border-left: 2px dashed var(--line); }
.ra-price b { font: 700 23.2px/1.1 var(--head); }
.ra-price small { color: var(--slate); font-size: 13.12px; }
.ra-price--free b { color: var(--ok); }
.ra-pass .ra-station_link::before { background: var(--gold-t); border-color: var(--gold); }
.ra-pass .ra-ring { background: var(--gold); border-color: var(--gold); color: #fff; }
.ra-pass .ra-price { border-left-color: var(--gold); }
.ra-pass s { color: var(--slate); }
.ra-pass_save { font-weight: 600; color: var(--ok); }

/* ---------- category ---------- */
.ra-crumbs { display: flex; flex-wrap: wrap; gap: 8px; padding-block: 18px 0; font-size: 15.04px; color: var(--slate); }
.ra-crumbs a { color: var(--teal); font-weight: 600; text-underline-offset: 3px; }
.ra-crumbs [aria-current] { color: var(--ink); font-weight: 600; }
.ra-cathead { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 20px; align-items: center; padding-block: 18px 22px; border-bottom: 1.5px solid var(--line); }
.ra-cathead h1 { font-size: clamp(28.8px, 3vw, 38.4px); }
.ra-cathead .ra-lede { margin-top: 2px; font-size: 16.32px; }
.ra-cathead_meta { display: flex; align-items: center; gap: 10px; margin-top: 10px; color: var(--slate); font-weight: 600; font-size: 14.4px; }
.ra-buy { display: grid; grid-template-columns: auto auto; align-items: center; gap: 6px 16px; }
.ra-buy .ra-link { grid-column: 1 / -1; justify-self: end; font-size: 14.4px; }
.ra-listhead { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 14px; margin: 24px 0 12px; }
.ra-listhead h2 { font-size: 24px; }
.ra-listhead p { color: var(--slate); font-size: 15.2px; }

/* the topic list: one tight row for each topic, and four columns: Content, Videos, Assignments, Interview questions */
.ra-colhead, .ra-row { display: grid; grid-template-columns: 34px minmax(0, 1.6fr) repeat(4, minmax(0, 1fr)) 92px; gap: 14px; align-items: start; }
.ra-colhead { padding: 0 16px 8px; font-size: 13.12px; color: var(--slate); }
.ra-colhead span[class] { padding-bottom: 5px; border-bottom: 4px solid var(--s); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ra-colhead b { color: var(--ink); font-weight: 600; margin-right: 5px; }
.ra-rows { list-style: none; margin: 0; padding: 0; border: 2px solid var(--line); border-radius: 16px; overflow: hidden; }
.ra-row { padding: 10px 16px; border-bottom: 1.5px solid var(--line); background: var(--paper); }
.ra-row:last-child { border-bottom: 0; }
.ra-row:hover { background: var(--mist); }
.ra-row.is-next { background: var(--teal-t); }
.ra-ring--sm { width: 34px; height: 34px; font-size: 16.8px; border-width: 2.5px; }
.ra-row.is-done > .ra-ring { background: var(--ok); border-color: var(--ok); color: #fff; }
.ra-row.is-next > .ra-ring, .ra-row.is-going > .ra-ring { background: var(--ink); border-color: var(--ink); color: #fff; }
.ra-row_main h3 { font-size: 17.6px; line-height: 1.25; }
.ra-row_main h3 a { text-decoration: none; }
.ra-row_main h3 a:hover { text-decoration: underline; text-underline-offset: 3px; }
.ra-row_main p { color: var(--slate); font-size: 14.08px; line-height: 1.35; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden; }
.ra-row .ra-flag { margin-left: 8px; font-size: 11.52px; padding: 1px 8px; vertical-align: 2px; }
.ra-cell { min-width: 0; }
/* the parts of one section, one under the other, in their order */
.ra-partlist { list-style: none; margin: 0; padding: 0; display: grid; gap: 5px; justify-items: start; }
.ra-partlist li { min-width: 0; max-width: 100%; }
.ra-row > .ra-ring, .ra-row > .ra-btn { margin-top: 2px; }
.ra-cell_name { display: none; font-weight: 600; font-size: 13.76px; margin-right: 4px; }
.ra-chipbtn { display: flex; align-items: center; gap: 6px; max-width: 100%; padding: 3px 10px 3px 4px; border-radius: 999px; background: var(--st); border: 1.5px solid var(--s); font-weight: 600; font-size: 13.44px; line-height: 1.5; text-decoration: none; white-space: nowrap; }
.ra-chip_no { flex: none; width: 20px; height: 20px; border-radius: 50%; background: var(--paper); border: 1.5px solid var(--s); display: inline-flex; align-items: center; justify-content: center; font: 700 11.5px/1 var(--head); color: var(--ink); }
.ra-chip_icon { flex: none; font-size: 11.5px; }
.ra-chip_text { min-width: 0; overflow: hidden; text-overflow: ellipsis; }
.ra-chipbtn:hover .ra-chip_no { color: var(--ink); }
.ra-chipbtn.is-done .ra-chip_no { background: var(--ok); border-color: var(--ok); color: #fff; }
.ra-chipbtn:hover { background: var(--ink); border-color: var(--ink); color: #fff; }
.ra-chipbtn.is-done { background: var(--ok-t); border-color: var(--ok); color: var(--ok); }
.ra-btn--small { min-height: 36px; padding: 5px 14px; font-size: 14.72px; }
.ra-pagenav { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 12px; padding-block: 24px 60px; }

/* ---------- details ---------- */
.ra-detailhead { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 4px 24px; padding-block: 8px 10px; }
.ra-topichead { display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px 14px; }
.ra-topichead h1 { font-size: clamp(24px, 2.4vw, 30.4px); }
.ra-where { color: var(--slate); font-weight: 600; font-size: 14.72px; }
.ra-topicnav { display: inline-flex; gap: 8px; margin-left: 6px; align-self: center; }
.ra-btn.is-off { opacity: 0.38; cursor: default; pointer-events: none; }
.ra-topicnav_row { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 12px; margin-top: 14px; }
.ra-topicnav_big { display: grid; gap: 0; justify-items: start; text-align: left; border-radius: 16px; padding: 8px 20px; min-width: 220px; }
.ra-topicnav_big:last-child { justify-items: end; text-align: right; }
.ra-topicnav_big small { font-weight: 500; font-size: 13.12px; color: var(--slate); }
.ra-topicnav_big b { font-weight: 600; font-size: 16.32px; }
.ra-tools { display: flex; gap: 18px; }
.ra-tools .ra-link { font-size: 14.72px; }

/* one line of numbered steps */
.ra-steps { list-style: none; display: flex; align-items: stretch; margin: 0 0 12px; padding: 2px 2px 6px; overflow-x: auto; }
.ra-steps li { flex: none; display: flex; align-items: center; }
.ra-steps li + li::before { content: ""; width: 20px; height: 4px; background: var(--pipe); }
.ra-step { display: inline-flex; align-items: center; gap: 9px; padding: 5px 14px 5px 6px; border-radius: 12px; border: 2px solid var(--line); border-bottom: 4px solid var(--s); background: var(--paper); text-decoration: none; }
.ra-step:hover { border-color: var(--ink); border-bottom-color: var(--s); }
.ra-step_no { flex: none; width: 28px; height: 28px; border-radius: 50%; background: var(--mist); display: inline-flex; align-items: center; justify-content: center; font: 700 15.2px/1 var(--head); }
.ra-step_text { display: grid; line-height: 1.2; }
.ra-step_text small { font-size: 11.84px; font-weight: 600; color: var(--s); }
.ra-step_text b { font-size: 14.88px; font-weight: 600; white-space: nowrap; }
.ra-step.is-done .ra-step_no { background: var(--ok); color: #fff; }
.ra-step.is-now { background: var(--ink); border-color: var(--ink); border-bottom-color: var(--s); color: #fff; }
.ra-step.is-now .ra-step_no { background: #fff; color: var(--ink); }
.ra-step.is-now .ra-step_text small { color: #fff; opacity: 0.85; }

.ra-stage { border: 2px solid var(--line); border-top: 5px solid var(--s, var(--line)); border-radius: 16px; overflow: hidden; background: var(--mist); }
.ra-stage iframe { display: block; width: 100%; border: 0; background: var(--paper); }
.ra-stage--animation iframe { height: min(90vh, 940px); min-height: 560px; }
.ra-stage--inline { background: var(--paper); padding: 0; overflow: auto; }
.ra-stage--video { aspect-ratio: 16 / 9; max-height: 78vh; } .ra-stage--video iframe { height: 100%; }
.ra-slot { padding: 48px 28px; text-align: center; }
.ra-slot h3 { margin-bottom: 10px; } .ra-slot p { color: var(--slate); max-width: 56ch; margin-inline: auto; }
.ra-slot--page { padding-block: 90px; } .ra-slot--page .ra-btn { margin-top: 24px; }
.ra-next { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px 30px; margin-top: 14px; padding: 14px 20px; border-radius: 16px; background: var(--mist); }
.ra-next_main { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 18px; }
.ra-next_to { font-weight: 600; }
.ra-next_side { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 20px; }
.ra-donemark { display: inline-flex; align-items: center; gap: 6px; color: var(--ok); font-weight: 600; }
.ra-others { padding-block: 34px 64px; }
.ra-others h2 { font-size: 20.8px; margin-bottom: 12px; }
.ra-side { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 8px 12px; }
.ra-side a { display: flex; align-items: center; gap: 10px; padding: 7px 14px 7px 7px; border-radius: 999px; border: 1.5px solid var(--line); text-decoration: none; font-weight: 600; font-size: 15.04px; }
.ra-side a span:nth-child(2) { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ra-side a small { color: var(--slate); font-weight: 500; }
.ra-side a:hover { border-color: var(--ink); }
.ra-side .is-now a { background: var(--ink); border-color: var(--ink); color: #fff; } .ra-side .is-now a small { color: #fff; } .ra-side .is-now .ra-ring { background: #fff; border-color: #fff; color: var(--ink); }
.ra-side .is-done .ra-ring { background: var(--ok); border-color: var(--ok); color: #fff; }

/* ---------- reviews ---------- */
.ra-stars { position: relative; display: inline-block; font-size: 15.68px; line-height: 1; letter-spacing: 1.5px; color: var(--pipe); white-space: nowrap; vertical-align: -1px; }
.ra-stars::before, .ra-stars > span::before { content: "\2605\2605\2605\2605\2605"; }
.ra-stars > span { position: absolute; left: 0; top: 0; height: 100%; overflow: hidden; color: var(--gold); }
.ra-stars--lg { font-size: 21.6px; }
.ra-rating { display: inline-flex; align-items: center; gap: 7px; font-size: 14.08px; color: var(--slate); text-decoration: none; }
.ra-rating b { color: var(--ink); font-weight: 600; }
a.ra-rating { margin-left: 8px; padding-left: 14px; border-left: 1.5px solid var(--line); font-weight: 500; }
a.ra-rating:hover { text-decoration: underline; text-underline-offset: 3px; }
.ra-station_body .ra-rating { margin-top: 4px; }
.ra-reviews { padding-top: 14px; }
.ra-revgrid { display: grid; grid-template-columns: 220px minmax(0, 1fr) minmax(0, 340px); gap: 22px; align-items: start; }
.ra-revsum { padding: 16px 18px; border-radius: 16px; background: var(--mist); }
.ra-revsum_big { font: 700 44.8px/1 var(--head); }
.ra-revsum_n { color: var(--slate); font-size: 14.4px; margin-top: 2px; }
.ra-bars { list-style: none; margin: 12px 0 0; padding: 0; display: grid; gap: 5px; font-size: 13.44px; color: var(--slate); }
.ra-bars li { display: grid; grid-template-columns: 30px minmax(0, 1fr) 18px; gap: 8px; align-items: center; }
.ra-bars li span:last-child { text-align: right; }
.ra-bars_track { height: 8px; border-radius: 999px; background: var(--pipe); overflow: hidden; }
.ra-bars_track i { display: block; height: 100%; background: var(--gold); border-radius: 999px; }
.ra-reviewlist { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
.ra-reviewlist + .ra-link { margin-top: 10px; }
.ra-review { padding: 12px 16px; border: 1.5px solid var(--line); border-radius: 14px; background: var(--paper); }
.ra-review.is-mine { border-color: var(--teal); background: var(--teal-t); }
.ra-review_top { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 10px; font-size: 14.88px; }
.ra-review_top b { font-weight: 600; }
.ra-review_top time { margin-left: auto; color: var(--slate); font-size: 13.44px; }
.ra-review_tag { padding: 1px 9px; border-radius: 999px; background: var(--ok-t); color: var(--ok); font-weight: 600; font-size: 12.16px; }
.ra-review_tag--sample { background: var(--gold-t); color: #7A5C00; }
.ra-review_tag--mine { background: var(--paper); color: var(--teal); border: 1.5px solid var(--teal); }
.ra-review p { margin-top: 6px; font-size: 15.36px; line-height: 1.5; }
.ra-review p.ra-review_stage { color: var(--slate); font-size: 13.44px; font-weight: 600; }
.ra-form { padding: 16px 18px; border: 2px solid var(--line); border-radius: 16px; display: grid; gap: 10px; }
.ra-form h3 { font-size: 18.4px; }
.ra-form_note, .ra-form--locked p { color: var(--slate); font-size: 14.4px; margin-top: -6px; }
.ra-form--locked { background: var(--mist); border-color: var(--mist); justify-items: start; }
.ra-form--locked p { margin-top: 0; }
.ra-starpick { border: 0; margin: 0; padding: 0; display: flex; align-items: center; gap: 2px; }
.ra-starpick legend { float: left; margin-right: 10px; padding: 0; font-weight: 600; font-size: 14.72px; }
.ra-starpick input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.ra-starpick label { font-size: 27.2px; line-height: 1; color: var(--pipe); cursor: pointer; padding: 0 1px; border-radius: 6px; }
.ra-starpick label.is-on { color: var(--gold); }
.ra-starpick label:hover { color: var(--gold); }
.ra-starpick input:focus-visible + label { outline: 3px solid var(--teal); outline-offset: 2px; }
.ra-field { display: grid; gap: 4px; font-weight: 600; font-size: 14.72px; }
.ra-field small { font-weight: 500; color: var(--slate); margin-left: 6px; }
.ra-field input, .ra-field textarea { width: 100%; padding: 9px 12px; border: 1.5px solid var(--edge); border-radius: 10px; background: var(--paper); color: var(--ink); font: 400 15.68px/1.5 var(--body); resize: vertical; }
.ra-field input:focus, .ra-field textarea:focus { outline: 3px solid var(--teal); outline-offset: 1px; border-color: var(--teal); }
.ra-form_end { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 16px; }
.ra-form_msg { min-height: 1.3em; font-size: 14.4px; font-weight: 600; color: var(--slate); }
.ra-form_msg.is-ok { color: var(--ok); } .ra-form_msg.is-bad { color: #B3372B; }
.ra-voicesec { padding-block: 0 64px; }
.ra-voices_sum { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 10px; color: var(--slate); font-size: 15.2px; }
.ra-voices_sum b { font: 700 24px/1 var(--head); color: var(--ink); }
.ra-reviewlist--row { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; }
.ra-voices_more { margin-top: 12px; color: var(--slate); font-size: 14.88px; }

/* ---------- "Coming soon": an active stage or topic with nothing to open yet ---------- */
.ra-flag--soon { background: var(--paper); color: var(--slate); border: 1.5px dashed var(--edge); }
.ra-station.is-soon .ra-station_link::before { border-style: dashed; background: var(--mist); }
.ra-station.is-soon .ra-station_link:hover::before { border-color: var(--line); }
.ra-station.is-soon .ra-ring { border-style: dashed; border-color: var(--edge); color: var(--slate); background: var(--paper); }
.ra-station.is-soon .ra-station_title, .ra-row.is-soon h3 { color: var(--slate); }
.ra-row.is-soon, .ra-row.is-soon:hover { background: var(--mist); }
.ra-row.is-soon > .ra-ring { border-style: dashed; border-color: var(--edge); color: var(--slate); }
.ra-rows .ra-empty { padding: 18px 20px; }

/* ---------- filters: language, and mandatory or optional ---------- */
.ra-filters { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 26px; margin: 0 0 14px; padding: 10px 14px; border-radius: 14px; background: var(--mist); }
.ra-seg { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 4px; }
.ra-seg_name { font-weight: 600; font-size: 14.4px; color: var(--slate); margin-right: 6px; }
.ra-seg_btn { display: inline-flex; align-items: center; gap: 6px; padding: 5px 14px; border-radius: 999px; border: 1.5px solid var(--edge); background: var(--paper); font-weight: 600; font-size: 14.4px; line-height: 1.4; text-decoration: none; white-space: nowrap; }
.ra-seg_btn:hover { border-color: var(--ink); }
.ra-seg_btn.is-on { background: var(--ink); border-color: var(--ink); color: #fff; }
.ra-seg_btn small { font-weight: 600; font-size: 12px; padding: 0 6px; border-radius: 999px; background: var(--mist); color: var(--slate); }
.ra-seg_btn.is-on small { background: rgba(255, 255, 255, 0.22); color: #fff; }
.ra-filter_note { margin: 0 0 14px; padding: 10px 14px; border-left: 5px solid var(--gold); border-radius: 0 12px 12px 0; background: var(--gold-t); font-size: 15.2px; }
.ra-kind { display: inline-block; margin-left: 8px; padding: 0 8px; border-radius: 999px; border: 1.5px dashed var(--edge); color: var(--slate); font: 600 11.52px/1.6 var(--body); vertical-align: 2px; white-space: nowrap; }
.ra-kind--must { border: 1.5px solid var(--ink); color: var(--ink); }
.ra-roadsec_side { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 24px; }
.ra-tools { flex-wrap: wrap; align-items: center; }
.ra-rating--top { margin-left: 0 !important; padding-left: 0 !important; border-left: 0 !important; font-size: 15.2px; }
.ra-revnone { color: var(--slate); font-size: 15.2px; padding: 12px 16px; border: 1.5px dashed var(--line); border-radius: 14px; }

/* The site styles every <nav> as its menu bar, so these rows make their own layout explicit. */
.ra-crumbs, .ra-pagenav, .ra-topicnav_row { position: static; background: none; border: 0; box-shadow: none; padding-inline: 0; }
.ra-crumbs { justify-content: flex-start; align-items: baseline; }

/* ---------- room for the site's own fixed bars ---------- */
.ra { padding-bottom: 96px; }                                   /* the membership banner and the chat button sit over the bottom of the page */
.ra [id="reviews"], .ra [id="all-access"], .ra .ra-row { scroll-margin-top: 90px; }   /* the menu bar stays at the top while scrolling */

/* ---------- messages, locked topics, checkout ---------- */
.ra-messages { list-style: none; margin: 14px 0 0; padding: 0; display: grid; gap: 8px; }
.ra-msg { padding: 10px 16px; border-radius: 12px; font-weight: 600; font-size: 15.36px; background: var(--teal-t); border-left: 5px solid var(--teal); }
.ra-msg--success { background: var(--ok-t); border-left-color: var(--ok); }
.ra-msg--error { background: #FBE9E7; border-left-color: #D4483B; }
.ra-price--owned b { color: var(--ok); }
.ra-price--members b { color: var(--slate); font-size: 19.2px; }

/* ---------- free samples: parts anyone can open without signing in ---------- */
.ra-chip_free { flex: none; margin-left: 2px; padding: 0 7px; border-radius: 999px; background: var(--gold-t); border: 1.5px solid var(--gold); color: #7A5C00; font: 700 10.5px/1.6 var(--body); text-transform: uppercase; letter-spacing: 0.3px; }
.ra-chipbtn:hover .ra-chip_free { color: #7A5C00; }
.ra-free { font-weight: 600; color: #7A5C00; }
.ra-samplebar { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 14px; margin-top: 14px; padding: 12px 18px; border: 1.5px solid var(--gold); border-radius: 14px; background: var(--gold-t); font-size: 15.2px; }
.ra-lock_sample { margin-top: 18px; font-size: 15.2px; }
.ra-lock_sample a { color: var(--teal); font-weight: 600; text-underline-offset: 3px; }
.ra-flag--free { background: var(--gold-t); color: #7A5C00; border: 1.5px solid var(--gold); }
.ra-lock_icon { font-size: 35.2px; line-height: 1; margin-bottom: 8px; }
.ra-lock_buy { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 10px 20px; margin-top: 20px; }
.ra-next form { margin: 0; }
.ra-auth { max-width: 480px; margin: 44px auto 80px; padding: 26px 28px; border: 2px solid var(--line); border-radius: 20px; display: grid; gap: 14px; }
.ra-auth h1 { font-size: 30.4px; }
.ra-auth_note { color: var(--slate); font-size: 15.2px; }
.ra-auth_note a { color: var(--teal); font-weight: 600; text-underline-offset: 3px; }
.ra-fielderror { color: #B3372B; font-weight: 600; font-size: 14.08px; margin: 0; }
.ra-fieldhelp { color: var(--slate); font-weight: 400; font-size: 13.76px; margin: 0; }
.ra-order { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; padding: 14px 18px; border-radius: 14px; background: var(--mist); font-weight: 600; }
.ra-order b { font: 700 25.6px/1 var(--head); }
.ra-testbuy { display: grid; gap: 10px; padding: 14px 18px; border: 2px dashed var(--gold); border-radius: 14px; background: var(--gold-t); justify-items: start; }
.ra-testbuy p { font-size: 14.72px; }
.ra-order_note { padding: 12px 16px; border-left: 5px solid var(--ok); border-radius: 0 12px 12px 0; background: var(--ok-t); font-size: 15.2px; }
.ra-pay .razorpay-payment-button { width: 100%; min-height: 50px; border: 0; border-radius: 999px; background: var(--ink); color: #fff; font: 600 16px var(--body); cursor: pointer; }
.ra-pay .razorpay-payment-button:hover { background: #24344F; }
.ra-price small s { color: var(--slate); }
.ra-price--waiting b { font-size: 17.6px; color: #7A5C00; }
.ra-waiting { grid-column: 1 / -1; max-width: 360px; padding: 8px 12px; border-radius: 10px; background: var(--gold-t); border: 1.5px solid var(--gold); font-size: 13.76px; line-height: 1.45; }
.ra-waiting a { color: var(--teal); font-weight: 600; }

/* ---------- small screens ---------- */
@media (max-width: 900px) {
  .ra { font-size: 16px; }
  .ra-hero_in { grid-template-columns: minmax(0, 1fr); gap: 30px; padding-block: 36px 40px; }
  .ra-hero h1 { max-width: none; }
  .ra-station_link { grid-template-columns: 46px minmax(0, 1fr) auto; gap: 10px 16px; padding: 14px 16px 14px 0; }
  .ra-station_link::before { inset: 0 0 0 60px; }
  .ra-station_body { padding-left: 22px; grid-column: 2 / -1; }
  .ra-station_meta { grid-column: 2 / -1; margin-left: 22px; }
  .ra-price { grid-column: 2; margin-left: 22px; padding-left: 0; border-left: 0; }
  .ra-station_go, .ra-pass .ra-btn { grid-column: 3; }
  .ra-station_title { font-size: 20px; }
  .ra-cathead { grid-template-columns: auto minmax(0, 1fr); }
  .ra-buy { grid-column: 1 / -1; justify-content: start; justify-items: start; }
  .ra-buy .ra-price { padding-left: 0; border-left: 0; }
  .ra-buy .ra-link { justify-self: start; }
  .ra-colhead { display: none; }
  .ra-revgrid { grid-template-columns: minmax(0, 1fr); }
  .ra-reviewlist--row { grid-template-columns: minmax(0, 1fr); }
  a.ra-rating { margin-left: 0; padding-left: 0; border-left: 0; }
  .ra-cathead_meta { flex-wrap: wrap; }
  .ra-row { grid-template-columns: 34px minmax(0, 1fr) auto; gap: 8px 12px; align-items: start; }
  .ra-row .ra-btn { grid-column: 3; grid-row: 1; }
  .ra-cell { grid-column: 2 / -1; }
  .ra-cell.is-empty { display: none; }
  .ra-cell_name { display: block; margin-bottom: 4px; }
  .ra-auth { margin-block: 24px 50px; padding: 20px; }
  .ra-stage--animation iframe { height: 78vh; }
}

/* =====================================================================
   The roadmap page: every stage is a card with a looping animation on top
   (templates: home.html and _scene.html). Each card sets --c and --ct.
   ===================================================================== */
.ra-sc_page { padding-top: 32px; padding-bottom: 56px; }
.ra-sc_head { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 16px; margin-bottom: 20px; }
.ra-sc_head h1 { font-size: 34px; margin-bottom: 6px; }
.ra-sc_head p { color: var(--slate); font-size: 16px; line-height: 1.5; max-width: 760px; }
.ra-sc_side { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; }
.ra-sc_continue { display: inline-flex; flex-direction: column; text-decoration: none; padding: 8px 16px; border-radius: 12px; background: var(--teal); color: #fff; font-weight: 700; font-size: 15px; line-height: 1.3; }
.ra-sc_continue small { font-weight: 500; font-size: 12px; opacity: .85; }

.ra-sc_filters { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 18px; }
.ra-sc_filters button { font: 600 14px var(--body); padding: 7px 14px; border-radius: 999px; background: #fff; border: 1px solid var(--line); color: var(--ink); cursor: pointer; }
.ra-sc_filters button[aria-pressed="true"] { border-color: #2563EB; color: #2563EB; background: #EEF4FF; }
.ra-sc_filters small { color: var(--slate); font-weight: 500; font-size: 13px; margin-left: 2px; }

.ra-sc_pass { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 14px; background: #fff; border: 1px solid var(--line); border-left: 5px solid #2563EB; border-radius: 14px; padding: 16px 20px; margin-bottom: 28px; }
.ra-sc_pass b { font-family: var(--head); font-size: 20px; line-height: 1.2; display: block; }
.ra-sc_pass p { color: var(--slate); font-size: 14px; line-height: 1.5; margin-top: 2px; }
.ra-sc_pass.is-owned { border-left-color: var(--ok); }

.ra-sc_grid { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 24px; }
.ra-sc { display: flex; flex-direction: column; background: #fff; border: 1px solid #E3E8F0; border-radius: 18px; overflow: hidden; transition: transform .2s ease, box-shadow .2s ease; }
.ra-sc:hover { transform: translateY(-4px); box-shadow: 0 14px 30px rgba(23, 33, 58, .10); }
.ra-sc[hidden] { display: none; }
.ra-sc_scene { position: relative; display: block; height: 200px; background-color: var(--ct); background-image: radial-gradient(rgba(23,33,58,.07) 1px, transparent 1px); background-size: 16px 16px; border-bottom: 1px solid #E3E8F0; }
.ra-sc_art { position: absolute; inset: 0; width: 100%; height: 100%; }
.ra-sc_art text { font-family: var(--body); }
.ra-sc_no { position: absolute; top: 12px; left: 12px; z-index: 1; width: 34px; height: 34px; border-radius: 50%; background: #fff; border: 2.5px solid var(--c); color: var(--ink); display: grid; place-items: center; font: 700 16px var(--head); }
.ra-sc_badge { position: absolute; top: 14px; right: 12px; z-index: 1; display: inline-flex; align-items: center; gap: 6px; padding: 4px 10px; border-radius: 999px; background: #fff; font-size: 12px; font-weight: 700; line-height: 1.4; color: var(--ok); box-shadow: 0 1px 3px rgba(0,0,0,.08); }
.ra-sc_badge::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: currentColor; }
.ra-sc_badge--soon { color: #8A6A10; }
.ra-sc_badge--members { color: var(--purple); }
.ra-sc_badge--free { color: #fff; background: var(--ok); }
.ra-sc_badge--free::before { background: #fff; }

.ra-sc_body { padding: 18px 20px 6px; flex: 1; }
.ra-sc_flag { display: inline-block; margin-bottom: 6px; padding: 2px 10px; border-radius: 999px; background: var(--teal); color: #fff; font-size: 12px; font-weight: 700; }
.ra-sc_body h3 { font-size: 22px; line-height: 1.2; margin-bottom: 4px; }
.ra-sc_body h3 a { text-decoration: none; }
.ra-sc_body h3 a:hover { color: var(--c); }
.ra-sc_body p { color: var(--slate); font-size: 15px; line-height: 1.5; margin-bottom: 12px; }
.ra-sc_facts { display: flex; flex-wrap: wrap; gap: 6px 16px; margin: 0; padding: 0; list-style: none; font-size: 14px; font-weight: 600; line-height: 1.4; }
.ra-sc_facts li { display: inline-flex; align-items: center; gap: 6px; }
.ra-sc_facts li::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: var(--c); }
.ra-sc_facts .ra-sc_rate::before { display: none; }
.ra-sc_facts .ra-sc_rate .ra-stars { margin-right: 2px; }
.ra-sc_facts .ra-sc_free { color: var(--ok); }
.ra-sc_progress { margin-top: 12px; }
.ra-sc_progress span { display: block; height: 8px; border-radius: 99px; background: #E9EDF4; overflow: hidden; }
.ra-sc_progress i { display: block; height: 100%; border-radius: 99px; background: var(--c); }
.ra-sc_progress small { display: block; margin-top: 5px; font-size: 13px; color: var(--slate); }

.ra-sc_foot { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 14px 20px 18px; margin-top: 12px; border-top: 1px dashed #E3E8F0; }
.ra-sc_more { color: var(--c); font-weight: 700; text-decoration: none; font-size: 15px; }
a.ra-sc_more:hover { text-decoration: underline; }
span.ra-sc_more { color: var(--edge); }
.ra-sc_btn { display: inline-flex; align-items: center; gap: 8px; padding: 9px 16px; border-radius: 12px; background: var(--c); color: #fff; text-decoration: none; font-weight: 700; font-size: 15px; line-height: 1.3; white-space: nowrap; }
.ra-sc_btn:hover { filter: brightness(.94); }
.ra-sc_btn s { opacity: .75; font-weight: 500; font-size: 13px; }
.ra-sc_btn--open { background: var(--ok); }
.ra-sc_btn--off { background: #EEF1F6; color: var(--slate); cursor: default; }
.ra-sc_btn--off:hover { filter: none; }
.ra-sc_btn--pass { background: #2563EB; }
.ra-sc.is-soon .ra-sc_art { opacity: .55; filter: grayscale(.6); }
.ra-sc.is-soon { --c: #7A869E; --ct: #EEF1F6; }
.ra-sc_empty { padding: 40px; text-align: center; color: var(--slate); background: #fff; border: 1px dashed var(--line); border-radius: 18px; }

/* the animations: CSS here, and SVG <animateMotion> for things that travel along a path */
.ra-sc_scene * { transform-box: fill-box; }
.ra .sc-grow { transform-origin: left center; animation: ra-k-grow 6s ease-in-out infinite; }
.ra .sc-blink { animation: ra-k-blink 1s steps(2) infinite; }
.ra .sc-fade { animation: ra-k-fade 6s ease infinite; }
.ra .sc-pulse { transform-origin: center; animation: ra-k-pulse 2s ease-in-out infinite; }
.ra .sc-spin { transform-origin: center; animation: ra-k-spin 6s linear infinite; }
.ra .sc-hand { transform-origin: 50% 100%; animation: ra-k-spin 4s linear infinite; }
.ra .sc-draw { stroke-dasharray: 420; animation: ra-k-draw 4s ease-in-out infinite; }
.ra .sc-row { animation: 6s ease-in-out infinite; }
.ra .sc-stack { animation: ra-k-stack 3s ease-in-out infinite; }
.ra .sc-light { fill: #CBD3E1; animation: ra-k-light 4s ease infinite; }
.ra .sc-flow { animation: ra-k-flow 2.4s linear infinite; }
.ra .sc-bar { transform-origin: center bottom; animation: ra-k-bar 2.4s ease-in-out infinite; }
.ra .sc-fill { transform-origin: center bottom; animation: ra-k-fill 5s ease-in-out infinite; }
.ra .sc-joinline { stroke-dasharray: 90; stroke-dashoffset: 90; animation: ra-k-join 6s ease infinite; }
.ra .sc-joinrow { fill: #fff; animation: ra-k-joinrow 6s ease infinite; }
@keyframes ra-k-grow { 0% { transform: scaleX(0); } 25%, 85% { transform: scaleX(1); } 100% { transform: scaleX(1); opacity: 0; } }
@keyframes ra-k-stack { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-8px); } }
@keyframes ra-k-blink { 50% { opacity: 0; } }
@keyframes ra-k-fade { 0%, 55% { opacity: 0; } 65%, 90% { opacity: 1; } 100% { opacity: 0; } }
@keyframes ra-k-pulse { 50% { transform: scale(1.12); } }
@keyframes ra-k-spin { to { transform: rotate(360deg); } }
@keyframes ra-k-draw { 0% { stroke-dashoffset: 420; } 60%, 100% { stroke-dashoffset: 0; } }
@keyframes ra-k-light { 0% { fill: #CBD3E1; } 15%, 85% { fill: var(--c); } 100% { fill: #CBD3E1; } }
@keyframes ra-k-flow { from { transform: translateX(0); opacity: 0; } 10% { opacity: 1; } 90% { opacity: 1; } to { transform: translateX(190px); opacity: 0; } }
@keyframes ra-k-bar { 0%, 100% { transform: scaleY(.35); } 50% { transform: scaleY(1); } }
@keyframes ra-k-fill { 0% { transform: scaleY(.05); } 50%, 80% { transform: scaleY(1); } 100% { transform: scaleY(.05); } }
@keyframes ra-k-join { 0%, 10% { stroke-dashoffset: 90; } 30%, 85% { stroke-dashoffset: 0; } 100% { stroke-dashoffset: 90; } }
@keyframes ra-k-joinrow { 0%, 20% { fill: #fff; } 32%, 85% { fill: var(--ct); } 100% { fill: #fff; } }
@keyframes ra-k-rowA { 0%, 25% { transform: translateY(0); } 45%, 80% { transform: translateY(44px); } 100% { transform: translateY(0); } }
@keyframes ra-k-rowB { 0%, 25% { transform: translateY(0); } 45%, 80% { transform: translateY(-22px); } 100% { transform: translateY(0); } }
@keyframes ra-k-rowC { 0%, 25% { transform: translateY(0); } 45%, 80% { transform: translateY(22px); } 100% { transform: translateY(0); } }
@keyframes ra-k-rowD { 0%, 25% { transform: translateY(0); } 45%, 80% { transform: translateY(-44px); } 100% { transform: translateY(0); } }
/* off screen, or for someone who has turned motion off: stand still */
.ra-sc.is-paused .ra-sc_scene * { animation-play-state: paused !important; }
@media (prefers-reduced-motion: reduce) { .ra-sc_scene * { animation: none !important; } }
@media (max-width: 600px) {
  .ra-sc_page { padding-top: 20px; }
  .ra-sc_head h1 { font-size: 28px; }
  .ra-sc_grid { grid-template-columns: 1fr; gap: 18px; }
  .ra-sc_foot { flex-wrap: wrap; }
}

/* ---------------------------------------------------------------- the full-course offer on the roadmap page */
.ra-offer { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr); gap: 20px; align-items: stretch; margin-bottom: 30px; }
.ra-offer h2 { font-size: 22px; line-height: 1.2; }
.ra-offer_one { background: #fff; border: 1px solid #E3E8F0; border-radius: 18px; padding: 20px 22px; display: flex; flex-direction: column; }
.ra-offer_list { list-style: none; margin: 12px 0 0; padding: 0; font-size: 15px; line-height: 1.4; flex: 1; }
.ra-offer_list li { display: flex; justify-content: space-between; gap: 12px; padding: 7px 0; border-bottom: 1px dashed #E3E8F0; }
.ra-offer_list b { font-weight: 600; white-space: nowrap; }
.ra-offer_list .is-owned { color: var(--slate); }
.ra-offer_list .is-owned b { color: var(--ok); }
.ra-offer_total { display: flex; justify-content: space-between; align-items: baseline; margin-top: 12px; font-weight: 700; }
.ra-offer_total b { font: 700 24px var(--head); }
.ra-offer_total.is-more b { color: var(--slate); text-decoration: line-through; text-decoration-thickness: 2px; }  /* only when the full course costs less */
.ra-offer_full { position: relative; background: #EEF4FF; border: 2px solid #2563EB; border-radius: 18px; padding: 26px 24px 22px; box-shadow: 0 12px 28px rgba(37, 99, 235, .14); }
.ra-offer_ribbon { position: absolute; top: -13px; left: 22px; padding: 4px 12px; border-radius: 999px; background: #F59E0B; color: #fff; font-size: 13px; font-weight: 800; }
.ra-offer_price { margin-top: 6px; display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.ra-offer_price s { color: var(--slate); font-size: 20px; }
.ra-offer_price b { font: 700 40px/1.1 var(--head); color: #1D4ED8; }
.ra-offer_save { display: inline-block; margin-top: 4px; padding: 3px 12px; border-radius: 999px; background: var(--ok-t); color: var(--ok); font-weight: 800; font-size: 15px; }
.ra-offer_ticks { list-style: none; margin: 14px 0 18px; padding: 0; display: grid; gap: 6px; font-size: 15px; line-height: 1.45; }
.ra-offer_ticks li { position: relative; padding-left: 26px; }
.ra-offer_ticks li::before { content: "\2713"; position: absolute; left: 0; top: 0; width: 18px; height: 18px; border-radius: 50%; background: var(--ok); color: #fff; font-size: 11px; font-weight: 800; display: grid; place-items: center; margin-top: 2px; }
.ra-offer_btn { display: block; text-align: center; padding: 13px 18px; border-radius: 12px; background: #2563EB; color: #fff; text-decoration: none; font-weight: 800; font-size: 17px; }
.ra-offer_btn:hover { background: #1D4ED8; }
@media (max-width: 760px) { .ra-offer { grid-template-columns: 1fr; } .ra-offer_full { order: -1; } }

/* ---------------------------------------------------------------- the payment page: the bill, and the full course next to it */
.ra-bill { width: 100%; border-collapse: collapse; font-size: 16px; background: var(--mist); border-radius: 14px; overflow: hidden; }
.ra-bill th, .ra-bill td { padding: 10px 18px; text-align: left; font-weight: 500; }
.ra-bill td { text-align: right; white-space: nowrap; }
.ra-bill tr + tr th, .ra-bill tr + tr td { border-top: 1px solid var(--line); }
.ra-bill .is-total th, .ra-bill .is-total td { font-weight: 700; }
.ra-bill .is-total td { font: 700 24px/1.1 var(--head); }
.ra-better { position: relative; padding: 18px 18px 16px; border: 2px solid #2563EB; border-radius: 14px; background: #EEF4FF; display: grid; gap: 8px; }
.ra-better_tag { position: absolute; top: -12px; left: 16px; padding: 2px 10px; border-radius: 999px; background: #F59E0B; color: #fff; font-size: 12px; font-weight: 800; }
.ra-better b { font: 700 19px/1.25 var(--head); }
.ra-better p { font-size: 15px; line-height: 1.5; color: var(--ink); }
.ra-better .ra-btn { justify-self: start; }

/* ---------------------------------------------------------------- one by one vs the full course, right under the heading */
.ra-deal { display: grid; grid-template-columns: minmax(0, 0.8fr) auto minmax(0, 1.5fr); align-items: center; gap: 16px; margin: 4px 0 22px; }
.ra-deal small { display: block; font-size: 14px; font-weight: 600; color: var(--slate); line-height: 1.35; }
.ra-deal_one { align-self: stretch; background: #fff; border: 1px solid #E3E8F0; border-radius: 16px; padding: 16px 18px; }
.ra-deal_one > b { display: block; margin-top: 4px; font: 700 34px/1.1 var(--head); color: var(--ink); }
.ra-deal_one > b.is-more { color: #9AA4B5; text-decoration: line-through; text-decoration-thickness: 3px; text-decoration-color: #E25A2C; }
.ra-deal_list { margin-top: 8px; font-size: 14px; }
.ra-deal_list summary { cursor: pointer; color: #2563EB; font-weight: 600; }
.ra-deal_list ul { list-style: none; margin: 8px 0 0; padding: 0; }
.ra-deal_list li { display: flex; justify-content: space-between; gap: 10px; padding: 4px 0; border-bottom: 1px dashed #E3E8F0; }
.ra-deal_list .is-owned b { color: var(--ok); }
.ra-deal_vs { width: 44px; height: 44px; border-radius: 50%; background: var(--ink); color: #fff; display: grid; place-items: center; font: 700 16px var(--head); }
.ra-deal_full { position: relative; display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 8px 22px; background: #EEF4FF; border: 2px solid #2563EB; border-radius: 16px; padding: 22px 22px 18px; box-shadow: 0 12px 28px rgba(37, 99, 235, .14); }
.ra-deal_ribbon { position: absolute; top: -13px; left: 20px; padding: 3px 12px; border-radius: 999px; background: #F59E0B; color: #fff; font-size: 13px; font-weight: 800; }
.ra-deal_price b { display: block; margin-top: 2px; font: 700 40px/1.05 var(--head); color: #1D4ED8; }
.ra-deal_save { display: inline-block; margin-top: 6px; padding: 2px 10px; border-radius: 999px; background: var(--ok-t); color: var(--ok); font-weight: 800; font-size: 14px; }
.ra-deal_ticks { list-style: none; margin: 0; padding: 0; display: grid; gap: 4px; font-size: 14px; line-height: 1.4; }
.ra-deal_ticks li { position: relative; padding-left: 22px; }
.ra-deal_ticks li::before { content: "\2713"; position: absolute; left: 0; top: 2px; width: 16px; height: 16px; border-radius: 50%; background: var(--ok); color: #fff; font-size: 10px; font-weight: 800; display: grid; place-items: center; }
.ra-deal_btn { padding: 13px 20px; border-radius: 12px; background: #2563EB; color: #fff; text-decoration: none; font-weight: 800; font-size: 16px; white-space: nowrap; }
.ra-deal_btn:hover { background: #1D4ED8; }
.ra-deal_hint { margin: 0 0 18px; padding: 10px 14px; border-radius: 10px; background: #FFF7E6; border: 1px dashed #E0A100; font-size: 14px; }
@media (max-width: 1100px) { .ra-deal_full { grid-template-columns: auto minmax(0, 1fr); } .ra-deal_btn { grid-column: 1 / -1; text-align: center; } }
@media (max-width: 760px) {
  .ra-deal { grid-template-columns: 1fr; gap: 10px; }
  .ra-deal_vs { justify-self: center; width: 36px; height: 36px; font-size: 14px; }
  .ra-deal_full { grid-template-columns: 1fr; }
}