/* GMPQSHARE: written once and linked from every page that draws
   a question. Generated - edit question-look.py or
   question-font.py and run those, then run this. */

/* GMPQLOOK ==========================================================
   One table inside a question, and one only: the plain bordered table
   the digital SAT shows. No tint, no small caps, no bronze, no stretch.
   Written out box by box so it outranks both the site-wide th rule and
   the imported .qtable rule without a single !important.
   =============================================================== */
.op-stem table,
.op-fig table,
.op-card table,
.op-why table,
.op-whys table,
.op-expl table,
.op-ch table,
.qfig table,
.gmpfig table,
.stem table,
.hw-stem table,
.hw-fig table,
.qhtml table,
.qcard table,
.qc-stage table,
.chs table,
.hw-ch table,
.qc-ch table,
.opts table,
.choices table,
.tut-q table,
.ex-q table{
  border-collapse:collapse; border-spacing:0;
  display:block; width:fit-content; max-width:100%;
  overflow-x:auto; -webkit-overflow-scrolling:touch;
  margin:14px auto; background:#fff;
  font-size:15px; line-height:1.5;
}
.op-stem table th,
.op-stem table td,
.op-fig table th,
.op-fig table td,
.op-card table th,
.op-card table td,
.op-why table th,
.op-why table td,
.op-whys table th,
.op-whys table td,
.op-expl table th,
.op-expl table td,
.op-ch table th,
.op-ch table td,
.qfig table th,
.qfig table td,
.gmpfig table th,
.gmpfig table td,
.stem table th,
.stem table td,
.hw-stem table th,
.hw-stem table td,
.hw-fig table th,
.hw-fig table td,
.qhtml table th,
.qhtml table td,
.qcard table th,
.qcard table td,
.qc-stage table th,
.qc-stage table td,
.chs table th,
.chs table td,
.hw-ch table th,
.hw-ch table td,
.qc-ch table th,
.qc-ch table td,
.opts table th,
.opts table td,
.choices table th,
.choices table td,
.tut-q table th,
.tut-q table td,
.ex-q table th,
.ex-q table td{
  border:1px solid #15181f;
  padding:7px 16px;
  text-align:center; vertical-align:middle;
  font-family:Georgia,"Times New Roman",Times,serif;
  font-size:15px; font-weight:400; font-style:normal;
  letter-spacing:normal; text-transform:none; font-variant:normal;
  color:#15181f; background:#fff;
  /* a value never breaks in the middle; a long heading is allowed to
     take a second line rather than dragging the table off the card */
  white-space:nowrap;
}
.op-stem table th,
.op-fig table th,
.op-card table th,
.op-why table th,
.op-whys table th,
.op-expl table th,
.op-ch table th,
.qfig table th,
.gmpfig table th,
.stem table th,
.hw-stem table th,
.hw-fig table th,
.qhtml table th,
.qcard table th,
.qc-stage table th,
.chs table th,
.hw-ch table th,
.qc-ch table th,
.opts table th,
.choices table th,
.tut-q table th,
.ex-q table th{ font-weight:700; white-space:normal }
.op-stem table caption,
.op-fig table caption,
.op-card table caption,
.op-why table caption,
.op-whys table caption,
.op-expl table caption,
.op-ch table caption,
.qfig table caption,
.gmpfig table caption,
.stem table caption,
.hw-stem table caption,
.hw-fig table caption,
.qhtml table caption,
.qcard table caption,
.qc-stage table caption,
.chs table caption,
.hw-ch table caption,
.qc-ch table caption,
.opts table caption,
.choices table caption,
.tut-q table caption,
.ex-q table caption{
  caption-side:top; text-align:center;
  font-family:inherit; font-size:14px; font-weight:600;
  letter-spacing:normal; text-transform:none; color:#15181f;
  padding:0 0 7px 0;
}
/* a heading cell that carries the row's name reads as a name, not a heading */
.op-stem table tr > th:first-child,
.op-fig table tr > th:first-child,
.op-card table tr > th:first-child,
.op-why table tr > th:first-child,
.op-whys table tr > th:first-child,
.op-expl table tr > th:first-child,
.op-ch table tr > th:first-child,
.qfig table tr > th:first-child,
.gmpfig table tr > th:first-child,
.stem table tr > th:first-child,
.hw-stem table tr > th:first-child,
.hw-fig table tr > th:first-child,
.qhtml table tr > th:first-child,
.qcard table tr > th:first-child,
.qc-stage table tr > th:first-child,
.chs table tr > th:first-child,
.hw-ch table tr > th:first-child,
.qc-ch table tr > th:first-child,
.opts table tr > th:first-child,
.choices table tr > th:first-child,
.tut-q table tr > th:first-child,
.ex-q table tr > th:first-child{ text-align:center }

/* GMPQLOOK ----------------------------------------------------------
   A label in a figure is never crossed out by the drawing. The halo is
   painted first and the glyph on top of it, so the letters themselves
   are untouched - only the gap around them is cleared.
   =============================================================== */
.op-stem svg text,
.op-stem svg tspan,
.op-fig svg text,
.op-fig svg tspan,
.op-card svg text,
.op-card svg tspan,
.op-why svg text,
.op-why svg tspan,
.op-whys svg text,
.op-whys svg tspan,
.op-expl svg text,
.op-expl svg tspan,
.op-ch svg text,
.op-ch svg tspan,
.qfig svg text,
.qfig svg tspan,
.gmpfig svg text,
.gmpfig svg tspan,
.stem svg text,
.stem svg tspan,
.hw-stem svg text,
.hw-stem svg tspan,
.hw-fig svg text,
.hw-fig svg tspan,
.qhtml svg text,
.qhtml svg tspan,
.qcard svg text,
.qcard svg tspan,
.qc-stage svg text,
.qc-stage svg tspan,
.chs svg text,
.chs svg tspan,
.hw-ch svg text,
.hw-ch svg tspan,
.qc-ch svg text,
.qc-ch svg tspan,
.opts svg text,
.opts svg tspan,
.choices svg text,
.choices svg tspan,
.tut-q svg text,
.tut-q svg tspan,
.ex-q svg text,
.ex-q svg tspan{
  paint-order:stroke fill markers;
  stroke:#ffffff; stroke-width:.34em; stroke-opacity:1;
  stroke-linejoin:round; stroke-linecap:round;
}



/* GMPQFONT ==========================================================
   The words in a question, in the face OnePrep sets them in - measured
   off Jg's screenshots rather than guessed. Bundled with the site so
   every student sees the same letters, not whatever their machine
   happens to own.
   =============================================================== */
@font-face{font-family:'STIX Two Text';font-style:normal;font-weight:400;font-display:swap;
  src:url('fonts/stix-two-text-latin-400-normal.woff2') format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'STIX Two Text';font-style:italic;font-weight:400;font-display:swap;
  src:url('fonts/stix-two-text-latin-400-italic.woff2') format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'STIX Two Text';font-style:normal;font-weight:700;font-display:swap;
  src:url('fonts/stix-two-text-latin-700-normal.woff2') format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'STIX Two Text';font-style:italic;font-weight:700;font-display:swap;
  src:url('fonts/stix-two-text-latin-700-italic.woff2') format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'STIX Two Text';font-style:normal;font-weight:400;font-display:swap;
  src:url('fonts/stix-two-text-latin-ext-400-normal.woff2') format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'STIX Two Text';font-style:italic;font-weight:400;font-display:swap;
  src:url('fonts/stix-two-text-latin-ext-400-italic.woff2') format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'STIX Two Text';font-style:normal;font-weight:700;font-display:swap;
  src:url('fonts/stix-two-text-latin-ext-700-normal.woff2') format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'STIX Two Text';font-style:italic;font-weight:700;font-display:swap;
  src:url('fonts/stix-two-text-latin-ext-700-italic.woff2') format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'STIX Two Text';font-style:normal;font-weight:400;font-display:swap;
  src:url('fonts/stix-two-text-greek-400-normal.woff2') format('woff2');
  unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}
@font-face{font-family:'STIX Two Text';font-style:italic;font-weight:400;font-display:swap;
  src:url('fonts/stix-two-text-greek-400-italic.woff2') format('woff2');
  unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}
@font-face{font-family:'STIX Two Text';font-style:normal;font-weight:700;font-display:swap;
  src:url('fonts/stix-two-text-greek-700-normal.woff2') format('woff2');
  unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}
@font-face{font-family:'STIX Two Text';font-style:italic;font-weight:700;font-display:swap;
  src:url('fonts/stix-two-text-greek-700-italic.woff2') format('woff2');
  unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}
@font-face{font-family:'STIX Two Math';font-style:normal;font-weight:400;font-display:swap;
  src:url('fonts/stix-two-math-latin-400-normal.woff2') format('woff2')}

:root{
  --gmp-qserif:'STIX Two Text','STIX Two Math',Cambria,'Times New Roman',
    Times,serif;
}

/* the wording of a question, its choices and its worked answer */
.op-stem,
.op-ch,
.op-qtext,
.op-why,
.op-whys,
.op-w,
.op-expl,
.op-steps,
.op-grid label,
.op-ref,
.stem,
.hw-stem,
.qhtml,
.chs,
.hw-ch,
.qc-ch,
.opts,
.choices,
.qfig .sub,
.fignote{
  font-family:var(--gmp-qserif);
}
/* a data table inside a question reads in the same voice as the words
   around it (this replaces the Georgia set by GMPQLOOK) */
.op-stem table th,
.op-stem table td,
.op-fig table th,
.op-fig table td,
.op-card table th,
.op-card table td,
.op-why table th,
.op-why table td,
.op-whys table th,
.op-whys table td,
.op-expl table th,
.op-expl table td,
.op-ch table th,
.op-ch table td,
.qfig table th,
.qfig table td,
.gmpfig table th,
.gmpfig table td,
.stem table th,
.stem table td,
.hw-stem table th,
.hw-stem table td,
.hw-fig table th,
.hw-fig table td,
.qhtml table th,
.qhtml table td,
.qcard table th,
.qcard table td,
.qc-stage table th,
.qc-stage table td,
.chs table th,
.chs table td,
.hw-ch table th,
.hw-ch table td,
.qc-ch table th,
.qc-ch table td,
.opts table th,
.opts table td,
.choices table th,
.choices table td,
.tut-q table th,
.tut-q table td,
.ex-q table th,
.ex-q table td{
  font-family:var(--gmp-qserif);
  font-size:18px;
}

/* Inside the question player only, the size measured off OnePrep:
   22.5px on 32px of line. The card is 680px wide, which gives about 64
   characters to a line - OnePrep's 735px card gives about 66. Lesson
   pages keep their own sizes; only the face changes there. */
/* the paragraphs and list items inside the question have to be named
   as well: the site-wide layer sets `html body p, html body li` to 1rem,
   and a declaration on the paragraph itself beats anything the question
   box passes down to it. Without this line the box is 22.5px and every
   paragraph inside it is still 16px. */
#opShell .op-stem,
#opShell .op-stem p,
#opShell .op-stem li,
#opShell .op-qtext{ font-size:22.5px; line-height:32px }
#opShell .op-ch,
#opShell .op-ch p,
#opShell .op-ch li{ font-size:22.5px; line-height:1.42 }
#opShell .op-why,
#opShell .op-why p,
#opShell .op-why li,
#opShell .op-whys,
#opShell .op-whys p,
#opShell .op-whys li,
#opShell .op-expl,
#opShell .op-expl p,
#opShell .op-expl li{ font-size:19px; line-height:1.6 }
#opShell .op-stem table th,
#opShell .op-stem table td,
#opShell .op-fig table th,
#opShell .op-fig table td,
#opShell .qfig table th,
#opShell .qfig table td{ font-size:19px }

/* The letter in the circle stays sans, as OnePrep's does - it is a
   label on the control, not part of the sentence. The toolbar, the
   timer and the navigation are untouched for the same reason. */
#opShell .op-ch .op-l,
#opShell .op-ch .L,
#opShell .op-ch .lab{
  font-family:var(--gmp-sans,-apple-system,BlinkMacSystemFont,'Segoe UI',
    Roboto,Helvetica,Arial,sans-serif);
  font-size:15px;
}

/* the maths uses the companion face, so a formula and the sentence it
   sits in are one family */
#opShell math,
.op-stem math,
.op-ch math,
.op-why math,
.op-whys math,
.op-expl math{
  font-family:'STIX Two Math','STIX Two Text',Cambria Math,Cambria,
    'Times New Roman',Times,serif !important;
}


/* GMPTIDYCSS ==========================================================
   ROOM. Two things a student could not read, and why.

   A label with the graph drawn through it. The line is 2.4 wide and the
   letters are 10 high, so where they meet the label simply disappears.
   Painting a white box behind the label would clear it, but it would
   also cut a visible gap out of the line, which is worse - the line is
   the answer. paint-order draws a white outline around the LETTERS
   first and the letters on top of it, so the line still runs behind and
   between them and both stay readable.

   The width is deliberately modest. Too thick and adjacent glyphs merge
   into a white blob; 2.6 clears a 2.4 line with nothing to spare. */
.op-stem svg text,
.op-fig svg text,
.op-card svg text,
.qfig svg text,
.gmpfig svg text,
figure.fig svg text,
.mk-fig svg text,
.mk-pass svg text,
.hw-fig svg text,
.qcard svg text,
.qc-stage svg text{
  paint-order: stroke fill;
  stroke: #ffffff;
  stroke-width: 2.6px;
  stroke-linejoin: round;
  stroke-linecap: round;
}
/* the axes and the plotted line are drawn with <text> nowhere near them,
   so nothing else on the figure is touched by the rule above */

/* Two display equations stacked into a system had no space between the
   lines at all: the ≥ of the first equation touched the −2 of the
   second, and a fraction bar touched the line above it. */
.op-stem .mblock,
.op-card .mblock,
.mk-q .mblock,
.qcard .mblock,
.hw-stem .mblock,
.qc-stage .mblock{
  margin: 0.30em 0;
  line-height: 1.65;
}
.op-stem .mblock + .mblock,
.op-card .mblock + .mblock,
.mk-q .mblock + .mblock,
.qcard .mblock + .mblock,
.hw-stem .mblock + .mblock,
.qc-stage .mblock + .mblock{
  margin-top: 0.46em;
}
/* the same, for a system set as two block equations without the wrapper */
.op-stem math[display="block"],
.op-card math[display="block"],
.mk-q math[display="block"],
.qcard math[display="block"]{
  margin: 0.24em 0;
}

/* A table wide enough to need it scrolls inside its own box rather than
   pushing the page sideways - and says so, by keeping the scrollbar in
   view rather than hiding it until the pointer moves. */
.op-stem .gmp-tablewrap,
.op-fig .gmp-tablewrap,
.mk-q .gmp-tablewrap{
  overflow-x: auto;
  scrollbar-width: thin;
  -webkit-overflow-scrolling: touch;
}
/* GMPTIDYCSS ====================================================== end */


/* GMPONEVOICE =========================================================
   ONE READING VOICE.

   The question bank reads in STIX Two Text at 22.5px on a 32px line and
   Jg wants that everywhere a student reads a question. The faces were
   already loaded on every page; only the question bank's own containers
   were told to use them. These are the rest.

   Sizes are set in rem-free pixels to match the bank exactly, and only
   on the text of a question - never on the interface around it. */

:root{ --gmp-qsize:22.5px; --gmp-qline:32px; }

/* ---- the words of a question, wherever it is shown ---- */
.qcard .passage,
.qcard .qtext,
.qcard .choices,
/* the Reading and Writing player does not reuse the card - it builds its
   own left-hand pane, so the passage a student actually reads sits in
   .op-pass and was left in the interface font while the question beside
   it changed */
.op-pass,
.op-passage-inner,
.passage,
.qcard .choice,
.qcard .answerbox,
.qcard .wrongbox,
.qcard .confused,
.mk-pass,
.mk-stem,
.mk-ch,
.mk-rev .body,
.hw-stem,
.hw-ch,
.qc-stage,
.qc-ch,
.tut-q,
.ex-q,
.vb-m,
.vb-m2{
  font-family:var(--gmp-qserif);
}

/* ---- and at the size the bank reads at ---- */
.qcard .passage,
.qcard .passage p,
.qcard .qtext,
/* the player sets its own size on the passage, and a rule with an id in
   it is the only thing that beats that - the same trick the bank's own
   size rule uses one screen to the right */
#opShell .op-pass,
#opShell .op-pass .passage,
#opShell .op-pass .passage p,
#opShell .op-passage-inner .passage,
#opShell .op-passage-inner .passage p,
.op-pass .passage,
.op-pass .passage p,
.mk-pass,
.mk-pass p,
.mk-stem{
  font-size:var(--gmp-qsize);
  line-height:var(--gmp-qline);
}
.qcard .choice,
.qcard .choice p,
.mk-ch,
.mk-ch .t{
  font-size:var(--gmp-qsize);
  line-height:1.42;
}
/* a worked answer sits a little smaller than the question, as it does in
   the bank, so the question stays the thing being looked at */
.qcard .answerbox,
.qcard .answerbox p,
.qcard .wrongbox,
.qcard .wrongbox p,
.qcard .wrongbox li,
.qcard .confused,
.mk-rev .body,
.mk-rev .body p{
  font-size:19px;
  line-height:1.6;
}

/* On a narrow screen the reading size steps down rather than forcing the
   page sideways - the same step the bank already takes. */
@media (max-width:640px){
  :root{ --gmp-qsize:19px; --gmp-qline:28px; }
}

/* The interface keeps its own voice. Naming these back explicitly means
   a heading or a chip inside a question card cannot be dragged into the
   serif by the rules above. */
.qcard .qhead,
.qcard .qtitle,
.qcard .meta,
.qcard .chip,
.qcard .catpill,
.qcard .tag,
.mk-bar,
.mk-count,
.mk-clock,
.mk-btn,
.mk-tag,
.mk-num{
  font-family:var(--gmp-sans,-apple-system,BlinkMacSystemFont,'Segoe UI',
    'Inter Tight',Roboto,Helvetica,Arial,sans-serif);
  font-size:initial;
  line-height:initial;
}
/* GMPONEVOICE ===================================================== end */



/* GMPREADABLE ==========================================================
   TWO THINGS A STUDENT COULD NOT READ. Found by audit-contrast.js,
   confirmed by photographing the pixels. Neither was caused by the
   change of typeface; both predate it.
   =============================================================== */

/* 1. the calculus hero's second button was navy text on the navy hero,
      so the pill was drawn empty. html body .btn-ghost{color:navy} is a
      design-system rule meant for ghost buttons on white cards; inside a
      hero it hides them. .hero .btn-ghost is the more specific selector,
      so no !important is needed. */
.hero .btn-ghost,
.subhero .btn-ghost{
  color:#fff;
  border-color:rgba(255,255,255,.36);
}
.hero .btn-ghost:hover,
.subhero .btn-ghost:hover{
  border-color:#fff;
  background:rgba(255,255,255,.09);
}

/* 2. the selected past-paper chip: its title turned white when the chip
      turned navy, but its two lower lines kept the brown that had been
      chosen back when the chip was amber - about 1.2:1 against navy. */
html body .ptab.on span,
html body .ptab.on .pscore{
  color:rgba(255,255,255,.82);
}
html body .ptab.on .pscore.live{
  color:#9BE7C4;
  font-weight:700;
}
/* GMPREADABLE end ====================================================== */

/* GMPONEFONT ==========================================================
   ONE TYPEFACE, SHIPPED.

   Measured before this was written (audit-typography.js, all 82 pages
   opened in a real browser): 544 distinct type treatments, 17 different
   first-choice families, 98 different sizes. Of those families only
   STIX Two - the maths face - was actually bundled. Inter Tight (49.4%
   of all text), Fraunces (14.0%), JetBrains Mono (2.4%) and Iowan Old
   Style were all requests to the student's own machine, so the site
   looked like one thing on Jg's Mac and another on a student's laptop,
   at what was nominally the same size.

   Newsreader is now bundled, and every font variable on the site points
   at it - including --bar-sans, which 80 rules used and nothing ever
   defined.

   The maths is exempt and stays exempt: see the re-assertion at the
   bottom of this block. Newsreader has no radical, no summation sign
   and no maths italic.
   =============================================================== */
@font-face{font-family:'Newsreader';font-style:normal;font-weight:400;font-display:swap;
  src:url('fonts/newsreader-latin-400-normal.woff2') format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Newsreader';font-style:italic;font-weight:400;font-display:swap;
  src:url('fonts/newsreader-latin-400-italic.woff2') format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Newsreader';font-style:normal;font-weight:600;font-display:swap;
  src:url('fonts/newsreader-latin-600-normal.woff2') format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Newsreader';font-style:italic;font-weight:600;font-display:swap;
  src:url('fonts/newsreader-latin-600-italic.woff2') format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Newsreader';font-style:normal;font-weight:700;font-display:swap;
  src:url('fonts/newsreader-latin-700-normal.woff2') format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Newsreader';font-style:italic;font-weight:700;font-display:swap;
  src:url('fonts/newsreader-latin-700-italic.woff2') format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Newsreader';font-style:normal;font-weight:400;font-display:swap;
  src:url('fonts/newsreader-latin-ext-400-normal.woff2') format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'Newsreader';font-style:italic;font-weight:400;font-display:swap;
  src:url('fonts/newsreader-latin-ext-400-italic.woff2') format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'Newsreader';font-style:normal;font-weight:600;font-display:swap;
  src:url('fonts/newsreader-latin-ext-600-normal.woff2') format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'Newsreader';font-style:italic;font-weight:600;font-display:swap;
  src:url('fonts/newsreader-latin-ext-600-italic.woff2') format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'Newsreader';font-style:normal;font-weight:700;font-display:swap;
  src:url('fonts/newsreader-latin-ext-700-normal.woff2') format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'Newsreader';font-style:italic;font-weight:700;font-display:swap;
  src:url('fonts/newsreader-latin-ext-700-italic.woff2') format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}

:root{
  --serif:'Newsreader','Iowan Old Style','Palatino Linotype',Palatino,Georgia,'Times New Roman',serif;
  --sans:'Newsreader','Iowan Old Style','Palatino Linotype',Palatino,Georgia,'Times New Roman',serif;
  --ui:'Newsreader','Iowan Old Style','Palatino Linotype',Palatino,Georgia,'Times New Roman',serif;
  --disp:'Newsreader','Iowan Old Style','Palatino Linotype',Palatino,Georgia,'Times New Roman',serif;
  --display:'Newsreader','Iowan Old Style','Palatino Linotype',Palatino,Georgia,'Times New Roman',serif;
  --mono:'Newsreader','Iowan Old Style','Palatino Linotype',Palatino,Georgia,'Times New Roman',serif;
  --font-body:'Newsreader','Iowan Old Style','Palatino Linotype',Palatino,Georgia,'Times New Roman',serif;
  --font-display:'Newsreader','Iowan Old Style','Palatino Linotype',Palatino,Georgia,'Times New Roman',serif;
  --font-mono:'Newsreader','Iowan Old Style','Palatino Linotype',Palatino,Georgia,'Times New Roman',serif;
  --gmp-sans:'Newsreader','Iowan Old Style','Palatino Linotype',Palatino,Georgia,'Times New Roman',serif;
  --gmp-display:'Newsreader','Iowan Old Style','Palatino Linotype',Palatino,Georgia,'Times New Roman',serif;
  --gmp-serif:'Newsreader','Iowan Old Style','Palatino Linotype',Palatino,Georgia,'Times New Roman',serif;
  --gmp-mono:'Newsreader','Iowan Old Style','Palatino Linotype',Palatino,Georgia,'Times New Roman',serif;
  --bar-sans:'Newsreader','Iowan Old Style','Palatino Linotype',Palatino,Georgia,'Times New Roman',serif;
  --gmp-one:'Newsreader','Iowan Old Style','Palatino Linotype',Palatino,Georgia,'Times New Roman',serif;
  /* HOLDING THE SIZE.
     Newsreader's own x-height is 0.426 of its em (measured in the
     browser). Iowan Old Style's is larger, so swapping one for the other
     at the same stated px would have made every word visibly smaller -
     the opposite of "same size".

     0.482 is Iowan's ratio, read off Jg's own screenshot: in that image
     the answer-choice x-height measures 13px against the 22px letter
     circle beside it, and the circle gives the scale. The measurement is
     good to about 5%, so anything between 0.45 and 0.50 is the same
     picture to the eye. THIS IS THE ONE NUMBER TO CHANGE if the text
     wants to be a touch bigger or smaller - nothing else moves. */
  font-size-adjust:0.482;
}

/* every letter, including the ones set by a literal font-family rather
   than a variable - which was most of the drift */
*{font-family:var(--gmp-one)!important}

/* ...except the maths, which needs a maths face. Higher specificity
   than the catch-all, so this wins. font-size-adjust is switched off
   here too: STIX has its own x-height, and rescaling it to Newsreader's
   would resize every formula on the site. */
math, math *,
.mml, .mml *,
#opShell math, #opShell math *,
.op-stem math, .op-stem math *,
.op-ch math, .op-ch math *,
.op-why math, .op-why math *,
.op-whys math, .op-whys math *,
.op-expl math, .op-expl math *,
.stem math, .stem math *,
.qhtml math, .qhtml math *,
.chs math, .chs math *,
.choices math, .choices math *,
.opts math, .opts math *{
  font-family:'STIX Two Math','STIX Two Text',Cambria Math,Cambria,
    'Times New Roman',Times,serif!important;
  font-size-adjust:none;
}
/* the radical sign is a text character; GMPRad picks a face that has
   one. Left exactly as rad-fix.py set it. */
.rad, .rad *, .m .rad, .m .rad *{
  font-family:'GMPRad','Latin Modern Math','STIX Two Math','Cambria Math',
    Cambria,'Times New Roman',Times,serif!important;
  font-size-adjust:none;
}
/* the question bank's own maths spans, which are not <math> elements */
.m, .m *, .fr, .fr *, .num, .eqn, .eqline, .sys, .mml, .mml *{
  font-size-adjust:none;
}
/* GMPONEFONT end ====================================================== */

/* GMPRADBAR ==========================================================
   THE BAR OVER A SQUARE ROOT.

   Chromium lays the vinculum flush against the end of the radicand, with
   no overhang, so on a single-figure root the bar stops short of the
   digit and does not read as joined to the hook. Widening the radicand
   box by a sliver widens the bar with it.

   Checked against the alternatives first: the maths font IS loading, the
   GMPRad shim is not involved, and the lining-figures setting makes no
   difference. Only this does. The 0.14em was measured, not guessed - the
   same root rendered at seven sizes against five paddings.
   =============================================================== */
msqrt > :first-child:last-child,
mroot > :first-child{
  padding-inline-end:.14em;
}
/* GMPRADBAR end ====================================================== */
