/* kpress: katex/katex.min.css */
@font-face{font-display:block;font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url("../fonts/KaTeX_AMS-Regular.0cdd387c9590a1a9.woff2") format("woff2")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url("../fonts/KaTeX_Caligraphic-Regular.5d53e70ad607c235.woff2") format("woff2")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url("../fonts/KaTeX_Main-Bold.0f60d1b897938ec9.woff2") format("woff2")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url("../fonts/KaTeX_Main-Italic.97479ca6cce906ab.woff2") format("woff2")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url("../fonts/KaTeX_Main-Regular.c2342cd8b869e017.woff2") format("woff2")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url("../fonts/KaTeX_Math-Italic.7af58c5ec8f132a2.woff2") format("woff2")}@font-face{font-display:block;font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url("../fonts/KaTeX_Size1-Regular.6b47c40166b6dbe2.woff2") format("woff2")}@font-face{font-display:block;font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url("../fonts/KaTeX_Size2-Regular.d04c54219f9eaec6.woff2") format("woff2")}@font-face{font-display:block;font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url("../fonts/KaTeX_Size3-Regular.73d591271b160496.woff2") format("woff2")}@font-face{font-display:block;font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url("../fonts/KaTeX_Size4-Regular.a4af7d414440a1c1.woff2") format("woff2")}.katex{font:normal 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;position:relative;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}.katex .katex-version:after{content:"0.16.45"}.katex .katex-mathml{clip:rect(1px,1px,1px,1px);border:0;height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:-webkit-min-content;width:-moz-min-content;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-style:italic;font-weight:700}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathboldfrak,.katex .textboldfrak{font-family:KaTeX_Fraktur;font-weight:700}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .mathsfit,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{border-collapse:collapse;display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;position:relative;vertical-align:bottom}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;font-size:1px;min-width:2px;vertical-align:bottom;width:2px}.katex .vbox{align-items:baseline;display:inline-flex;flex-direction:column}.katex .hbox{width:100%}.katex .hbox,.katex .thinbox{display:inline-flex;flex-direction:row}.katex .thinbox{max-width:0;width:0}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .smash{display:inline;line-height:0}.katex .clap,.katex .llap,.katex .rlap{position:relative;width:0}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{border:0 solid;display:inline-block;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline{border-bottom-style:dashed;display:inline-block;width:100%}.katex .sqrt>.root{margin-left:.2777777778em;margin-right:-.5555555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.1666666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.6666666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.4566666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.1466666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.7142857143em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.8571428571em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.1428571429em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.2857142857em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.4285714286em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.7142857143em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.0571428571em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.4685714286em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.9628571429em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.5542857143em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.7777777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.8888888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.1111111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.3044444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.7644444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.5833333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.7283333333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.0733333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.4861111111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.4402777778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.7277777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.2893518519em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.4050925926em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.462962963em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.5208333333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.2002314815em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.4398148148em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.2410800386em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.2892960463em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.337512054em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.3857280617em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.4339440694em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.4821600771em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.5785920926em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.6943105111em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.8331726133em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.1996142719em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.2009646302em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.2411575563em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.2813504823em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.3215434084em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.3617363344em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.4019292605em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.4823151125em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.578778135em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.6945337621em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.8336012862em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{fill:currentColor;stroke:currentColor;display:block;height:inherit;position:absolute;width:100%}.katex svg path{stroke:none}.katex svg{fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1}.katex img{border-style:none;max-height:none;max-width:none;min-height:0;min-width:0}.katex .stretchy{display:block;overflow:hidden;position:relative;width:100%}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{overflow:hidden;position:relative;width:100%}.katex .halfarrow-left{left:0;overflow:hidden;position:absolute;width:50.2%}.katex .halfarrow-right{overflow:hidden;position:absolute;right:0;width:50.2%}.katex .brace-left{left:0;overflow:hidden;position:absolute;width:25.1%}.katex .brace-center{left:25%;overflow:hidden;position:absolute;width:50%}.katex .brace-right{overflow:hidden;position:absolute;right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .cd-arrow-pad{padding:0 .55556em 0 .27778em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{border:.04em solid;box-sizing:border-box}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex .angl{border-right:.049em solid;border-top:.049em solid;box-sizing:border-box;margin-right:.03889em}.katex .anglpad{padding:0 .03889em}.katex .eqn-num:before{content:"(" counter(katexEqnNo) ")";counter-increment:katexEqnNo}.katex .mml-eqn-num:before{content:"(" counter(mmlEqnNo) ")";counter-increment:mmlEqnNo}.katex .mtr-glue{width:50%}.katex .cd-vert-arrow{display:inline-block;position:relative}.katex .cd-label-left{display:inline-block;position:absolute;right:calc(50% + .3em);text-align:left}.katex .cd-label-right{display:inline-block;left:calc(50% + .3em);position:absolute;text-align:right}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{padding-left:2em;text-align:left}body{counter-reset:katexEqnNo mmlEqnNo}

/* kpress: katex/katex-text-face.css */
/* KPress Math Text -- the reading face inside KaTeX mathematics.
 *
 * WHAT THIS IS. One composite CSS family, `KPress Math Text`, in four
 * style/weight slots. Each slot is two @font-face rules that share the same
 * descriptors and carve out DISJOINT `unicode-range`s:
 *
 *   1. the reading face (PT Serif) for Latin letters, and digits in the
 *      upright slots -- the glyphs a reader recognizes as "the text face";
 *   2. the KaTeX face this slot replaces, restricted to Greek and scaled by
 *      `size-adjust` so Computer Modern's Greek reaches PT Serif's height.
 *
 * Everything else -- operators, relations, punctuation, accents, arrows, every
 * other script -- is deliberately claimed by no face here. CSS Fonts 4 moves a
 * code point no face of a composite covers to the NEXT FAMILY in the stack,
 * and every rule below names the KaTeX face the slot replaces right after the
 * composite, so those glyphs come from the same face they always did. Declaring
 * them here as well would only duplicate the KaTeX faces: no bytes in hosted
 * modes, but a second copy of each face in a page that inlines everything.
 *
 * Delimiters, big operators, AMS, calligraphic, fraktur, script, sans and
 * typewriter stay on their own KaTeX families and are not touched here.
 *
 * WHY IT IS KPRESS-AUTHORED AND LAZY. `katex.min.css` next to this file is a
 * pinned upstream bundle that stays byte-identical through the next KaTeX bump,
 * so the correction lives in its own stylesheet rather than as a patch to it.
 * It sits under `katex/` because it belongs to the KaTeX lazy closure: it is
 * emitted only for documents that contain math, next to the faces it names, and
 * a document without math loads none of it. Everything under `katex/` keeps
 * stable, unhashed names in every asset mode and is always linked (never
 * inlined), so the relative `../fonts/` and `../katex/fonts/` URLs below resolve
 * in `hosted`, `linked`, `hashed` and `inline` alike.
 *
 * `font-display: block` on every screen face of BOTH composites -- the serif
 * `KPress Math Text` and the sans `KPress Math Text Sans` below -- as on the
 * prose PT Serif faces in style-tokens.css and unlike the vendored KaTeX
 * bundle's `swap`. A late slot can visibly repaint the letters and digits.
 * `katex-math-runtime.js` waits for the glyphs used by each hidden rendered
 * formula, including its composite slots and KaTeX construct
 * families. The formula is revealed only when its required faces are ready;
 * `block` also briefly suppresses fallback glyphs when the CSS is used without
 * that JavaScript boundary.
 *
 * The four static instances inside the `@media print` block keep `swap`, and
 * deliberately: there is no first paint to protect in a printed page, the print
 * path has already resolved its fonts before it composes a page, and `block`
 * blanks a whole run rather than the code points the face claims -- a cost worth
 * paying against a flash on screen and not worth paying against a blank run in a
 * PDF.
 *
 * THE CONTRACT FOR A HOST WITH ANOTHER READING FACE. Two hooks, both additive:
 *
 *   - Declare your own `KPress Math Text` @font-face rules AFTER this
 *     stylesheet, covering the ranges your face should draw. CSS Fonts 4 checks
 *     the last-defined face first, so your ranges win and the KaTeX fallbacks
 *     below keep everything you did not claim.
 *   - Ship your own `globalThis.kpressKatexTextMetrics` (same shape as
 *     `katex/katex-text-metrics.js`, generated by the same devtool) before
 *     `katex-math-runtime.js` runs, so KaTeX lays out from the metrics of the glyphs it
 *     actually draws.
 *
 * Supplying the faces without the metrics leaves KaTeX measuring Computer
 * Modern while drawing your face; supplying the metrics without the faces does
 * the reverse. They are one contract.
 *
 * SPECIFICITY. This stylesheet is linked after `katex.min.css`, but nothing
 * below relies on that: upstream's rules are `.katex` (0,1,0) and
 * `.katex .mathnormal` (0,2,0), and every selector here carries at least one
 * extra class or attribute, exactly as the "KaTeX sizing" block in
 * components.css does and for the same reason. The opt-out reverts add one more
 * attribute on top of the feature rules, so they win in both directions.
 */

/* ===================== SLOT 1: normal 400 (KaTeX_Main-Regular) ===================== */

@font-face {
  font-family: "KPress Math Text";
  font-style: normal;
  font-weight: 400;
  font-display: block;
  src: url("../fonts/pt-serif-latin-400-normal.4271064a37f3ffc0.woff2") format("woff2");
  unicode-range: U+0030-0039, U+0041-005A, U+0061-007A;
}

@font-face {
  font-family: "KPress Math Text";
  font-style: normal;
  font-weight: 400;
  font-display: block;
  /* Greek to PT Serif's cap height; `katex_text_metrics --print-scale` (Main-Regular). */
  size-adjust: 102.5%;
  src: url("../fonts/KaTeX_Main-Regular.c2342cd8b869e017.woff2") format("woff2");
  unicode-range: U+0391-03A9;
}

/* ====================== SLOT 2: italic 400 (KaTeX_Math-Italic) ===================== */

@font-face {
  font-family: "KPress Math Text";
  font-style: italic;
  font-weight: 400;
  font-display: block;
  src: url("../fonts/pt-serif-latin-400-italic.cb373bde18855c82.woff2") format("woff2");
  unicode-range: U+0041-005A, U+0061-007A;
}

@font-face {
  font-family: "KPress Math Text";
  font-style: italic;
  font-weight: 400;
  font-display: block;
  /* Greek to PT Serif's x-height; `katex_text_metrics --print-scale` (Math-Italic). */
  size-adjust: 115%;
  src: url("../fonts/KaTeX_Math-Italic.7af58c5ec8f132a2.woff2") format("woff2");
  unicode-range: U+0370-03FF;
}

/* ======================= SLOT 3: normal 700 (KaTeX_Main-Bold) ====================== */

@font-face {
  font-family: "KPress Math Text";
  font-style: normal;
  font-weight: 700;
  font-display: block;
  src: url("../fonts/pt-serif-latin-700-normal.bf23a7a4eebedbb8.woff2") format("woff2");
  unicode-range: U+0030-0039, U+0041-005A, U+0061-007A;
}

@font-face {
  font-family: "KPress Math Text";
  font-style: normal;
  font-weight: 700;
  font-display: block;
  /* Greek to PT Serif's cap height; `katex_text_metrics --print-scale` (Main-Bold). */
  size-adjust: 102%;
  src: url("../fonts/KaTeX_Main-Bold.0f60d1b897938ec9.woff2") format("woff2");
  unicode-range: U+0391-03A9;
}

/* ==================== SLOT 4: italic 700 (KaTeX_Math-BoldItalic) =================== */





/* ============================== THE FEATURE RULES ================================== */

/* Scoped positively, so there is nothing to revert: every rule below applies to a
   `.kpress` that has not opted out, and one that has keeps upstream's `.katex`
   rules and style-tokens.css's 1.05em exactly as they are. Three ways out, each
   honoured on the wrapper itself and on any ancestor:

   - `data-kpress-math-text="katex"`. The page shell stamps <html> from
     `RenderOptions.math_text_font`; an embedding host stamps its own root; a
     fragment under neither gets the face.
   - `data-kpress-fonts="system"`, the wrapper's baked font mode.
   - `data-kpress-font-set="system"`, the reader's persisted choice, which
     theme-bootstrap.js stamps on <html> before first paint.

   In either system mode the vendored reading face is not loaded, so the composite
   would have nothing to draw the Latin ranges with. The shared runtime applies the
   metric tables under the same three conditions -- read with `closest()`, which
   is why each one appears twice below, once for the element and once for its
   descendants -- and reverts the face itself when the tables cannot be applied,
   so what KaTeX measures and what it draws agree. A nested per-node opt-out is
   marked `data-kpress-math-face="katex"`; the rules at the end restore its stock
   families even inside a wrapper that uses the custom face.

   THE SECOND SCOPE ROOT is the footnote/section preview overlay. It carries a
   clone of already-rendered math, and tooltips.js mounts it on the viewport pane
   or the body, outside every `.kpress`. The metric tables are page-global, so the
   clone is laid out from whichever mode the document is in; the overlay therefore
   has to be drawn and sized in that same mode or the two disagree. tooltips.js
   resolves the originating wrapper's mode against the same three opt-outs and
   stamps it as `data-kpress-math-text`, so the overlay opts in explicitly rather
   than by position. `.kpress-tooltip[data-kpress-math-text="prose"]` is (0,2,0),
   the same as `.kpress:not(...)`, and `:is()` takes the higher of its arguments,
   so the specificity notes below hold for both roots.

   `:not()` with a selector list and descendant combinators inside it: Chrome 88,
   Firefox 84, Safari 9. `:is()`: Chrome 88, Firefox 88, Safari 14. The scope is
   (0,2,0), so the family rules land at (0,3,0) and (0,4,0) against upstream's
   (0,1,0) and (0,2,0), and the size token at (0,2,0) against style-tokens.css's
   (0,1,0): link order decides nothing here. */

/* With the letters and digits in the reading face, mathematics is the prose
   size: upstream's 1.21em lift exists to seat Computer Modern beside a
   Times-like body face, and there is nothing left to seat. That goes for
   display math too: TeX sets a displayed equation at the text size, and the
   1.1em the display token carries for Computer Modern read, once the letters
   were the reading face, as a paragraph set a size larger. The sans token
   (1em) already agrees; the consumers are in components.css, which applies them
   inside the preview overlay as well as inside the document. */
:is(
  .kpress:not(
    [data-kpress-fonts="system"],
    [data-kpress-font-set="system"],
    [data-kpress-math-text="katex"],
    [data-kpress-fonts="system"] *,
    [data-kpress-font-set="system"] *,
    [data-kpress-math-text="katex"] *
  ),
  .kpress-tooltip[data-kpress-math-text="prose"]
) {
  --kpress-katex-size-prose: 1em;
  --kpress-katex-size-display: 1em;
}

/* The root rule reaches digits, operator names, `\text{}` and `\mathrm{}`,
   which carry no font class of their own. The family after the composite is not a
   fallback for a missing download: it is where every code point the composite
   does not claim is drawn, so each rule names the KaTeX face its slot replaces. */
:is(
    .kpress:not(
      [data-kpress-fonts="system"],
      [data-kpress-font-set="system"],
      [data-kpress-math-text="katex"],
      [data-kpress-fonts="system"] *,
      [data-kpress-font-set="system"] *,
      [data-kpress-math-text="katex"] *
    ),
    .kpress-tooltip[data-kpress-math-text="prose"]
  )
  .katex {
  font-family: "KPress Math Text", KaTeX_Main, "Times New Roman", serif;
}

/* Variables (`n`, `t_k`): upstream draws them from KaTeX_Math. */
:is(
    .kpress:not(
      [data-kpress-fonts="system"],
      [data-kpress-font-set="system"],
      [data-kpress-math-text="katex"],
      [data-kpress-fonts="system"] *,
      [data-kpress-font-set="system"] *,
      [data-kpress-math-text="katex"] *
    ),
    .kpress-tooltip[data-kpress-math-text="prose"]
  )
  .katex
  .mathnormal {
  font-family: "KPress Math Text", KaTeX_Math, serif;
  font-style: italic;
}

/* `\mathit`: upstream draws it from KaTeX_Main italic and lays it out from the
   Main-Italic table, so KaTeX_Main follows the composite here, not KaTeX_Math.
   Its Greek is drawn by the italic slot's Math-Italic face, so the generator
   copies the Greek rows from the Math-Italic table -- not Main-Italic's, whose
   advances and skews are a different face's -- and scales them by that face's
   factor. */
:is(
    .kpress:not(
      [data-kpress-fonts="system"],
      [data-kpress-font-set="system"],
      [data-kpress-math-text="katex"],
      [data-kpress-fonts="system"] *,
      [data-kpress-font-set="system"] *,
      [data-kpress-math-text="katex"] *
    ),
    .kpress-tooltip[data-kpress-math-text="prose"]
  )
  .katex
  .mathit {
  font-family: "KPress Math Text", KaTeX_Main, serif;
  font-style: italic;
}

:is(
    .kpress:not(
      [data-kpress-fonts="system"],
      [data-kpress-font-set="system"],
      [data-kpress-math-text="katex"],
      [data-kpress-fonts="system"] *,
      [data-kpress-font-set="system"] *,
      [data-kpress-math-text="katex"] *
    ),
    .kpress-tooltip[data-kpress-math-text="prose"]
  )
  .katex
  .mathbf {
  font-family: "KPress Math Text", KaTeX_Main, serif;
  font-weight: 700;
}

:is(
    .kpress:not(
      [data-kpress-fonts="system"],
      [data-kpress-font-set="system"],
      [data-kpress-math-text="katex"],
      [data-kpress-fonts="system"] *,
      [data-kpress-font-set="system"] *,
      [data-kpress-math-text="katex"] *
    ),
    .kpress-tooltip[data-kpress-math-text="prose"]
  )
  .katex
  .boldsymbol {
  font-family: "KPress Math Text", KaTeX_Math, serif;
  font-style: italic;
  font-weight: 700;
}

/* `\textrm{}` and `\text{}` take the family only. Upstream gives `.textrm` no
   `font-style`: the upright default reaches it from the root `.katex` `font`
   shorthand at (0,1,0), which leaves an explicit `\textit` nested inside --
   KaTeX emits one `.mord.textrm.textit` leaf for `\textrm{\textit{x}}` -- free to
   win at (0,2,0). Pinning `font-style: normal` here would outrank `.textit` and
   draw the upright slot over a run KaTeX laid out from the italic table. Only
   `.mainrm` gets the pin, because upstream pins it too. */
:is(
    .kpress:not(
      [data-kpress-fonts="system"],
      [data-kpress-font-set="system"],
      [data-kpress-math-text="katex"],
      [data-kpress-fonts="system"] *,
      [data-kpress-font-set="system"] *,
      [data-kpress-math-text="katex"] *
    ),
    .kpress-tooltip[data-kpress-math-text="prose"]
  )
  .katex
  .textrm {
  font-family: "KPress Math Text", KaTeX_Main, serif;
}

:is(
    .kpress:not(
      [data-kpress-fonts="system"],
      [data-kpress-font-set="system"],
      [data-kpress-math-text="katex"],
      [data-kpress-fonts="system"] *,
      [data-kpress-font-set="system"] *,
      [data-kpress-math-text="katex"] *
    ),
    .kpress-tooltip[data-kpress-math-text="prose"]
  )
  .katex
  .mainrm {
  font-family: "KPress Math Text", KaTeX_Main, serif;
  font-style: normal;
}

/* ============================ KPRESS MATH TEXT SANS ================================ */

/* A second composite, for the sans roles of a serif document -- a caption, a footnote,
 * a table, the dialect boxes -- and for the reader's sans reading face. Same idea and
 * same slot structure as `KPress Math Text` above; Source Sans 3 draws the Latin ranges
 * instead of PT Serif, and the KaTeX faces are scaled to Source Sans's own measures.
 * The mathematics in a caption is then set in the caption's face rather than the
 * document's, which is what the size token beside it (`--kpress-katex-size-sans`, 1em)
 * has always assumed.
 *
 * PINNED WEIGHTS. Each slot declares a SINGLE `font-weight`, not the variable face's
 * whole 200-900 axis, and its metric table is built at that weight. A KaTeX metric
 * table describes one face and one weight, and Source Sans's advances travel along the
 * axis -- a median 7.1% and a worst 20.5% between 370 and 700, against 0.035em of
 * movement in the tallest ink height. CSS Fonts 4 clamps a variable face to the range
 * its `@font-face` declares, so a single value draws the weight the table was built at
 * whatever the context asks for, and KaTeX never lays out glyphs it has no numbers for.
 *
 * The regular weight comes from `--kpress-font-weight-sans-regular` in
 * style-tokens.css. instance_sans.py and katex_text_metrics.py generate its static
 * instances, fixed face descriptors, private CSS weight and matching tables together.
 * The regular CSS rule below overrides KaTeX's shorthand weight reset with that fixed
 * value. A host changing the source token must regenerate both tools; overriding only
 * the live prose token does not change the baked mathematics.
 *
 * Bold stays at 650. Its rules use a literal because a host may override the public
 * sans-bold prose token, whereas the bold metric tables describe only the 650 face.
 * CSS Fonts 4's weight matching can otherwise choose a regular face for a host's
 * lower bold request, drawing regular outlines over bold metrics.
 *
 * PRINT. The screen draws the Latin ranges from the variable faces; a printed page
 * cannot, because Chromium's PDF writer turns a variable face away from its default
 * position into Type3 outline paths (see css/print-fonts.css, which does the same for
 * the plain sans role). The `@media print` block at the end of this section layers the
 * static instances at the same two weights over the same ranges, LAST, so CSS Fonts 4's
 * last-defined-face rule gives them to print and leaves the screen alone. The two agree
 * to the unit: instancing the variable face at the generated weights reproduces every Latin
 * advance of the shipped instance exactly, so one metric table is true of both.
 *
 * The rules are separate from the ones above rather than folded into them, and each
 * scope is its own rule, to keep every selector well inside the 400-character budget a
 * consuming host's stylesheet check applies.
 */

/* BEGIN GENERATED SANS FACES: devtools.katex_text_metrics */
:root {
  --_kpress-math-sans-regular-weight: 410;
}

@font-face {
  font-family: "KPress Math Text Sans";
  font-style: normal;
  font-weight: 410;
  font-display: block;
  src: url("../fonts/source-sans-3-latin-wght-normal.7a19a7027e125257.woff2") format("woff2");
  unicode-range: U+0030-0039, U+0041-005A, U+0061-007A;
}

@font-face {
  font-family: "KPress Math Text Sans";
  font-style: normal;
  font-weight: 410;
  font-display: block;
  size-adjust: 96%;
  src: url("../fonts/KaTeX_Main-Regular.c2342cd8b869e017.woff2") format("woff2");
  unicode-range: U+0391-03A9;
}

@font-face {
  font-family: "KPress Math Text Sans";
  font-style: italic;
  font-weight: 410;
  font-display: block;
  src: url("../fonts/source-sans-3-latin-wght-italic.9a15dafc2c2b2414.woff2") format("woff2");
  unicode-range: U+0041-005A, U+0061-007A;
}

@font-face {
  font-family: "KPress Math Text Sans";
  font-style: italic;
  font-weight: 410;
  font-display: block;
  size-adjust: 110.2%;
  src: url("../fonts/KaTeX_Math-Italic.7af58c5ec8f132a2.woff2") format("woff2");
  unicode-range: U+0370-03FF;
}

@font-face {
  font-family: "KPress Math Text Sans";
  font-style: normal;
  font-weight: 650;
  font-display: block;
  src: url("../fonts/source-sans-3-latin-wght-normal.7a19a7027e125257.woff2") format("woff2");
  unicode-range: U+0030-0039, U+0041-005A, U+0061-007A;
}

@font-face {
  font-family: "KPress Math Text Sans";
  font-style: normal;
  font-weight: 650;
  font-display: block;
  size-adjust: 95.2%;
  src: url("../fonts/KaTeX_Main-Bold.0f60d1b897938ec9.woff2") format("woff2");
  unicode-range: U+0391-03A9;
}





@media print {
  @font-face {
    font-family: "KPress Math Text Sans";
    font-style: normal;
    font-weight: 410;
    font-display: swap;
    src: url("../fonts/kpress-print-sans-latin-410-normal.bf059edc7dd4843b.woff2") format("woff2");
    unicode-range: U+0030-0039, U+0041-005A, U+0061-007A;
  }

  @font-face {
    font-family: "KPress Math Text Sans";
    font-style: italic;
    font-weight: 410;
    font-display: swap;
    src: url("../fonts/kpress-print-sans-latin-410-italic.298817be3c07f0d3.woff2") format("woff2");
    unicode-range: U+0041-005A, U+0061-007A;
  }

  @font-face {
    font-family: "KPress Math Text Sans";
    font-style: normal;
    font-weight: 650;
    font-display: swap;
    src: url("../fonts/kpress-print-sans-latin-650-normal.8cd1aee8d860fe72.woff2") format("woff2");
    unicode-range: U+0030-0039, U+0041-005A, U+0061-007A;
  }

  
}
/* END GENERATED SANS FACES */

/* ---------------------------- THE SANS FEATURE RULES ------------------------------ */

/* Two scopes, one composite. The first is the document itself, reached by the mark
   `katex-init.js` stamps on every math node it installs the sans metric tables for:
   a caption, a footnote, a table cell, one of the semantic containers, a `<details>`,
   a tab button -- and, when the reader has chosen the sans reading face, every node in
   the document. The second is the footnote preview overlay, at the end of this section.

   THE MARK RATHER THAN A ROLE LIST. These rules used to spell the twelve sans roles out,
   once per repointed class and a second seven times for the reading face: fourteen copies
   of a selector `katex-init.js` also has to spell, in a language where it cannot be
   shared. Both costs were real. A role dropped from one of the fourteen drew Source Sans
   over Computer Modern's numbers in that one role with the whole suite still green, since
   only the first copy was ever pinned against the script. And the seven role selectors
   ran to 477 characters against the 400 a consuming host's stylesheet check allows, so
   the next role could not be added at all. Keying on the mark costs one attribute per
   rendered math node and leaves ONE list, in the file that must have it anyway, since
   only a script can install a metric table.

   A page without JavaScript is unaffected. There is no `.katex` for any of these rules to
   match until the script has rendered one, only the semantic MathML fallback.

   The mark says nothing about the opt-outs, so the `:not()` stays, spelled the way the
   serif rules above spell it: each attribute twice, once for the wrapper itself and once
   for an ancestor, because `closest()` reads both. `katex-init.js` marks a node wherever
   the sans set is what it installs, which includes a wrapper that opted out inside a page
   that did not, so dropping the guard here would draw Source Sans over the Computer
   Modern numbers that wrapper asked to keep.

   Specificity is what it was before the mark: `.kpress:not(...)` at (0,2,0), plus the
   mark, plus `.katex` lands the root rule at (0,4,0) against the serif root rule's
   (0,3,0), and each leaf class one higher again, (0,5,0) against (0,4,0). Margin +1
   everywhere, so the sans composite wins inside a sans context, does not exist outside
   one, and neither result is a matter of source order.

   Headings and the TOC are sans roles and are deliberately NOT marked, which
   `katex-init.js` decides by leaving them out of `SANS_CONTEXT`, for two different
   reasons. A heading sits a weight step away from the words around it -- `h3` at 550,
   `h4` at 540, `h2` in the serif italic -- and a table built at the regular weight describes none of
   those, so its mathematics would be a step off its own text whichever composite drew it.
   The TOC carries no mathematics at all: `render.py` escapes entry titles when it builds
   the TOC, so no `.katex` ever reaches it.

   `.textrm` takes the family only here, for the reason the serif rule above records:
   pinning `font-style: normal` at (0,5,0) would outrank the `.textit` nested inside a
   `\textrm{\textit{x}}` leaf and draw the upright slot over an italic-measured run.
   `.mainrm` keeps the pin, because upstream pins it too. */

/* --- the document, by the mark katex-init.js stamps --- */

.kpress:not(
    [data-kpress-fonts="system"],
    [data-kpress-font-set="system"],
    [data-kpress-math-text="katex"],
    [data-kpress-fonts="system"] *,
    [data-kpress-font-set="system"] *,
    [data-kpress-math-text="katex"] *
  ) [data-kpress-math-face="sans"]
  .katex {
  font-family: "KPress Math Text Sans", KaTeX_Main, "Times New Roman", serif;
  font-weight: var(--_kpress-math-sans-regular-weight);
}

.kpress:not(
    [data-kpress-fonts="system"],
    [data-kpress-font-set="system"],
    [data-kpress-math-text="katex"],
    [data-kpress-fonts="system"] *,
    [data-kpress-font-set="system"] *,
    [data-kpress-math-text="katex"] *
  )
  [data-kpress-math-face="sans"]
  .katex
  .mathnormal {
  font-family: "KPress Math Text Sans", KaTeX_Math, serif;
  font-style: italic;
}

.kpress:not(
    [data-kpress-fonts="system"],
    [data-kpress-font-set="system"],
    [data-kpress-math-text="katex"],
    [data-kpress-fonts="system"] *,
    [data-kpress-font-set="system"] *,
    [data-kpress-math-text="katex"] *
  )
  [data-kpress-math-face="sans"]
  .katex
  .mathit {
  font-family: "KPress Math Text Sans", KaTeX_Main, serif;
  font-style: italic;
}

/* Pin the generated bold slot, independently of a host's prose weight override.
   A request inside [400, 500] can otherwise choose the regular face under bold metrics. */
.kpress:not(
    [data-kpress-fonts="system"],
    [data-kpress-font-set="system"],
    [data-kpress-math-text="katex"],
    [data-kpress-fonts="system"] *,
    [data-kpress-font-set="system"] *,
    [data-kpress-math-text="katex"] *
  ) [data-kpress-math-face="sans"]
  .katex
  .mathbf {
  font-family: "KPress Math Text Sans", KaTeX_Main, serif;
  font-weight: 650;
}

.kpress:not(
    [data-kpress-fonts="system"],
    [data-kpress-font-set="system"],
    [data-kpress-math-text="katex"],
    [data-kpress-fonts="system"] *,
    [data-kpress-font-set="system"] *,
    [data-kpress-math-text="katex"] *
  )
  [data-kpress-math-face="sans"]
  .katex
  .boldsymbol {
  font-family: "KPress Math Text Sans", KaTeX_Math, serif;
  font-style: italic;
  font-weight: 650;
}

.kpress:not(
    [data-kpress-fonts="system"],
    [data-kpress-font-set="system"],
    [data-kpress-math-text="katex"],
    [data-kpress-fonts="system"] *,
    [data-kpress-font-set="system"] *,
    [data-kpress-math-text="katex"] *
  )
  [data-kpress-math-face="sans"]
  .katex
  .textrm {
  font-family: "KPress Math Text Sans", KaTeX_Main, serif;
}

.kpress:not(
    [data-kpress-fonts="system"],
    [data-kpress-font-set="system"],
    [data-kpress-math-text="katex"],
    [data-kpress-fonts="system"] *,
    [data-kpress-font-set="system"] *,
    [data-kpress-math-text="katex"] *
  )
  [data-kpress-math-face="sans"]
  .katex
  .mainrm {
  font-family: "KPress Math Text Sans", KaTeX_Main, serif;
  font-style: normal;
}

/* --- the footnote preview overlay --- */

/* THE SECOND SCOPE. tooltips.js mounts a preview on the viewport pane or the body,
   outside every `.kpress`, and stamps the originating wrapper's math mode on it so the
   serif rules above can reach it by attribute rather than by position. But a preview is
   a CLONE of math KaTeX has already typeset, and the only preview kind that carries
   rendered math is the footnote one: every other kind is escaped text
   (`internalTooltipContent` in js/tooltips.js), so no `.katex` reaches it at all.

   A footnote is a sans role in every mode -- `.kpress-footnotes` is in `SANS_CONTEXT`,
   and under the reader's sans reading face the whole document is sans -- so the clone's
   boxes were measured from the SANS tables. Drawing it in the serif composite would put
   PT Serif glyphs on Source Sans metrics, which is the same disagreement between what
   KaTeX measures and what it draws that the whole file exists to prevent. The overlay
   therefore takes the sans composite.

   This scope keys on position and the mode stamp rather than on the mark the document
   scope uses, and deliberately. The clone does carry the mark out of the document, since
   `katex-init.js` writes it on the math node the overlay copies. But the clone is mounted
   outside every `.kpress`, so the document rule cannot reach it whatever it carries, and
   a rule that trusted the mark alone would draw the sans composite in any preview an
   embedding host happened to mount -- including one whose serif original had never been
   marked. Reaching the overlay by what it is keeps the third-party surface narrow.

   `.kpress-tooltip[data-kpress-math-text="prose"].kpress-tooltip-footnote` is (0,3,0),
   one class above the serif overlay scope's (0,2,0), so these land at (0,5,0) against
   (0,4,0) -- the same margin the document scope keeps, and again not a matter of order.
   The mode stamp stays in the selector so the three opt-outs still apply: an overlay
   opened from an opted-out wrapper is stamped `katex` and matches nothing here.

   The size token needs no rule of its own: `--kpress-katex-size-sans` and the
   `--kpress-katex-size-prose` the serif overlay scope sets are both 1em. */

.kpress-tooltip[data-kpress-math-text="prose"].kpress-tooltip-footnote .katex {
  font-family: "KPress Math Text Sans", KaTeX_Main, "Times New Roman", serif;
  font-weight: var(--_kpress-math-sans-regular-weight);
}

.kpress-tooltip[data-kpress-math-text="prose"].kpress-tooltip-footnote .katex .mathnormal {
  font-family: "KPress Math Text Sans", KaTeX_Math, serif;
  font-style: italic;
}

.kpress-tooltip[data-kpress-math-text="prose"].kpress-tooltip-footnote .katex .mathit {
  font-family: "KPress Math Text Sans", KaTeX_Main, serif;
  font-style: italic;
}

.kpress-tooltip[data-kpress-math-text="prose"].kpress-tooltip-footnote .katex .mathbf {
  font-family: "KPress Math Text Sans", KaTeX_Main, serif;
  font-weight: 650;
}

.kpress-tooltip[data-kpress-math-text="prose"].kpress-tooltip-footnote .katex .boldsymbol {
  font-family: "KPress Math Text Sans", KaTeX_Math, serif;
  font-style: italic;
  font-weight: 650;
}

.kpress-tooltip[data-kpress-math-text="prose"].kpress-tooltip-footnote .katex .textrm {
  font-family: "KPress Math Text Sans", KaTeX_Main, serif;
}

.kpress-tooltip[data-kpress-math-text="prose"].kpress-tooltip-footnote .katex .mainrm {
  font-family: "KPress Math Text Sans", KaTeX_Main, serif;
  font-style: normal;
}

/* A per-node opt-out inside a custom-face wrapper needs stock families as well
   as stock metrics. The runtime chooses both through the same mark, including
   when a host creates its first formula after the native loop has finished.
   Repeating `.katex` matches the specificity of the sans ancestor and footnote
   preview rules, so these later rules also win in an already-rendered clone. */
:is(.kpress, .kpress-tooltip) [data-kpress-math-face="katex"] {
  --kpress-katex-size-prose: 1.05em;
  --kpress-katex-size-display: 1.1em;
}

:is(.kpress, .kpress-tooltip) [data-kpress-math-face="katex"] .katex.katex {
  font-family: KaTeX_Main, "Times New Roman", serif;
  font-weight: 400;
}

:is(.kpress, .kpress-tooltip) [data-kpress-math-face="katex"] .katex.katex .mathnormal,
:is(.kpress, .kpress-tooltip) [data-kpress-math-face="katex"] .katex.katex .boldsymbol {
  font-family: KaTeX_Math, serif;
}

:is(.kpress, .kpress-tooltip) [data-kpress-math-face="katex"] .katex.katex .mathit,
:is(.kpress, .kpress-tooltip) [data-kpress-math-face="katex"] .katex.katex .mathbf,
:is(.kpress, .kpress-tooltip) [data-kpress-math-face="katex"] .katex.katex .textrm,
:is(.kpress, .kpress-tooltip) [data-kpress-math-face="katex"] .katex.katex .mainrm {
  font-family: KaTeX_Main, serif;
}
