/* katex/katex.min.css */
@font-face{font-display:block;font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(katex/fonts/KaTeX_AMS-Regular.woff2) format("woff2"),url(katex/fonts/KaTeX_AMS-Regular.woff) format("woff"),url(katex/fonts/KaTeX_AMS-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(katex/fonts/KaTeX_Caligraphic-Bold.woff2) format("woff2"),url(katex/fonts/KaTeX_Caligraphic-Bold.woff) format("woff"),url(katex/fonts/KaTeX_Caligraphic-Bold.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url(katex/fonts/KaTeX_Caligraphic-Regular.woff2) format("woff2"),url(katex/fonts/KaTeX_Caligraphic-Regular.woff) format("woff"),url(katex/fonts/KaTeX_Caligraphic-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url(katex/fonts/KaTeX_Fraktur-Bold.woff2) format("woff2"),url(katex/fonts/KaTeX_Fraktur-Bold.woff) format("woff"),url(katex/fonts/KaTeX_Fraktur-Bold.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url(katex/fonts/KaTeX_Fraktur-Regular.woff2) format("woff2"),url(katex/fonts/KaTeX_Fraktur-Regular.woff) format("woff"),url(katex/fonts/KaTeX_Fraktur-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url(katex/fonts/KaTeX_Main-Bold.woff2) format("woff2"),url(katex/fonts/KaTeX_Main-Bold.woff) format("woff"),url(katex/fonts/KaTeX_Main-Bold.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url(katex/fonts/KaTeX_Main-BoldItalic.woff2) format("woff2"),url(katex/fonts/KaTeX_Main-BoldItalic.woff) format("woff"),url(katex/fonts/KaTeX_Main-BoldItalic.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url(katex/fonts/KaTeX_Main-Italic.woff2) format("woff2"),url(katex/fonts/KaTeX_Main-Italic.woff) format("woff"),url(katex/fonts/KaTeX_Main-Italic.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url(katex/fonts/KaTeX_Main-Regular.woff2) format("woff2"),url(katex/fonts/KaTeX_Main-Regular.woff) format("woff"),url(katex/fonts/KaTeX_Main-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url(katex/fonts/KaTeX_Math-BoldItalic.woff2) format("woff2"),url(katex/fonts/KaTeX_Math-BoldItalic.woff) format("woff"),url(katex/fonts/KaTeX_Math-BoldItalic.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url(katex/fonts/KaTeX_Math-Italic.woff2) format("woff2"),url(katex/fonts/KaTeX_Math-Italic.woff) format("woff"),url(katex/fonts/KaTeX_Math-Italic.ttf) format("truetype")}@font-face{font-display:block;font-family:"KaTeX_SansSerif";font-style:normal;font-weight:700;src:url(katex/fonts/KaTeX_SansSerif-Bold.woff2) format("woff2"),url(katex/fonts/KaTeX_SansSerif-Bold.woff) format("woff"),url(katex/fonts/KaTeX_SansSerif-Bold.ttf) format("truetype")}@font-face{font-display:block;font-family:"KaTeX_SansSerif";font-style:italic;font-weight:400;src:url(katex/fonts/KaTeX_SansSerif-Italic.woff2) format("woff2"),url(katex/fonts/KaTeX_SansSerif-Italic.woff) format("woff"),url(katex/fonts/KaTeX_SansSerif-Italic.ttf) format("truetype")}@font-face{font-display:block;font-family:"KaTeX_SansSerif";font-style:normal;font-weight:400;src:url(katex/fonts/KaTeX_SansSerif-Regular.woff2) format("woff2"),url(katex/fonts/KaTeX_SansSerif-Regular.woff) format("woff"),url(katex/fonts/KaTeX_SansSerif-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url(katex/fonts/KaTeX_Script-Regular.woff2) format("woff2"),url(katex/fonts/KaTeX_Script-Regular.woff) format("woff"),url(katex/fonts/KaTeX_Script-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url(katex/fonts/KaTeX_Size1-Regular.woff2) format("woff2"),url(katex/fonts/KaTeX_Size1-Regular.woff) format("woff"),url(katex/fonts/KaTeX_Size1-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url(katex/fonts/KaTeX_Size2-Regular.woff2) format("woff2"),url(katex/fonts/KaTeX_Size2-Regular.woff) format("woff"),url(katex/fonts/KaTeX_Size2-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url(katex/fonts/KaTeX_Size3-Regular.woff2) format("woff2"),url(katex/fonts/KaTeX_Size3-Regular.woff) format("woff"),url(katex/fonts/KaTeX_Size3-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url(katex/fonts/KaTeX_Size4-Regular.woff2) format("woff2"),url(katex/fonts/KaTeX_Size4-Regular.woff) format("woff"),url(katex/fonts/KaTeX_Size4-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url(katex/fonts/KaTeX_Typewriter-Regular.woff2) format("woff2"),url(katex/fonts/KaTeX_Typewriter-Regular.woff) format("woff"),url(katex/fonts/KaTeX_Typewriter-Regular.ttf) format("truetype")}.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.47"}.katex .katex-mathml{border:0;-webkit-clip-path:inset(50%);clip-path:inset(50%);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}

/* styles.css */
:root{--ink:#23313a;--navy:#163040;--muted:#64737d;--line:#dce2e6;--paper:#fff;--panel:#f7f9fa;--blue:#2a5c8e;--orange:#ce6318;--accent:#b9520e;--purple:#7857a2;--green:#287d68;--serif:Georgia,'Times New Roman',serif;--sans:-apple-system,"system-ui","Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Helvetica Neue",Arial,sans-serif;scroll-padding-top:90px}body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.7 var(--sans);-webkit-font-smoothing:antialiased}button,input,select{font:inherit}button,a,input{touch-action:manipulation}button{cursor:pointer}a{color:var(--blue);text-underline-offset:4px}button:focus-visible,a:focus-visible,input:focus-visible,summary:focus-visible,svg [tabindex]:focus-visible{outline:3px solid var(--blue);outline-offset:5px}svg [tabindex]:focus-visible{stroke:var(--blue);stroke-width:4}a:hover{color:var(--accent)}.skip{position:absolute;left:15px;top:-80px;background:white;padding:12px;z-index:20}.skip:focus{top:10px}.masthead{background:var(--navy);color:white}.masthead-inner{max-width:1220px;height:80px;margin:auto;padding:0 40px;display:flex;align-items:center;justify-content:space-between}.wordmark{display:flex;align-items:center;gap:13px;color:white;text-decoration:none;font-size:18.5px;font-weight:600;letter-spacing:.02em}.wordmark:hover{color:white}.wordmark svg{width:31px;height:31px;fill:none;stroke:#fff;stroke-width:1.3}.wordmark-light{font-weight:400;opacity:.78}.level{font-size:13.5px;letter-spacing:.05em;opacity:.85}main{max-width:1200px;margin:auto;padding:0 40px}.title-block{max-width:960px;margin:80px auto 52px}.eyebrow,.section-kicker{font-size:12px;font-weight:650;letter-spacing:.16em;color:var(--muted);margin:0 0 21px}h1{font:normal clamp(38px,5.51vw,68.5px)/1.1 var(--serif);letter-spacing:-.045em;margin:0 0 28px;color:#1d2930}.standfirst{font:normal clamp(18.5px,2.13vw,24px)/1.5 var(--serif);color:#56646c;margin:0 0 32px}.chapter-meta{border-top:1px solid var(--line);display:flex;gap:36px;padding-top:18px;font-size:12.5px;color:var(--muted)}.experiment{margin:42px 0 0}.figure-heading{display:flex;align-items:baseline;gap:20px;margin:0 0 12px}.figure-number{font-size:12px;letter-spacing:.1em;white-space:nowrap;color:var(--muted);font-weight:650}.figure-heading h2{font:500 16px/1.5 var(--sans);margin:0}.drag-hint{margin-left:auto;color:var(--blue);font-size:12.5px}.experiment>svg{width:100%;display:block;background:var(--panel);border:1px solid #e5eaed;border-radius:3px}:where(.experiment svg text){font-family:var(--sans);fill:var(--ink);font-size:15.5px}.experiment svg .vertex-label{font-family:var(--serif);font-size:21px;font-style:italic}.experiment svg .diagram-label{font-size:12.5px;letter-spacing:.12em;fill:var(--muted)}.experiment svg .angle-text{font-size:13.5px}.experiment svg .side-label{font-size:15.5px;paint-order:stroke;stroke:var(--panel);stroke-width:7px;stroke-linejoin:round}.experiment svg .handle{cursor:grab;touch-action:none}.experiment svg .handle:active{cursor:grabbing}.controls{display:grid;gap:32px;padding:22px 0;border-bottom:1px solid var(--line)}.range-control label{font-size:12.5px;font-weight:600;display:flex;justify-content:space-between;gap:10px;line-height:1.45;align-items:baseline}.range-control output{font-variant-numeric:tabular-nums;font-size:18px;white-space:nowrap;color:var(--accent);font-weight:500}.range-control input[type=range]{width:100%;height:25px;margin:10px 0 0;accent-color:var(--orange);cursor:pointer}.range-ends{display:flex;justify-content:space-between;font-size:12px;color:var(--muted)}.control-buttons{display:flex;align-items:center;gap:9px;align-self:center}.button{border:1px solid #bac6ce;border-radius:5px;padding:9px 15px;line-height:1.4;font-size:12.5px;font-weight:500;min-height:42px;background:white;color:var(--ink)}.button:hover{background:#edf2f5;border-color:#8b9da9}.button.dark{background:var(--navy);border-color:var(--navy);color:white}.button.dark:hover{background:#274d60}.button.quiet{border-color:transparent;background:transparent;color:var(--muted)}.button:disabled{opacity:.45;cursor:default}figcaption{font-size:12.5px;line-height:1.65;color:var(--muted);padding-top:14px;max-width:910px}.caption-number{color:var(--ink);font-weight:600;margin-right:10px}.chapter-nav{border-block:1px solid var(--line);display:flex;gap:26px;padding:16px 0;font-size:12.5px;background:rgba(255,255,255,.97);position:sticky;top:0;z-index:8;overflow:auto;white-space:nowrap}.chapter-nav a{color:var(--muted);text-decoration:none}.chapter-nav a.active,.chapter-nav a:hover{color:var(--accent)}.lesson-section{position:relative;margin:74px 0 0;scroll-margin-top:80px}.reading{max-width:680px;margin:0 auto}.reading h2{font:normal clamp(26.5px,3.11vw,38px)/1.24 var(--serif);letter-spacing:-.025em;margin:0 0 28px;color:#202b32}.reading p{margin:0 0 22px}.reading strong{font-weight:620}.reading h3{font:normal 22px/1.3 var(--serif);margin:35px 0 16px}.statement{border-left:3px solid var(--blue);padding:4px 0 4px 24px;margin:30px 0}.statement p{margin:10px 0 0}.small-label{font-size:12px;letter-spacing:.15em;color:var(--blue);font-weight:650}.note{font-size:13.5px;color:var(--muted)}.math-line{text-align:center;font:22px/1.6 var(--serif);padding:15px 0 24px;overflow-wrap:anywhere}.margin-note{position:absolute;top:145px;right:-4px;width:160px;font-size:12px;color:var(--muted);line-height:1.65}.margin-note>span{font-size:11px;letter-spacing:.11em;font-weight:650}.margin-note p{margin-top:9px}.reading .inline-math{font-family:var(--serif);font-size:1.13em}.wide-copy{max-width:870px;margin:28px auto}.segmented{display:flex;gap:6px;flex-wrap:wrap}.segmented button{background:white;border:1px solid var(--line);border-radius:5px;font-size:12.5px;padding:10px 18px;min-height:44px;color:var(--muted)}.segmented button[aria-pressed=true]{background:#eaf2f7;color:#225773;border-color:#7fadc5}.figure-toolbar{display:flex;justify-content:space-between;gap:20px;align-items:center;margin-bottom:16px}.explanation{max-width:680px;margin:24px auto 0;font-size:15px}.explanation p{margin:0}.accent{color:var(--accent)}.blue{color:var(--blue)}.purple{color:var(--purple)}details{margin:24px 0;border-block:1px solid var(--line);padding:15px 0}summary{cursor:pointer;font-size:14px;font-weight:550}details>div{padding:18px 0 0;font-size:14px}details p:last-child{margin-bottom:0}.two-controls{grid-template-columns:1fr 1fr;max-width:760px;margin:auto}.proof-note{background:#f5f8fa;padding:20px 24px;font-size:14px;margin:24px 0}.proof-note p{margin:0}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;font-size:13.5px}th,td{padding:12px 13px;text-align:center;border-bottom:1px solid var(--line);font-weight:400}th{color:var(--muted);font-size:12px;background:#f6f8f9}th:first-child,td:first-child{text-align:left}caption{text-align:left;font-size:12px;color:var(--muted);padding:0 0 10px}.number-field{width:100px;border:1px solid #6f7d87;border-radius:4px;padding:9px 10px;background:white}.feedback{padding:13px 17px;background:#eef4f7;color:#284e64;border-left:3px solid #5d8a9f;font-size:13.5px;margin:15px 0 0}.feedback.correct{background:#edf6f1;border-color:var(--green);color:#20634e}.feedback.incorrect{background:#fff5f3;border-color:#c0392b;color:#7f1d1d}.feedback[hidden]{display:none}.quiz-list{counter-reset:questions}.quiz-question{padding:25px 0;border-bottom:1px solid var(--line);margin:0;min-width:0;border-left:0;border-right:0;border-top:0}.quiz-question legend{font-size:16px;line-height:1.6;font-weight:550;padding:20px 0 0;width:100%}.quiz-options{display:flex;flex-wrap:wrap;gap:10px;margin:12px 0 0}.quiz-options label{position:relative;display:flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:5px;padding:10px 15px;font-size:14px;cursor:pointer}.quiz-options label:has(input:checked){border-color:var(--blue);background:#eef5f8}.quiz-options input{accent-color:var(--blue);width:16px;height:16px}.quiz-actions{display:flex;gap:15px;margin:24px 0}.recap{border-top:2px solid var(--navy);padding-top:28px;margin-top:56px}.recap h3{margin-top:0}.recap li{padding-left:6px;margin-bottom:13px}.resource-link{display:inline-flex;align-items:center;border-bottom:1px solid var(--blue);text-decoration:none;font-size:13.5px;margin-top:10px}.source-note{font-size:12px;color:var(--muted);margin-top:28px;line-height:1.7}footer{margin-top:100px;border-top:1px solid var(--line);background:#fafbfc;padding:35px max(24px,calc((100vw - 1120px)/2));color:var(--muted);font-size:12px}footer>div{display:flex;justify-content:space-between;gap:20px}.footer-brand{font-weight:650;color:var(--navy)}footer p{margin-bottom:0}.noscript{background:#fff1dd;padding:15px}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
@media(min-width:1150px){.reading{transform:translateX(-30px)}.margin-note{right:0}}@media(max-width:1100px){.margin-note{position:static;max-width:680px;width:auto;margin:25px auto 0;padding-left:20px;border-left:1px solid var(--line)}.margin-note p{margin-bottom:0}.control-buttons{grid-column:1/-1;justify-content:center}.figure-heading{flex-wrap:wrap;gap:8px 18px}.drag-hint{margin-left:0}}@media(max-width:640px){body{font-size:15px;line-height:1.65}main{padding:0 22px}.masthead-inner{height:65px;padding:0 22px}.wordmark{font-size:15px;gap:8px}.wordmark svg{width:26px}.level{font-size:12px}.title-block{margin:45px 0 35px}.eyebrow{font-size:11px;margin-bottom:15px}h1{font-size:42px;line-height:1.1}.standfirst{font-size:19.5px}.chapter-meta{gap:10px 20px;flex-wrap:wrap;font-size:12px}.figure-heading h2{font-size:14px}.figure-number{font-size:11px}.drag-hint{font-size:12px}.control-buttons{justify-content:flex-start}.controls{padding:20px 0}.chapter-nav{gap:23px;font-size:12px}.lesson-section{margin-top:48px}.reading h2{font-size:29.5px}.math-line{font-size:19.5px}.statement{padding-left:18px}.two-controls{grid-template-columns:1fr}.figure-toolbar{display:block}.segmented{margin-bottom:12px}.segmented button{padding:8px 12px;font-size:12px}.quiz-options{display:grid;grid-template-columns:1fr}.quiz-options label{font-size:13.5px}.quiz-actions{flex-wrap:wrap}.reading{transform:none}footer{margin-top:65px}footer>div{flex-direction:column;gap:5px}figcaption{font-size:12px}.experiment>svg{border-radius:0}table{font-size:12.5px}th,td{padding:10px 8px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{animation-duration:.01ms!important;transition-duration:.01ms!important}}
@media print{.masthead{background:white;color:black}.wordmark{color:black}.wordmark svg{stroke:black}.chapter-nav,.controls,.control-buttons,.quiz-actions,.skip{display:none}.title-block{margin:20px auto}main{max-width:none;padding:0}.margin-note{position:static;width:auto}.reading{transform:none}.experiment,.statement,.quiz-question{break-inside:avoid}.lesson-section{margin-top:35px}h1{font-size:39px}footer{margin-top:30px}details>div{display:block}}
@media(max-width:640px){.experiment svg .angle-text{font-size:16.5px}.experiment svg .side-label{font-size:17.5px}.experiment svg .diagram-label{font-size:14px}}

/* Full chapter: a readable article with wide mathematical figures. */
.chapter-map{margin-top:24px}.chapter-map details{border-top:0;margin-top:0}.chapter-map details>div{display:grid;grid-template-columns:1fr 1fr;gap:0 25px}.chapter-map p{font-size:12.5px;margin-bottom:12px}.subsection{scroll-margin-top:95px;margin:48px 0}.subsection>h3{border-top:1px solid var(--line);padding-top:26px}.reading h4{font:normal 21.5px/1.35 var(--serif);margin:10px 0 20px}.reading h5{font:600 12.5px/1.5 var(--sans);letter-spacing:.035em;margin:0 0 12px}.reading li{margin-bottom:12px}.reading ul,.reading ol{padding-left:25px}.reading .td-ref{font-size:12.5px;color:var(--muted);margin:22px 0 0;border-left:2px solid var(--line);padding-left:14px}.writing-model{padding:26px 0 22px;margin:45px 0;border-top:2px solid var(--navy);scroll-margin-top:90px}.model-label{font:650 12px/1.5 var(--sans);letter-spacing:.15em;color:var(--blue);margin:0 0 8px!important}.method-steps{font-size:14px;padding:15px 20px;background:#f4f7f9;margin:18px 0 24px}.method-steps li:last-child{margin-bottom:0}.model-problem{font-size:15px}.writing-model details{margin-bottom:0}.copy{font-size:15px;line-height:1.75}.practice{border-left:3px solid var(--orange);padding-left:24px;margin:35px 0}.practice h4{font-size:20.5px}.practice details{font-size:14px}.flash-set{margin:40px 0;padding-top:10px}.flash-set>h3{font-size:24px}.flash-item{border-top:1px solid var(--line);padding:18px 0 0}.flash-item>p{display:flex;align-items:baseline;gap:16px;margin:0;font-size:15px}.question-number{color:var(--muted);font-size:12px;min-width:23px;font-variant-numeric:tabular-nums}.flash-item details{border:0;margin:0;padding:12px 0 18px 39px}.flash-item summary{font-size:12.5px;color:var(--blue)}.flash-item details>div{font-size:14px;padding-top:12px}.proof summary{line-height:1.6}.reading .experiment{width:min(1000px,calc(100vw - 80px));position:relative;left:50%;transform:translateX(-50%);margin:36px 0 24px}.added-experiment .figure-heading h4{font:500 16px/1.5 var(--sans);margin:0}.added-experiment .segmented{margin-bottom:18px}.added-experiment .range-control{max-width:540px;margin:15px auto 20px}.added-experiment .range-control+.range-control{margin-top:-5px}.live-observation{max-width:740px;margin:20px auto 0;font-size:14px;line-height:1.7}.added-experiment figcaption{max-width:850px}.added-experiment svg .diagram-label{font-size:10.5px;letter-spacing:.05em}.added-experiment svg .vertex-label{font-size:17px}@media(min-width:641px){:where(.added-experiment svg text),.added-experiment svg .side-label{font-size:13px}.added-experiment svg .angle-text{font-size:12px}}.reading>.explanation{margin-top:28px}.reading table{margin:15px 0 20px}.reading th{font-size:12.5px}.reading td{font-size:13.5px}.table-wrap{max-width:100%;overscroll-behavior-x:contain}.reading .math-line{font-size:20.5px;overflow-wrap:anywhere}.model-index{display:grid;grid-template-columns:1fr 1fr;gap:0 24px;margin:30px 0}.model-index a{display:flex;gap:13px;align-items:center;text-decoration:none;padding:13px 0;border-bottom:1px solid var(--line);font-size:12.5px}.model-index .model-code{font-size:14px;font-weight:600;min-width:28px;color:var(--navy)}.model-index span{color:var(--muted)}.model-index a:hover span{color:var(--blue)}.glossary{margin:24px 0}.glossary>div{display:grid;grid-template-columns:160px 1fr;gap:22px;border-top:1px solid var(--line);padding:23px 0}.glossary dt{font:19.5px/1.5 var(--serif);overflow-wrap:anywhere}.glossary dd{margin:0;font-size:14px}.glossary dd strong{font-size:13.5px;font-weight:550}.glossary dd p{margin:9px 0 0}.reading .table-wrap th,.reading .table-wrap td{overflow-wrap:anywhere}.reading .proof .table-wrap{font-size:12.5px}math{font-size:1em}.lesson-section:target>.reading>h2,.writing-model:target>h4{color:var(--blue)}
@media(max-width:640px){.reading .experiment{width:calc(100vw - 32px)}.reading h4{font-size:19.5px}.added-experiment .figure-heading{padding:0 6px}.added-experiment .figure-heading h4{font-size:14px}.added-experiment .segmented{padding:0 6px;gap:6px}.added-experiment .range-control{padding:0 10px}.added-experiment .live-observation,.added-experiment figcaption{padding-inline:6px}:where(.added-experiment svg text){font-size:16.5px}.added-experiment svg .vertex-label{font-size:21px}.added-experiment svg .side-label{font-size:16.5px}.added-experiment svg .diagram-label{font-size:12.5px}.method-steps{padding:15px}.practice{padding-left:16px}.reading .math-line{font-size:18.5px}.chapter-map details>div{grid-template-columns:1fr}.glossary>div{grid-template-columns:1fr;gap:8px}.model-index{grid-template-columns:1fr}.reading th,.reading td{padding:10px 7px}.subsection{margin-top:36px}.flash-item details{padding-left:0}.flash-item>p{gap:10px}.flash-set{margin-top:32px}.reading small{font-size:12.5px}.table-wrap:has(table thead th:nth-child(4)){overflow-x:auto}.table-wrap:has(table thead th:nth-child(4)) table{min-width:460px}.reading .proof .table-wrap:has(table thead th:nth-child(4)) table{min-width:680px}}
@media print{.reading .experiment{width:100%;left:0;transform:none}.chapter-map{display:none}.reading{max-width:none}.writing-model{break-inside:avoid}.glossary>div{break-inside:avoid}details>div{display:block!important}.reading .math-line{font-size:16px}}

/* Mise en forme mathématique : titres en Latin Modern (chiffres alignés, comme le
   cours imprimé), formules KaTeX, notations françaises, pas de gras dans le corps. */
@font-face{font-family:'LM Roman';src:url(fonts/lmroman10-regular.woff2) format('woff2');unicode-range:U+0000-009F,U+00A1-202E,U+2030-FFFF;font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:'LM Roman';src:url(fonts/lmroman10-italic.woff2) format('woff2');unicode-range:U+0000-009F,U+00A1-202E,U+2030-FFFF;font-weight:400;font-style:italic;font-display:swap}
@font-face{font-family:'LM Roman Display';src:url(fonts/lmroman17-regular.woff2) format('woff2');unicode-range:U+0000-009F,U+00A1-202E,U+2030-FFFF;font-weight:400;font-style:normal;font-display:swap}
:root{--serif:'LM Roman',Georgia,serif;--display:'LM Roman Display','LM Roman',Georgia,serif}
h1{font-family:var(--display);letter-spacing:-.01em}.reading h2{font-family:var(--display);letter-spacing:0}.reading h3,.reading h4{letter-spacing:0}.standfirst{font-family:var(--serif)}
.katex{font-size:1.1em;text-rendering:auto}.katex-display{margin:.4em 0}
.reading .math-line,.math-line{font:15px/1.6 var(--sans);text-align:center;padding:12px 0 20px;overflow-wrap:normal;overflow-x:auto;overflow-y:hidden}.math-line .katex{font-size:1.3em}
main strong,main b,.reading strong{font-weight:inherit}.katex .accent{color:inherit}
dfn{font-style:normal;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.22em}
.reading th,.reading td,.reading .table-wrap th,.reading .table-wrap td{text-align:left;overflow-wrap:normal;word-break:normal;hyphens:manual;vertical-align:top}.reading th{white-space:nowrap}
.experiment .figure-heading{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 16px;margin:0 0 14px}.experiment .figure-heading h2,.experiment .figure-heading h4{font:500 16px/1.45 var(--sans);letter-spacing:0;color:var(--ink);margin:0}
.experiment .live-observation,.experiment figcaption{max-width:none;margin-left:0;margin-right:0}.experiment .live-observation:not(:empty),.reading .proof-note{background:#f5f8fa;padding:14px 20px;font-size:14px;line-height:1.7;margin-top:18px}
.practice>.small-label{color:var(--accent)}
.range-control label>span{display:inline}
.experiment svg .vertex-label{font-family:KaTeX_Math,var(--serif);font-style:italic}
.katex .tx{font-family:var(--sans);font-size:.91em}
.katex-html>.base{margin-block:.12em}
.table-wrap:has(table thead th:nth-child(4)) table{min-width:0}
.nowrap{white-space:nowrap}
.quiz-question legend{font-weight:400}

/* Grand écran : plan permanent à gauche, texte élargi, figures, modèles et questions
   flash sur toute la largeur disponible. */
.toc-side{display:none}
@media(min-width:1200px){
html{scroll-padding-top:24px}
main{display:grid;grid-template-columns:220px minmax(0,1fr);column-gap:52px;max-width:1480px;padding:0 40px}
main>*{grid-column:2;min-width:0}
main>.chapter-nav,main>.chapter-map{display:none}
.toc-side{display:block;grid-column:1;grid-row:1/span 40;align-self:start;position:sticky;top:0;max-height:100vh;overflow:auto;padding:36px 4px 32px 0;font-size:12px;line-height:1.45;scrollbar-width:thin}
.toc-title{font-size:11px;font-weight:650;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin:0 0 14px}
.toc-side ol{list-style:none;margin:0;padding:0}.toc-side>ol>li{margin:0 0 10px}
.toc-side>ol>li>a{font-weight:600;color:var(--navy)}
.toc-side ol ol{margin:6px 0 0;padding-left:12px;border-left:1px solid var(--line)}.toc-side ol ol li{margin:0}
.toc-side ol ol a{display:block;padding:3px 0 3px 10px;margin-left:-13px;border-left:2px solid transparent;color:var(--muted)}
.toc-side a{text-decoration:none}.toc-side a:hover{color:var(--accent)}
.toc-side>ol>li.current>a,.toc-side a.active{color:var(--accent)}.toc-side ol ol a.active{border-left-color:var(--orange)}
.title-block{margin:64px 0 44px;max-width:900px}
.lesson-section{container-type:inline-size;margin-top:64px}
.reading,.reading.chapter-map{max-width:760px;margin:0;transform:none}
.reading .experiment{width:100cqw;left:0;transform:none;margin:36px 0 28px}
.reading .flash-set{width:100cqw;display:grid;grid-template-columns:1fr 1fr;column-gap:48px;align-items:start}
.reading .flash-set>h3,.reading .flash-set>h4,.reading .flash-set>.note{grid-column:1/-1}
.masthead-inner{max-width:1480px;padding:0 40px}
.reading .table-large,.reading .glossary,.reading .model-index{width:100cqw;max-width:none}
.reading .glossary{display:grid;grid-template-columns:1fr 1fr;column-gap:48px;align-items:start}.reading .glossary>div{grid-template-columns:130px 1fr}
.reading .model-index{grid-template-columns:repeat(3,1fr)}
.reading .quiz-list{width:100cqw;display:grid;grid-template-columns:1fr 1fr;column-gap:48px;align-items:start}
footer{padding-inline:max(40px,calc((100vw - 1480px)/2 + 40px))}
}
@media(min-width:1380px){
.reading .writing-model{width:100cqw;display:grid;grid-template-columns:minmax(0,760px) minmax(240px,1fr);column-gap:44px;align-items:start}
.writing-model>*{grid-column:1}
.writing-model>.method-steps{grid-column:2;grid-row:3/span 6;position:sticky;top:24px;margin:0}
}

/* explore.css */
/* Explications explorables : déroulés figure–texte, rédactions vivantes,
   surlignage croisé entre le texte et la figure. Voir explore.js. */

/* Déroulé : la figure reste à l'écran pendant que les étapes défilent. */
.reading .walk{width:min(1000px,calc(100vw - 44px));margin:36px 0 28px calc(50% - min(1000px,100vw - 44px)/2);display:grid;grid-template-columns:minmax(250px,36%) minmax(0,1fr);column-gap:40px;align-items:start}
.walk-figure{grid-column:2;grid-row:1;position:sticky;top:var(--nav-h,64px)}
.walk-figure>svg{width:100%;display:block;background:var(--panel);border:1px solid #e5eaed;border-radius:4px}
.walk-figure .figure-heading{margin-bottom:12px}
.reading .walk-steps{grid-column:1;grid-row:1;list-style:none;margin:0;padding:12px 0 0}
.reading .walk-step{position:relative;padding:16px 20px 14px;margin:0 0 20vh;border-left:3px solid var(--line);border-radius:0 4px 4px 0;opacity:.45;cursor:pointer;transition:opacity .35s,border-color .35s,background .35s;scroll-margin-top:30vh}
.reading .walk-step:last-child{margin-bottom:28vh}
.walk-step.active{opacity:1;border-color:var(--orange);background:#fff7ef;cursor:default}
.walk-step.done{opacity:.72}
.walk-step:hover{opacity:.9}
.walk-label{font:650 12px/1.5 var(--sans);letter-spacing:.12em;text-transform:uppercase;color:var(--accent);margin:0 0 6px}
.walk-step p{margin:0 0 10px;font-size:14.5px;line-height:1.65}.walk-step p:last-child{margin-bottom:0}
.walk-step .math-line{padding:6px 0 10px}
.walk-nav{display:flex;align-items:center;gap:12px;margin-top:12px}
.walk-nav .walk-progress{margin-left:auto;font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}
.walk figcaption{grid-column:1/-1;grid-row:2}
.walk .range-control{max-width:420px;margin:14px 0 0}
@media(min-width:1200px){.reading .walk{width:100cqw;margin-left:0}.walk-figure,.redaction-steps{top:14px}}
@media(max-width:900px){
.reading .walk{display:block}
.walk-figure{position:sticky;top:var(--nav-h,48px);z-index:3;background:var(--paper);padding:8px 0 10px}
.walk-figure>svg{max-height:36vh}
.walk-figure .figure-heading{margin-bottom:6px}.walk-figure .figure-heading h4{font-size:13.5px}
.walk .range-control{margin-top:8px}.walk-nav{margin-top:8px}
.reading .walk-step{margin-bottom:14vh;scroll-margin-top:52vh}.reading .walk-step:last-child{margin-bottom:20vh}
.walk-nav .button{padding:7px 11px;font-size:12px}
}
@media(max-width:640px){.reading .walk{width:calc(100vw - 32px);margin-left:calc(50% - (100vw - 32px)/2)}.reading .walk-step{padding:12px 14px}}

/* Les SVG des composants reprennent les styles de texte des figures. */
/* Textes des dessins : police, couleur et taille par défaut, de spécificité nulle (:where) : une règle de la feuille du
   chapitre (svg .ma-classe{font-size:…}) l'emporte toujours (MOTEUR.md, § 5.1). */
:where(.walk svg text,.redaction svg text){font-family:var(--sans);fill:var(--ink);font-size:17px}
.walk svg .vertex-label,.redaction svg .vertex-label{font-family:KaTeX_Math,var(--serif);font-size:23px;font-style:italic}
.walk svg .diagram-label,.redaction svg .diagram-label{font-size:14px;letter-spacing:.05em;fill:var(--muted)}
.walk svg .angle-text,.redaction svg .angle-text{font-size:15px}
.walk svg .side-label,.redaction svg .side-label{font-size:17px;paint-order:stroke;stroke:var(--panel);stroke-width:7px;stroke-linejoin:round}
.walk svg .handle,.redaction svg .handle{cursor:grab;touch-action:none}
/* Relations écrites sur les dessins (∥, ⊥, ∈, milieu), comme sous les figures du cours imprimé
   (relations() de moteur-figures.js) : lettres en italique, symboles droits, mots dans la police du texte. */
svg .relation .m{font-family:KaTeX_Math,var(--serif);font-style:italic}
svg .relation .s{font-family:KaTeX_Main,var(--serif)}
/* Écriture mathématique des dessins (ecrireMath de moteur-figures.js : textes avec $…$ dans L.label, lineText,
   NDMFigures.texte, relations) : lettres en italique, chiffres et signes droits, exposants et indices plus petits, mots
   dans la police du texte. La taille du texte reste celle de sa classe (side-label, vertex-label…) ou de la feuille du
   chapitre. */
svg text.math .m{font-family:KaTeX_Math,var(--serif);font-style:italic}
svg text.math .s{font-family:KaTeX_Main,var(--serif);font-style:normal}
svg text.math .t{font-style:normal}
svg text.math .e{font-size:70%}
svg text.relation.halo,svg text.relation.halo tspan{fill:var(--panel)!important}
svg text.relation:not(.halo){stroke:none!important}

/* Surlignage croisé texte ↔ figure. */
.ref{color:var(--ref-color,inherit);border-bottom:1px dotted var(--ref-color,var(--blue));cursor:help;border-radius:2px;transition:background .2s,border-color .2s}
.ref:hover,.ref.lit,.ref:focus-visible{background:#fff0dc;border-bottom-color:var(--orange);outline:none}
/* Formule en fractions reliée à la figure : le pointillé d'une boîte en ligne reste à la hauteur du
   texte et traversait les dénominateurs ; en bloc dans la ligne, il passe sous toute la formule. */
.math-line .ref,.ref:has(.mfrac){display:inline-block;padding-bottom:3px}
svg [data-ref]{transition:opacity .3s,stroke-width .3s}
svg.has-lit [data-ref]:not(.lit){opacity:.25}
svg .lit{stroke:var(--orange)!important}
svg path.lit,svg line.lit,svg polygon.lit,svg polyline.lit{stroke-width:3.6px!important}
svg text.lit{fill:var(--orange)!important;stroke:none!important;font-weight:600}

/* Rédaction vivante : figure, étapes, copie. */
.reading .writing-model.redaction{display:block;width:min(1000px,calc(100vw - 44px));margin-left:calc(50% - min(1000px,100vw - 44px)/2);max-width:none;border-top:2px solid var(--navy)}
@media(min-width:1200px){.reading .writing-model.redaction{width:100cqw;margin-left:0}}
@media(max-width:640px){.reading .writing-model.redaction{width:calc(100vw - 32px);margin-left:calc(50% - (100vw - 32px)/2)}}
.redaction-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(250px,320px);gap:26px 40px;align-items:start;margin-top:8px}
.redaction-figure{grid-column:1;grid-row:1}
.redaction-figure>svg{width:100%;display:block;background:var(--panel);border:1px solid #e5eaed;border-radius:4px;margin-bottom:14px}
.redaction-steps{grid-column:2;grid-row:1/span 2;position:sticky;top:64px;background:#f4f7f9;padding:16px 18px 18px;border-radius:4px}
.redaction-steps h5{margin-bottom:10px}
.reading .redaction-steps ol{list-style:none;margin:0;padding:0}
.reading .redaction-steps li{margin:0 0 8px}
.redaction-step{display:flex;gap:11px;align-items:flex-start;width:100%;text-align:left;border:1px solid transparent;background:transparent;border-radius:5px;padding:9px 10px;font-size:13.5px;line-height:1.5;color:var(--muted);transition:background .25s,color .25s,border-color .25s}
.redaction-step .step-index{flex:none;width:24px;height:24px;border-radius:50%;border:1.5px solid currentColor;display:grid;place-items:center;font-size:12px;font-weight:650;margin-top:1px}
.redaction-step:hover{background:#fff;color:var(--ink)}
.redaction-step.done{color:var(--ink)}.redaction-step.done .step-index{background:var(--navy);border-color:var(--navy);color:#fff}
.redaction-step.active{background:#fff;color:var(--ink);border-color:#f0c9a8}.redaction-step.active .step-index{background:var(--orange);border-color:var(--orange);color:#fff}
.redaction-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
.copie{grid-column:1;grid-row:2;position:relative;background:#fff;border:1px solid var(--line);border-radius:4px;padding:18px 24px 20px 58px}
.copie::before{content:'';position:absolute;left:40px;top:0;bottom:0;border-left:1.5px solid #f2b8b8}
.copie h5{color:var(--muted);margin-bottom:8px}
.reading .copie-lines{list-style:none;margin:0;padding:0}
.reading .copie-line{padding:7px 0 7px;border-bottom:1px solid #e4ecf2;font-size:14.5px;line-height:1.7;margin:0}
.copie-line:last-child{border-bottom:0}
.copie-line .copie-mark{color:var(--muted);font-size:12px;margin-right:8px;font-variant-numeric:tabular-nums}
/* Phrases pas encore écrites : hors de la mise en page (elles ne réservent aucune hauteur) ; copie sans phrase écrite
   (classe copie-vide, posée par moteur/construire.py puis par explore.js) : cadre replié, ni titre, ni bordure, ni marge.
   Le cadre reste dans la page (zone aria-live) ; sans JavaScript, toute la copie se lit. */
html.js .copie-line.pending{display:none}
html.js .copie.copie-vide{padding:0;border:0;min-height:0;margin:0;background:none}
html.js .copie.copie-vide>h5,html.js .copie.copie-vide::before{display:none}
html.js .copie-line:not(.pending):has(+ .copie-line.pending){border-bottom:0}
/* À l'impression, la copie entière (comme sans JavaScript). */
@media print{html.js .copie-line.pending{display:block}html.js .copie.copie-vide{padding:18px 24px 20px 58px;border:1px solid var(--line)}html.js .copie.copie-vide>h5{display:block}html.js .copie.copie-vide::before{display:block}}
.copie-line.writing{animation:copie-write .8s ease-out both}
@keyframes copie-write{from{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0 0 0)}}
@media(max-width:900px){.redaction-grid{display:block}.redaction-steps{position:static;margin:16px 0}.copie{margin-top:16px}}
@media(prefers-reduced-motion:reduce){.copie-line.writing{animation:none}}

/* Parcours des exercices du TD (graine, cible, couronne). */
.parcours{display:inline-flex;align-items:center;gap:4px;font-size:12px;letter-spacing:.03em;color:var(--muted);white-space:nowrap;vertical-align:-3px;border:1px solid var(--line);border-radius:10px;padding:0 7px 0 4px;line-height:18px;background:#fff}
.parcours img{width:14px;height:14px}

/* Invitation à manipuler : la poignée frémit une fois quand la figure apparaît. */
svg .handle.nudge{animation:handle-nudge 1.1s ease-in-out 2;transform-box:fill-box;transform-origin:center}
@keyframes handle-nudge{0%,100%{transform:translate(0,0)}25%{transform:translate(-7px,0)}75%{transform:translate(7px,0)}}
@media(prefers-reduced-motion:reduce){svg .handle.nudge{animation:none}}

/* Figures animées pas à pas (motion.js) : boutons des
   mouvements et « Tout jouer » dans le même flux (une ligne de moins sur mobile). */
.motion-controls{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:6px}
.motion-case{margin-bottom:12px}
.added-experiment .motion-controls .segmented{display:contents}
.motion-controls .motion-play{margin-left:auto;min-width:112px}
@media(max-width:640px){.motion-controls{padding:0 6px}.motion-controls .motion-play{margin-left:0;min-width:0;padding:8px 12px;font-size:12px;min-height:44px}}
/* Commentaire des figures : il prend l'allure d'une étape active des déroulés, en plus grand.
   Une étiquette au-dessus nomme le mouvement en cours (motion.js) ou l'état d'une figure
   manipulable (NDMFigures.manipulable, moteur-figures.js). Le texte apparaît en fondu quand le mouvement ou l'état change (classe
   fresh) ; les nombres qui suivent un curseur changent sans fondu. */
.experiment .live-observation:not(:empty),.reading .proof-note:not(:empty),.reading .explanation:not(:empty){margin-top:14px;padding:12px 18px 14px;background:#fff7ef;border-left:3px solid var(--orange);border-radius:0 4px 4px 0;font-size:16.5px;line-height:1.65}
.experiment .live-observation p,.reading .proof-note p,.reading .explanation p{margin:0}
.experiment .live-observation .walk-label,.reading .proof-note .walk-label,.reading .explanation .walk-label{margin-bottom:4px}
.experiment.motion .live-observation p,.experiment .live-observation p.fresh,.reading .proof-note p.fresh,.reading .explanation p.fresh{animation:motion-in .4s ease-out}
@keyframes motion-in{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.experiment .live-observation p,.reading .proof-note p,.reading .explanation p{animation:none}}
@media(max-width:640px){.experiment .live-observation:not(:empty),.reading .proof-note:not(:empty),.reading .explanation:not(:empty){padding:12px 14px 14px;font-size:15px}}
/* Toutes les figures : boutons en haut, puis le commentaire, le dessin et les curseurs, enfin la
   légende. Le cadre du commentaire garde la hauteur de son plus long texte (reserve.js). */
.experiment>.live-observation:not(:empty),.experiment>.explanation:not(:empty),.experiment>.proof-note:not(:empty){margin:8px 0 16px;max-width:none}
/* Tablette et colonne étroite : un dessin presque carré ne prend pas toute la largeur, pour que
   le curseur, sous lui, reste visible. */
@media(min-width:641px) and (max-width:1179px){.experiment.motion-side>svg{max-width:520px;margin:0 auto}}
/* Dessin presque carré (brique motion, cls='motion-side') : avec la colonne de 704 px, le commentaire se place à côté du
   dessin, en haut, pour se lire pendant le mouvement (placement dense : dans la page, le
   commentaire précède le dessin). */
@media(min-width:1180px){
.experiment.motion-side{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);grid-auto-flow:row dense;column-gap:24px;align-items:start}
.experiment.motion-side>*{grid-column:1/-1}
.experiment.motion-side>svg{grid-column:1;margin-top:8px}
.experiment.motion-side>.live-observation{grid-column:2}
.experiment.motion-side>.live-observation:not(:empty){margin-top:8px;margin-bottom:0}
.experiment.motion-side>.range-control{width:100%}
}

/* conjectures.css */
/* Écrit par moteur/construire.py : un élément de classe revele-<id> reste caché tant que la conjecture <id> n’est pas
   trouvée (conjecture.js pose la classe <id>-ok sur <html>) ; un élément de classe avant-<id> ne se montre qu’avant
   (et jamais sans JavaScript). */
html.js:not(.conjecture-carre-evide-ok) .revele-conjecture-carre-evide{display:none}
html:not(.js) .avant-conjecture-carre-evide,html.conjecture-carre-evide-ok .avant-conjecture-carre-evide{display:none}
html.js:not(.conjecture-carre-somme-ok) .revele-conjecture-carre-somme{display:none}
html:not(.js) .avant-conjecture-carre-somme,html.conjecture-carre-somme-ok .avant-conjecture-carre-somme{display:none}
html.js:not(.conjecture-demontrer-pairs-ok) .revele-conjecture-demontrer-pairs{display:none}
html:not(.js) .avant-conjecture-demontrer-pairs,html.conjecture-demontrer-pairs-ok .avant-conjecture-demontrer-pairs{display:none}
html.js:not(.conjecture-demontrer-programmes-ok) .revele-conjecture-demontrer-programmes{display:none}
html:not(.js) .avant-conjecture-demontrer-programmes,html.conjecture-demontrer-programmes-ok .avant-conjecture-demontrer-programmes{display:none}

/* figures/figures.css */
/* Feuille propre au chapitre 01B (chapitre.json, « styles ») : seulement ce que ses figures ajoutent aux styles communs
   (styles.css, explore.css). Couleurs des figures : #2a5c8e (bleu, que le site change en bleu de Prusse) et #ce6318
   (orange). Écriture mathématique des dessins : celle de la bibliothèque ($…$ dans L.label et NDMFigures.texte ; polices
   et exposants dans explore.css) ; ici seulement la taille et le halo des textes de chaque figure. */
/* Étiquettes d'aire et de longueur (potager, mosaïque) : avec halo couleur du fond. */
.experiment svg text.etiquette{font-size:16px;paint-order:stroke;stroke:var(--panel);stroke-width:6px;stroke-linejoin:round}
.experiment svg text.aire{font-size:17px}
/* Schéma de calcul (nature, rédaction V1) : expression en haut, opérations dans des pastilles, nombres et lettres aux
   feuilles, valeurs calculées à côté des pastilles. */
.experiment svg text.expr,.redaction svg text.expr{font-size:24px}
.experiment svg text.op-noeud,.redaction svg text.op-noeud{font-size:19px}
.experiment svg text.feuille,.redaction svg text.feuille{font-size:21px;paint-order:stroke;stroke:var(--panel);stroke-width:5px;stroke-linejoin:round}
.redaction svg text.valeur{font-size:17px;paint-order:stroke;stroke:var(--panel);stroke-width:5px;stroke-linejoin:round}
.experiment svg text.cadre-nom{font-size:15px}
.redaction svg text.etiquette-v1{font-size:18px}
/* Sur grand écran, le schéma « Le dernier calcul » (figure de 760 unités affichée sur ≈ 800 px) garde des formules de 18 à
   20 px à l'écran, comme les noms de points du 01A (pas d'effet « zoom » ; audit du 20/10/2026). La rédaction V1, dessinée
   plus petite, garde les tailles ci-dessus ; le téléphone, celles du bloc suivant. */
@media(min-width:641px){
  .experiment svg text.expr{font-size:18px}
  .experiment svg text.op-noeud{font-size:17px}
  .experiment svg text.feuille{font-size:18px}
}
@media(max-width:640px){
  .experiment svg text.expr,.redaction svg text.expr{font-size:22px}
  .experiment svg text.etiquette{font-size:17px}
  .experiment svg text.cadre-nom{font-size:15.5px}
}
/* Figures de la partie 1 : sur téléphone, leur cadre a d'emblée le rapport du dessin (comme le viewBox que pose chaque
   script : rien ne saute au premier dessin). */
@media(max-width:640px){
  #potager-svg{aspect-ratio:400/410;height:auto}
  #redaction-v1-svg{aspect-ratio:440/340;height:auto}
  #nature-svg{aspect-ratio:400/330;height:auto}
  #oppose-svg{aspect-ratio:400/260;height:auto}
  #mosaique-svg{aspect-ratio:400/372;height:auto}
}
/* Potager, grand écran : lecture de l'étape à droite du carré (côtés, puis aire du grand carré). */
.experiment svg text.potager-calcul{font-size:17px}
/* Tableau à compléter de l'activité (brique tableau_a_completer, id tableau-potager) : cinq colonnes sur grand écran. */
#tableau-potager .number-field{width:4.6em}
/* Figure « Pair, impair : ranger par deux » (figures/pair-impair.js) : titres des rangées (écriture littérale, morceaux
   de la couleur des points qu'ils comptent) et textes des accolades ; le curseur p, inutile dans la vue « Pair et
   impair », y est désactivé et grisé. Sur téléphone, cadre au rapport du dessin dès avant le premier dessin. */
.experiment svg text.pi-titre{font-size:17px}
.experiment svg text.pi-accolade{font-size:15px}
.range-control.inactif{opacity:.45}
@media(max-width:640px){
  .experiment svg text.pi-titre{font-size:16px}
  #pair-impair-svg{aspect-ratio:400/420;height:auto}
}
/* Figure « La pyramide de cubes » (figures/pyramide.js) : nombres de cubes des étages, tableau des tests. */
.experiment svg text.pyr-etage{font-size:15px;paint-order:stroke;stroke:var(--panel);stroke-width:5px;stroke-linejoin:round}
.experiment svg text.pyr-titre{font-size:14px}
.experiment svg text.pyr-cellule{font-size:16px}
.experiment svg text.pyr-verdict{font-size:14px}
@media(max-width:640px){
  .experiment svg text.pyr-titre{font-size:15px}
  .experiment svg text.pyr-verdict{font-size:14.5px}
  #pyramide-svg{aspect-ratio:400/480;height:auto}
}

/* figures/p2-p3.css */
/* Feuille des parties 2 et 3 du chapitre 01B (chapitre.json, « styles », après figures.css) : seulement ce que leurs
   figures et leurs calculs à trous ajoutent aux styles communs. Classes partagées par les deux parties : préfixe p23-.
   Couleurs des figures : #2a5c8e (bleu, que le site change en bleu de Prusse), #ce6318 (orange), #7857a2 (violet). Une
   règle de cette feuille l'emporte sur la taille par défaut des textes des dessins (règles communes de spécificité nulle). */

/* Textes des dessins : formules (rangées de morceaux), aires écrites dans les pièces, longueurs en lettres. */
svg .p23-formule{font-size:22px}
svg .p23-petit{font-size:16px}
svg .p23-aire{font-size:18px;paint-order:stroke;stroke:var(--panel);stroke-width:5px;stroke-linejoin:round}
svg .p23-lettre{font-size:19px;paint-order:stroke;stroke:var(--panel);stroke-width:6px;stroke-linejoin:round}
svg .p23-titre{font-size:16px;letter-spacing:.02em}
svg .p23-legende{font-size:15px}
/* Sur grand écran, dans les figures manipulables et les animations (760 unités affichées sur ≈ 800 px) : formules de 19 px
   et longueurs de 17 px à l'écran (audit du 20/10/2026 : 23 et 20 px avant, effet « zoom ») ; les déroulés et les rédactions
   vivantes, dessinés plus petits, gardent les tailles ci-dessus. */
@media(min-width:641px){
  .experiment svg .p23-formule{font-size:18px}
  .experiment svg .p23-lettre{font-size:16px}
}
@media(max-width:640px){
  svg .p23-formule{font-size:20px}
  svg .p23-aire{font-size:18px}
  svg .p23-lettre{font-size:19px}
  svg .p23-titre,svg .p23-legende{font-size:15.5px}
}

/* Copies des modèles : justification écrite à droite du calcul sur le papier (\nt du cours), ici en petit, à la suite. */
.p23-note{color:var(--muted);font-size:12.5px;margin-left:4px;white-space:normal}

/* Rédactions vivantes L3 et D2 : une phrase de copie par étape et par question ; les étapes des questions b) et c) ne
   sont pas affichées (la figure allume l'étape de la méthode en cours, dist/figures/p2-l3.js et p3-d2.js). */
.redaction-steps li:has(.distributivite-simple-etape-bis),.redaction-steps li:has(.developper-identite-etape-bis){display:none}

/* Calculs à trous (dist/figures/p2-trous.js) : cases dans la ligne de calcul, marque ✓ / ✗ (comme les tableaux à
   compléter du moteur). */
.p23-trous .p23-trous-ligne{line-height:2.6;overflow-x:auto;overflow-y:hidden}
.p23-trous-case{display:inline-flex;align-items:center;gap:3px;margin:0 4px;vertical-align:middle}
.p23-trous-case input{width:4.4em;border:1px solid #6f7d87;border-radius:4px;padding:5px 7px;font-size:16px;background:var(--paper);text-align:center}
.p23-trous-case.p23-trous-large input{width:9.5em}
.p23-trous-case input[aria-invalid=true]{border-color:#c0392b;background:#fff5f3}
.p23-trous-marque{min-width:1em;font-weight:650}.p23-trous-marque.ok{color:var(--green)}.p23-trous-marque.faux{color:#c0392b}
.p23-trous .quiz-actions{margin:14px 0 0}
.p23-trous .p23-groupe{white-space:nowrap}   /* une case ne se sépare pas de ses parenthèses ni de son signe (contenu/partie2.py, G2) */
@media(max-width:640px){.p23-trous-case input{width:3.8em;padding:5px 4px}.p23-trous-case.p23-trous-large input{width:8.5em}}

/* Figures des parties 2 et 3 : sur téléphone, le cadre a d'emblée le rapport du dessin que pose chaque figure (rien ne
   saute au premier dessin). */
@media(max-width:640px){
  #redaction-l3-svg{aspect-ratio:400/330;height:auto}
  #double-distributivite-rectangle-svg{aspect-ratio:400/360;height:auto}
  #walk-double-distributivite-bloc-svg{aspect-ratio:440/380;height:auto}
  #walk-carre-somme-preuve-svg{aspect-ratio:440/400;height:auto}
  #carre-evide-bandes-svg{aspect-ratio:400/400;height:auto}
  #decouper-recoller-l-svg{aspect-ratio:400/470;height:auto}
  #redaction-d2-svg{aspect-ratio:400/360;height:auto}
}

/* figures/p45-figures.css */
/* Feuille des parties 4 et 5 du chapitre 01B (chapitre.json, « styles ») : seulement ce que leurs figures et leurs cases à
   compléter ajoutent aux styles communs. Tailles des textes des dessins en unités du dessin (MOTEUR.md, § 5.1) ;
   sélecteurs précédés de .experiment ou .redaction. Préfixes : p4- et p5- (fichiers des parties 4 et 5), ou la clé de
   la section. */
/* Partie 4 · « Une aire, deux lectures » : l'égalité lue, le sens, les aires et les longueurs. */
/* Grand écran : formules de 19 px, longueurs de 17 px à l'écran (audit du 20/10/2026 : 25 et 20 px avant). */
.experiment svg text.p4-egalite{font-size:18px}
.experiment svg text.p4-sens{font-size:14px}
.experiment svg text.p4-aire{font-size:18px}
.experiment svg text.p4-lettre{font-size:16px}
@media(max-width:640px){
  .experiment svg text.p4-egalite{font-size:21px}
  .experiment svg text.p4-sens{font-size:15.5px}
  .experiment svg text.p4-aire{font-size:19px}
  .experiment svg text.p4-lettre{font-size:19px}
}
/* Partie 4 · « Une aire, deux lectures » : sur téléphone, le cadre a d'emblée le rapport du dessin (400 × 310), comme le
   viewBox que pose la figure (sur grand écran, celui du HTML, 760 × 360) : rien ne saute au premier dessin. */
@media(max-width:640px){#facteur-commun-aires-svg{aspect-ratio:400/310;height:auto}}
/* Partie 4 · « À toi de compléter » : cases de saisie au fil des formules (figures/p4-completer.js). */
.p4-trous .p4-ligne{line-height:2.7}
.p4-trous .tableau-case{vertical-align:middle;margin:0 2px}
.p4-trous .tableau-case .p4-trou{width:4.6em;text-align:center}
.p4-trous .tableau-case .p4-trou-large{width:9.5em}
@media(max-width:640px){.p4-trous .tableau-case .p4-trou{width:3.8em;padding:6px 4px}.p4-trous .tableau-case .p4-trou-large{width:8.5em}}
/* Partie 4 · rédaction vivante F3 : la copie suit la question choisie (boutons de l'énoncé, figures/p4-redaction-f3.js) ;
   sans JavaScript, les trois questions restent lisibles. */
html.js .redaction[data-question="a"] .reconnaitre-f3-q:not([data-q="a"]),
html.js .redaction[data-question="b"] .reconnaitre-f3-q:not([data-q="b"]),
html.js .redaction[data-question="c"] .reconnaitre-f3-q:not([data-q="c"]){display:none}
html:not(.js) .reconnaitre-f3-q{display:block}
html.js .reconnaitre-f3-choix{margin:14px 0 8px}
html:not(.js) .reconnaitre-f3-choix,html:not(.js) .redaction [data-reconnaitre-f3-question]{display:none}
.redaction svg text.p4-f3-expr{font-size:20px}
.redaction svg text.p4-f3-ligne{font-size:20px}
.redaction svg text.p4-f3-note{font-size:15px}
@media(max-width:640px){
  .redaction svg text.p4-f3-expr{font-size:21px}
  .redaction svg text.p4-f3-ligne{font-size:20px}
  .redaction svg text.p4-f3-note{font-size:16px}
}
.p4-trous .p4-groupe{white-space:nowrap}
/* Partie 4 · « Une expression, trois formes » : cartes des trois formes, repère des valeurs de J. */
.experiment svg text.p4-carte-titre{font-size:13px;letter-spacing:.12em}
.experiment svg text.p4-carte-expr{font-size:19px}
.experiment svg text.p4-carte-ligne{font-size:16.5px}
.experiment svg text.p4-axe{font-size:15px}
.experiment svg text.p4-point{font-size:16px;paint-order:stroke;stroke:var(--panel);stroke-width:5px;stroke-linejoin:round}
@media(max-width:640px){
  #formes-trois-svg{aspect-ratio:400/600;height:auto}
  .experiment svg text.p4-carte-titre{font-size:14.5px}
  .experiment svg text.p4-carte-expr{font-size:19px}
  .experiment svg text.p4-carte-ligne{font-size:16px}
  .experiment svg text.p4-axe{font-size:15.5px}
}
/* Partie 5 · « Calculer de tête avec une aire » : aires, longueurs, lignes du calcul. */
.experiment svg text.p5-aire{font-size:17px}
.experiment svg text.p5-long{font-size:16px;paint-order:stroke;stroke:var(--panel);stroke-width:5px;stroke-linejoin:round}
.experiment svg text.p5-calcul{font-size:18px}
@media(max-width:640px){
  #calcul-malin-tete-svg{aspect-ratio:400/470;height:auto}
  .experiment svg text.p5-aire{font-size:16.5px}
  .experiment svg text.p5-long{font-size:17px}
  .experiment svg text.p5-calcul{font-size:19px}
}
/* Partie 5 · « La bordure carrée » : calcul à droite (p5-calcul, ci-dessus), note des unités. */
.experiment svg text.p5-note{font-size:14px}
@media(max-width:640px){#calcul-malin-bordure-svg{aspect-ratio:400/500;height:auto}.experiment svg text.p5-note{font-size:15px}}
/* Rédactions vivantes F3 et T1 : sur téléphone, le cadre a d'emblée le rapport du dessin (rien ne saute au premier dessin). */
@media(max-width:640px){#redaction-f3-svg{aspect-ratio:400/440;height:auto}#redaction-t1-svg{aspect-ratio:400/430;height:auto}}
/* Partie 5 · rédaction vivante T1 : longueurs, notes, résultat. */
.redaction svg text.p5-t1-long{font-size:16px;paint-order:stroke;stroke:var(--panel);stroke-width:5px;stroke-linejoin:round}
.redaction svg text.p5-t1-note{font-size:15px}
.redaction svg text.p5-t1-res{font-size:18px}
@media(max-width:640px){.redaction svg text.p5-t1-long{font-size:16.5px}.redaction svg text.p5-t1-note{font-size:16px}}
/* Partie 5 · « Deux programmes, côte à côte » : titres, instructions, résultats intermédiaires et finals. */
.experiment svg text.p5-prog-titre{font-size:15px;letter-spacing:.06em}
.experiment svg text.p5-prog-instr{font-size:14.5px}
.experiment svg text.p5-prog-val{font-size:18px}
.experiment svg text.p5-prog-res{font-size:19px}
@media(max-width:640px){
  #demontrer-programmes-svg{aspect-ratio:400/420;height:auto}
  .experiment svg text.p5-prog-titre{font-size:15.5px}
  .experiment svg text.p5-prog-instr{font-size:15px}
  .experiment svg text.p5-prog-val{font-size:15.5px}
  .experiment svg text.p5-prog-res{font-size:16.5px}
}
/* Partie 5 · « Deux entiers pairs consécutifs » : numéros des carreaux, calcul. */
.experiment svg text.p5-num{font-size:13px}
.experiment svg text.p5-calcul-petit{font-size:18px}
@media(max-width:640px){#demontrer-pairs-svg{aspect-ratio:400/520;height:auto}.experiment svg text.p5-num{font-size:14.5px}.experiment svg text.p5-calcul-petit{font-size:17px}}

/* presentation.css */
/* Présentation façon Sakana (pub.sakana.ai/mass), chargée en dernier : page blanche, police
   système, titres en gras, colonne de lecture centrée, figures plus larges que le texte,
   légende sous chaque figure, plan discret dans la marge gauche. Elle ne change que la
   présentation : textes, figures et scripts restent ceux du cours.
   Tailles de texte reprises de Distill (distill.pub, mesurées le 15/10/2026) : texte 16,96 px
   (interligne 1,7) dans une colonne de 704 px, titre 50 px, sous-titre 19,2 px, parties 36 px,
   sous-parties 20 px, légendes 13 px ; sur téléphone 14 px, 40 px, 16,8 px, 24 px, 18 px, 12 px. */
:root{
  --sans:-apple-system,"system-ui","Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Helvetica Neue",Arial,sans-serif;
  --paper:#fff;--ink:#212121;--heading:#262626;--muted:#6b6b6b;--line:#e5e5e5;--soft:#f6f6f7;
  --accent:#b9520e;                                  /* orange des étiquettes, lisible en petit */
  --g:24px;                                          /* gouttière */
  --text:min(704px,calc(100vw - 2*var(--g)));        /* colonne de lecture */
  --wide:min(800px,calc(100vw - 2*var(--g)));        /* figures : un peu plus larges que le texte, dessins presque à l'échelle 1 */
  --wider:min(980px,calc(100vw - 2*var(--g)));       /* figures à commentaire latéral (dessin carré) */
  --grid:var(--text);                                /* grilles (questions flash, QCM, lexique…) */
}
html{scroll-padding-top:64px}
.lesson-section,.subsection,.writing-model{scroll-margin-top:0}
body{font:1.06rem/1.7 var(--sans);color:var(--ink);background:var(--paper)}
a{color:inherit;text-decoration:underline;text-decoration-thickness:1px;text-decoration-color:#b5b5b5;text-underline-offset:3px}
a:hover{color:var(--accent);text-decoration-color:currentColor}

/* En-tête : plus de bandeau, une signature discrète au-dessus du titre. */
.masthead{background:var(--paper);color:var(--ink)}
.masthead-inner{max-width:none;width:var(--text);height:auto;margin:0 auto;padding:32px 0 0;display:flex}
.wordmark{color:var(--heading);font-size:13px;font-weight:600;letter-spacing:0;gap:9px;text-decoration:none}
.wordmark:hover{color:var(--accent)}
.wordmark svg{width:22px;height:22px;stroke:currentColor;stroke-width:1.7}
.wordmark-light{font-weight:400;opacity:1;color:var(--muted)}

/* Une seule colonne centrée ; le plan vit dans la marge (voir plus bas). */
main{display:block;max-width:none;margin:0;padding:0 var(--g)}
.title-block{max-width:var(--text);margin:52px auto 44px}
.title-block h1{font:700 50px/1.1 var(--sans);letter-spacing:-.022em;color:var(--heading);margin:0 0 16px;text-wrap:balance}
.standfirst{font:300 19.2px/1.55 var(--sans);color:var(--heading);margin:0 0 32px}
.chapter-meta{display:grid;grid-template-columns:repeat(3,auto);justify-content:start;gap:14px 64px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:20px 0 22px;font-size:13.5px;line-height:1.55;color:var(--ink)}
.chapter-meta p{margin:0}
.chapter-meta .meta-label{font-size:11px;font-weight:600;letter-spacing:.13em;text-transform:uppercase;color:var(--muted);margin:0 0 6px}

.reading,.reading.chapter-map{max-width:var(--text);margin-left:auto;margin-right:auto;transform:none}
.lesson-section{margin:96px 0 0}
.section-kicker{font-size:12px;font-weight:600;letter-spacing:.14em;color:var(--accent);margin:0 0 12px}
.reading h2{font:600 36px/1.25 var(--sans);letter-spacing:-.018em;color:var(--heading);margin:0 0 30px;padding-bottom:16px;border-bottom:1px solid var(--line);text-wrap:balance}
.reading h3{font:700 20px/1.4 var(--sans);letter-spacing:-.01em;color:var(--heading);margin:0 0 16px;text-wrap:balance}
.subsection{margin:64px 0}.subsection>h3{border-top:0;padding-top:0}
.reading h4{font:650 18px/1.4 var(--sans);letter-spacing:-.005em;color:var(--heading);margin:6px 0 16px;text-wrap:balance}
.reading h5{font:650 12px/1.5 var(--sans);letter-spacing:.11em;text-transform:uppercase;color:var(--muted);margin:0 0 10px}
.reading p{margin:0 0 1em}
.reading li{margin-bottom:10px}
.note{font-size:14px;color:var(--muted)}
.lesson-section:target>.reading>h2,.writing-model:target>h4{color:var(--heading)}

/* Grille de Distill (mesurée le 15/10/2026) : sous 768 px, texte pleine largeur à 14 px ; de 768 à
   999 px, colonne de 472 px à 16 px ; de 1000 à 1179 px, colonne de 512 px (16 px, puis 16,96 px dès
   1100) ; dès 1180 px, colonne de 704 px à 16,96 px. Parties à 24 px jusqu'à 1099 px, 36 px ensuite.
   Les figures restent plus larges que le texte, comme les figures « screen » de Distill. */
@media(min-width:768px) and (max-width:999px){:root{--text:472px;--grid:var(--wide)}}
@media(min-width:1000px) and (max-width:1179px){:root{--text:512px}}
@media(min-width:768px) and (max-width:1099px){body{font-size:16px}}
@media(max-width:1099px){.reading h2{font-size:24px;margin-bottom:24px;padding-bottom:12px}.reading h3{font-size:18px}.flash-set>h3{font-size:18px}}
@media(max-width:999px){.chapter-meta{grid-template-columns:auto auto;gap:14px 36px}.chapter-meta>div:last-child{grid-column:1/-1}}

/* Encadrés du cours (définitions, propriétés…) : cartes à filet orange, comme les encarts Sakana. */
.statement{border:1px solid var(--line);border-top:3px solid var(--orange);border-radius:8px;padding:16px 22px 18px;margin:32px 0;background:var(--paper)}
.statement p{margin:8px 0 0}.statement p:first-of-type{margin-top:6px}
.small-label{font-size:11.5px;font-weight:650;letter-spacing:.13em;color:var(--accent)}
dfn,.reading u{text-decoration:underline dotted;text-decoration-color:#8fa6b5;text-decoration-thickness:1px;text-underline-offset:.26em}
.math-line,.reading .math-line{font:1em/1.6 var(--sans)}
.reading .td-ref{font-size:13.5px;color:var(--muted);border-left:2px solid var(--line);padding-left:14px}
.proof summary{line-height:1.5}

/* Modèles de rédaction. */
.writing-model{border-top:2px solid var(--heading);padding:24px 0 8px;margin:56px 0}
.model-label{font:650 11.5px/1.5 var(--sans);letter-spacing:.14em;color:var(--accent);margin:0 0 6px!important}
.method-steps{background:#eef5f8;border-left:3px solid var(--blue);border-radius:0 10px 10px 0;padding:16px 22px 14px;margin:16px 0 24px;font-size:16px}
.model-problem,.copy{font-size:16px}
.practice{border-left:0;border-top:2px solid var(--orange);padding:18px 0 0;margin:40px 0}
.practice>.small-label{color:var(--accent)}
.practice h4{font-size:18px}

/* Dépliants (démonstrations, réponses, corrections). */
details{border-block:1px solid var(--line);padding:13px 0;margin:24px 0}
summary{font-size:15px;font-weight:600;color:var(--heading)}
summary:hover{color:var(--accent)}
details>div{font-size:16px;padding-top:16px}
.practice details{font-size:16px}

/* Tableaux. */
table{font-size:14.5px}
th,td{border-bottom:1px solid var(--line);padding:11px 13px}
th{font-size:12.5px;font-weight:600;color:var(--muted);background:var(--soft)}
.reading th{font-size:12.5px}.reading td{font-size:14.5px}
caption{font-size:13px}
/* Tableau sur téléphone (20/10/2026, révélé par le 01B : tableaux de synthèse coupés, leur dernière colonne lisible
   seulement par un défilement que rien ne signalait). Sous 640 px, un tableau de plus de deux colonnes (classe
   table-fiches, posée par table() et tableau_a_completer() de moteur/construire.py) se présente en fiches empilées : une
   fiche par ligne, chaque cellule précédée de son en-tête (span.cellule-entete, caché sur grand écran) ; les en-têtes
   du tableau restent pour les lecteurs d'écran (rôles ARIA posés par le moteur). */
.cellule-entete{display:none}
@media(max-width:640px){
  .table-wrap.table-fiches{overflow:visible}
  .table-fiches table,.table-fiches tbody,.table-fiches tr,.table-fiches td{display:block;width:auto;min-width:0!important}
  .table-fiches table{margin:12px 0 18px}
  .table-fiches thead{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
  .table-fiches tr{border:1px solid var(--line);border-radius:8px;padding:6px 14px 8px;margin:0 0 10px;background:var(--paper)}
  .table-fiches td,.reading .table-fiches td{border:0;padding:6px 0;text-align:left;font-size:14px}
  .table-fiches td+td{border-top:1px solid var(--soft)}
  .table-fiches .cellule-entete{display:block;margin:0 0 1px;font-size:12.5px;font-weight:600;letter-spacing:.03em;line-height:1.4;color:var(--muted)}
  .table-fiches .tableau-case{margin-top:2px}
  /* Cellules toutes courtes (nombres, cases à remplir, formules brèves) : deux cellules par ligne de la fiche, l'en-tête
     à côté de la valeur quand ils tiennent ensemble. */
  .table-fiches.fiches-courtes tr{display:grid;grid-template-columns:repeat(auto-fill,minmax(9em,1fr));column-gap:16px;padding:6px 14px}
  .table-fiches.fiches-courtes td{display:flex;flex-wrap:wrap;align-items:center;gap:2px 8px;min-height:40px}
  .table-fiches.fiches-courtes td+td{border-top:0}
  .table-fiches.fiches-courtes .cellule-entete{margin:0}
}
/* Formule ou tableau qui dépasse sa colonne et défile sur le côté (classe deborde, posée par layout.js) : le bord où le
   contenu continue s'estompe, pour que l'élève sache qu'il y a une suite. Filet de sécurité : une formule du texte doit
   tenir dans sa colonne (outils/formules_cours.cjs) ; seule la copie d'un modèle, qui garde la mise en page du papier,
   peut défiler. */
.deborde{--fondu-g:0px;--fondu-d:26px;-webkit-mask-image:linear-gradient(to right,transparent,#000 var(--fondu-g),#000 calc(100% - var(--fondu-d)),transparent);mask-image:linear-gradient(to right,transparent,#000 var(--fondu-g),#000 calc(100% - var(--fondu-d)),transparent)}
.deborde.deborde-milieu{--fondu-g:26px}
.deborde.deborde-bout{--fondu-g:26px;--fondu-d:0px}
@media print{.deborde{-webkit-mask-image:none;mask-image:none}}

/* Figures : légende dessous (« Figure 3. » puis le titre, puis le commentaire). */
.experiment{display:flex;flex-direction:column}
.experiment>svg,.walk-figure>svg,.redaction-figure>svg{border:1px solid var(--line);border-radius:8px}
.experiment>.figure-heading{order:20;display:block;margin:16px 0 0}
.experiment>figcaption{order:21}
.figure-heading{font-size:13px;line-height:1.5;color:var(--heading)}
.figure-heading .figure-number{display:inline;font-size:inherit;font-weight:700;letter-spacing:0;color:var(--heading);margin-right:.4em;white-space:nowrap}
.figure-heading h2,.figure-heading h4,.experiment .figure-heading h2,.experiment .figure-heading h4,.added-experiment .figure-heading h4{display:inline;font:400 13px/1.5 var(--sans);color:var(--heading);margin:0;letter-spacing:0}
.figure-heading .drag-hint{display:inline;margin-left:.5em;font-size:inherit;color:var(--accent)}
.figure-heading .drag-hint::before{content:'· ';color:var(--muted)}
figcaption,.added-experiment figcaption{font-size:13px;line-height:1.5;color:var(--muted);padding-top:3px;max-width:none}
.walk-figure{display:flex;flex-direction:column}
.walk-figure>svg{order:-1}
.walk-figure>.figure-heading{display:block;margin:12px 0 0}
.walk figcaption{padding-top:8px}
.controls{border-bottom:0;padding:18px 0 0}
.range-control label{font-size:13px;font-weight:600;color:var(--heading)}
.range-control output{color:var(--accent);font-size:15px}
.range-ends{font-size:12px}
.button{border:1px solid #d4d4d8;border-radius:6px;padding:5px 12px;min-height:32px;font-size:13px;font-weight:500;background:var(--paper);color:var(--heading)}
.button:hover{background:#f4f4f5;border-color:#b4b4bb}
.button.dark{background:var(--heading);border-color:var(--heading);color:#fff}
.button.dark:hover{background:#000;border-color:#000}
.button.quiet{border-color:transparent;background:transparent;color:var(--muted)}
.segmented button{border:1px solid #d9d9de;border-radius:6px;font-size:13px;padding:5px 12px;min-height:32px;color:var(--muted);background:var(--paper)}
.segmented button:hover{border-color:#b4b4bb;color:var(--heading)}
.segmented button[aria-pressed=true]{background:#fff4ec;color:var(--accent);border-color:#efb58c}
.experiment .live-observation:not(:empty),.reading .proof-note:not(:empty),.reading .explanation:not(:empty){font-size:14px;border-radius:0 8px 8px 0}
.added-experiment .range-control{max-width:440px}
.walk-step p{font-size:15px}
.walk-label{font-size:11px;letter-spacing:.13em;color:var(--accent)}
.reading .copie-line{font-size:15px}
.redaction-step{font-size:14px}
.redaction-steps,.reading .redaction-steps{background:var(--soft);border-radius:8px}
.copie{border-radius:8px}
.reading .writing-model.redaction{border-top-color:var(--heading)}

/* Figures et blocs larges, centrés sur la page. */
main>.experiment,.part>.experiment{width:var(--wide);margin-left:auto;margin-right:auto}
.reading .experiment,.reading .walk,.reading .writing-model.redaction{width:var(--wide);max-width:none;left:auto;transform:none;margin-left:calc(50% - var(--wide)/2);margin-right:0}
.reading .flash-set,.reading .quiz-list,.reading .glossary,.reading .model-index{width:auto;max-width:none;margin-left:0}
/* Tableau large : au-delà de la colonne de texte, dès que --grid en diffère (768 px) ; sur téléphone, la largeur de la
   colonne (l'habillage du site donne à --text une valeur relative qui, ici, rétrécissait le tableau de 48 px). */
@media(min-width:768px){.reading .table-large{width:var(--grid);max-width:none;margin-left:calc(50% - var(--grid)/2)}}
.reading .writing-model{width:auto;display:block}
/* Dessin carré avec le commentaire à côté (cls='motion-side') : plus large,
   pour que le dessin garde sa taille à côté du commentaire. */
@media(min-width:1180px){.reading .experiment.motion-side{width:var(--wider);margin-left:calc(50% - var(--wider)/2)}}
/* Figure posée dans un encadré (box) : elle reste dans la carte. */
.reading .statement .experiment{width:auto!important;margin-left:0;margin-right:0}
.writing-model>.method-steps{position:static;margin:16px 0 24px}

/* Questions flash, QCM, lexique. */
@media(min-width:1180px){.reading .flash-set{display:grid;grid-template-columns:1fr 1fr;column-gap:44px;align-items:start}.reading .flash-set>h3,.reading .flash-set>.note{grid-column:1/-1}}
@media(min-width:1100px){.flash-set>h3{font-size:20px}}  /* 18 px en dessous (règle des titres plus haut) */
.flash-item>p{font-size:1em}
.question-number{font-size:12px;color:var(--muted)}
.flash-item summary{font-size:13.5px;font-weight:600;color:var(--accent)}
.flash-item details>div{font-size:16px}
.quiz-question{padding:4px 0 24px}.quiz-question legend{font-size:1em;padding-top:22px}
.quiz-options label{font-size:15px;border-radius:6px}
.quiz-options label:has(input:checked){border-color:var(--orange);background:#fff7ef}
.quiz-options input{accent-color:var(--orange)}
.feedback{font-size:14.5px;border-radius:0 6px 6px 0}
.glossary dd{font-size:15px}.glossary dd strong{font-size:14.5px}
.model-index a{font-size:14px;text-decoration:none}
.model-index .model-code{color:var(--accent)}
.parcours{font-size:12px}
.parcours.parcours-seul{border:0;padding:0;background:none;vertical-align:-2px}
.recap{border-top:2px solid var(--heading)}

/* Barre des parties (écrans moyens) et plan détaillé. */
main>.chapter-nav{display:flex}.reading.chapter-map{display:block}
.chapter-nav{background:rgba(255,255,255,.97);border-block:1px solid var(--line);margin:56px calc(-1*var(--g)) 0;padding:13px max(var(--g),calc((100% - var(--text))/2 + var(--g)));gap:24px;font-size:13px;backdrop-filter:blur(6px)}
.chapter-nav a{color:var(--muted);text-decoration:none}
.chapter-nav a.active,.chapter-nav a:hover{color:var(--accent)}
.chapter-map{margin-top:28px}
.chapter-map summary{font-size:14.5px}
.chapter-map p{font-size:14px;margin-bottom:10px}.chapter-map a{color:var(--heading);text-decoration:none}.chapter-map a:hover{color:var(--accent)}

/* Pied de page. */
footer{margin-top:120px;background:var(--paper);border-top:1px solid var(--line);padding:32px var(--g) 40px;font-size:12.8px;color:var(--muted)}
footer>div,footer>p{max-width:var(--text);margin-left:auto;margin-right:auto}
.footer-brand{color:var(--heading)}
/* Page habillée par le site, reconnue à son fil d'Ariane (nav.fil, dans l'en-tête de toutes ses pages ; le bandeau .sa-head
   n'est que sur index.html depuis la page par partie, 20/10/2026). */
body:has(.masthead .fil) :is(.masthead,footer){padding-inline:0}

/* Plan dans la marge gauche dès 1000 px, comme Distill : discret (petit, gris), la partie lue
   est déployée et son entrée en orange (layout.js suit la lecture). */
.toc-side{display:none}
@media(min-width:1000px){
  /* Colonne centrée sur la page dès qu'il y a la place (≥ 1436 px) ; sinon décalée juste ce
     qu'il faut vers la droite pour laisser le plan libre (--shift). */
  :root{--wide:min(800px,calc(100vw - 252px));--wider:min(980px,calc(100vw - 252px));--grid:var(--wide);--text:var(--wide);--shift:max(24px,min(calc(1460px - 100vw),228px))}
  :root:has(.masthead .fil){--shift:24px}
  /* Une seule largeur de colonne dès 1000 px : texte, figures, tableaux et encadrés partagent le même bord (800 px quand il y a
     la place). Le corps passe à 18 px pour que la ligne garde une centaine de caractères (v16, 16/10). */
  body{font-size:18px}
  .method-steps,.model-problem,.copy,details>div,.practice details,.flash-item details>div{font-size:17px}
  summary,.walk-step :is(p,.math-line),.reading .copie-line,.quiz-options label,.glossary dd{font-size:16px}
  figcaption,.experiment figcaption,.added-experiment figcaption{max-width:66ch;font-size:14px}
  html{scroll-padding-top:24px}
  main{display:block;padding-left:var(--shift);padding-right:24px}
  .masthead,footer{padding-left:var(--shift);padding-right:24px}
  main>.chapter-nav,.reading.chapter-map{display:none}
  .toc-side{display:block;position:fixed;left:28px;top:0;width:176px;max-height:100vh;overflow:auto;padding:30px 0;margin:0;font-size:12.5px;line-height:1.45;scrollbar-width:none;z-index:5}
  /* Remises à zéro du plan ici et non dans styles.css (≥ 1200 px) : entre 1000 et 1199 px, numéros et soulignés apparaissaient. */
  .toc-side ol{list-style:none;margin:0;padding:0}.toc-side ol ol li{margin:0}.toc-side a{text-decoration:none}.toc-side ol ol a{display:block;margin-left:-13px;border-left:2px solid transparent}
  .toc-side::-webkit-scrollbar{display:none}
  .toc-title{font-size:10.5px;font-weight:600;letter-spacing:.14em;color:var(--muted);margin:0 0 14px}
  .toc-side>ol>li{margin:0 0 9px}
  .toc-side>ol>li>a{font-weight:500;color:var(--heading)}
  .toc-side ol ol{margin:6px 0 4px;padding-left:12px;border-left:1px solid var(--line)}
  .toc-side ol ol a{padding:3px 0 3px 10px;color:var(--muted)}
  html.js .toc-side>ol>li:not(.current)>ol{display:none}
  .toc-side a:hover,.toc-side>ol>li.current>a,.toc-side a.active{color:var(--accent)}
  .toc-side ol ol a.active{border-left-color:var(--orange)}
  .title-block{margin-top:52px}
  .lesson-section{container-type:normal;margin-top:96px}
  .reading .quiz-list,.reading .glossary{display:block}
  .reading .glossary>div{grid-template-columns:160px 1fr}
  .reading .model-index{grid-template-columns:1fr 1fr}
}

/* Sous 768 px (téléphone et petite tablette, comme Distill) : texte à 14 px, tout le reste à l'avenant. */
@media(max-width:767px){
  body{font-size:15px;line-height:1.6}
  html{scroll-padding-top:92px}
  .title-block h1{font-size:40px}
  .standfirst{font-size:16.8px;margin-bottom:24px}
  .chapter-meta{font-size:13px}
  .reading h4,.practice h4{font-size:16px}
  .method-steps{font-size:14px}
  .model-problem,.copy,details>div,.practice details,.flash-item details>div{font-size:14px}
  .note{font-size:13px}.reading .td-ref{font-size:12.5px}
  summary{font-size:14px}
  table,.reading td{font-size:13.5px}
  .figure-heading,.figure-heading h2,.figure-heading h4,.experiment .figure-heading h2,.experiment .figure-heading h4,.added-experiment .figure-heading h4{font-size:12px}
  /* Légende et commentaire d'état des figures : du contenu mathématique, jamais sous 14 px (20/10/2026 ; règles plus
     précises que celles de l'habillage du site, qui donne 13 px aux légendes). */
  figcaption,.added-experiment figcaption,main figure.experiment>figcaption,main figure.walk>figcaption{font-size:14px}
  .button,.segmented button{font-size:13px;min-height:40px;padding:8px 14px}
  .experiment .live-observation:not(:empty),.reading .proof-note:not(:empty),.reading .explanation:not(:empty){font-size:14px}
  /* Dépliants (« Voir la réponse », « Voir le corrigé », « Lire la rédaction complète »…) : une ligne cliquable d'au moins
     40 px de haut ; le dépliant reprend cet espace dans sa propre marge. */
  /* Formules centrées : 1,3 fois le texte, au plus 19,5 px (la taille prévue sur téléphone, texte de 15 px) : l'habillage
     du site passe le texte à 17 px et les formules à 22 px, 13 % plus larges, coupées dans une colonne de 342 px. */
  .math-line .katex{font-size:min(1.3em,19.5px)}
  summary{padding-block:10px;min-height:40px}
  details{padding-block:3px}
  .flash-item details{padding-top:2px}
  .walk-step p,.reading .copie-line{font-size:14px}
  .redaction-step{font-size:13.5px}
  .chapter-nav{font-size:12.5px;flex-wrap:wrap;gap:6px 18px;overflow:visible}  /* deux lignes plutôt qu'un débordement invisible */
  .quiz-options label,.feedback,.glossary dd{font-size:13.5px}
}
/* Téléphone : marges et espacements. */
@media(max-width:640px){
  :root{--g:16px}
  main{padding:0 var(--g)}
  .masthead-inner{padding-top:22px}
  .title-block{margin:34px auto 32px}
  .lesson-section{margin-top:64px}
  .subsection{margin:48px 0}
  .statement{padding:14px 16px 16px}
  .practice{padding-left:0}
  .method-steps{padding:14px 16px 12px}
  .experiment>svg,.walk-figure>svg,.redaction-figure>svg{border-radius:6px}
  .chapter-nav{padding:11px var(--g);gap:20px;margin-top:40px}
  footer{margin-top:80px}
}
/* Parcours en cinq parties (parcours.js) : une seule partie affichée ; les autres restent dans la
   page, repliées, invisibles et hors de l'écran. Elles ne sont pas mises en page tant qu'elles sont
   cachées (content-visibility:hidden) : la première mise en page de la page entière coûtait
   ≈ 0,2 s sur téléphone. Une partie l'est à son affichage, et une mesure demandée par un script
   dans une partie cachée (figure dessinée hors de sa partie, impression) la force : les mesures
   restent justes. Les polices que seule une partie cachée emploie sont chargées à part (parcours.js,
   <link rel="preload"> de build_course.py), pour qu'elle s'affiche d'emblée dans ses polices ; ses
   champs de saisie sont retirés jusqu'à son affichage (parcours.js : sinon Chrome la mettrait en
   page pour remplir les formulaires) ; blocs.js ne mesure que les figures de la partie affichée.
   Navigateur sans content-visibility : les parties cachées sont mises en page comme avant.
   Sans JavaScript et à l'impression, le cours se lit d'un seul tenant.
   Modèle : la règle couvre 12 parties (cours et page TD comprise) ; moteur/construire.py refuse d'en fabriquer plus. */
html.en-parties:not([data-part="1"]) .part[data-part="1"],html.en-parties:not([data-part="2"]) .part[data-part="2"],html.en-parties:not([data-part="3"]) .part[data-part="3"],html.en-parties:not([data-part="4"]) .part[data-part="4"],html.en-parties:not([data-part="5"]) .part[data-part="5"],html.en-parties:not([data-part="6"]) .part[data-part="6"],html.en-parties:not([data-part="7"]) .part[data-part="7"],html.en-parties:not([data-part="8"]) .part[data-part="8"],html.en-parties:not([data-part="9"]) .part[data-part="9"],html.en-parties:not([data-part="10"]) .part[data-part="10"],html.en-parties:not([data-part="11"]) .part[data-part="11"],html.en-parties:not([data-part="12"]) .part[data-part="12"]{height:0;overflow:hidden;visibility:hidden;transform:translateY(-200000px);content-visibility:hidden}
.part-head{margin:52px auto 8px}
.part-kicker{font-size:12px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);margin:0 0 10px}
.part-head h1{font:700 50px/1.1 var(--sans);letter-spacing:-.022em;color:var(--heading);margin:0;text-wrap:balance}
.part-head+.lesson-section{margin-top:56px}
.part-nav{display:flex;justify-content:space-between;align-items:flex-start;gap:24px;margin:80px auto 0;padding-top:22px;border-top:1px solid var(--line)}
.part-nav a{display:flex;flex-direction:column;gap:3px;max-width:48%;text-decoration:none;color:var(--heading)}
.part-nav .part-next{margin-left:auto;text-align:right}
.part-nav-label{font-size:12px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.part-nav-title{font-size:17px;font-weight:600;line-height:1.35}
.part-nav a:hover .part-nav-title{color:var(--accent)}
.reading .vers-entrainement{font-size:13.5px;color:var(--muted);border-left:2px solid var(--line);padding-left:14px}
@media(max-width:1099px){.part-head h1{font-size:36px}}
@media(max-width:767px){.part-head{margin-top:34px}.part-head h1{font-size:30px}.part-nav-title{font-size:15px}.reading .vers-entrainement{font-size:12.5px}}
@media print{
  html.en-parties .part{height:auto!important;overflow:visible!important;visibility:visible!important;transform:none!important;content-visibility:visible!important}
  .part-nav{display:none}
  .toc-side,.chapter-nav{display:none!important}
  :root{--text:100%;--wide:100%;--grid:100%}
  .experiment>.figure-heading{margin-top:8px}
}

/* Blocs de figure (blocs.js) : invitation « À toi » au-dessus de chaque figure manipulable, en
   pastille comme les renvois « in figure » de Sakana ; à l'arrivée sur la figure, la commande à
   essayer s'illumine deux fois ; l'invitation s'estompe après la première manipulation. */
.cta{order:-2;align-self:flex-start;justify-self:start;display:inline-block;max-width:100%;margin:0 0 12px;padding:3px 13px 4px 10px;border:1px solid #f0c3a2;border-radius:999px;background:#fff8f2;color:var(--accent);font-size:13px;font-weight:600;line-height:1.45;transition:opacity .5s,color .5s,border-color .5s,background-color .5s}
.cta::before{content:'↓';font-weight:700;margin-right:6px}
.experiment.cta-done .cta{opacity:.7;color:var(--muted);border-color:var(--line);background:var(--paper)}
.experiment.has-cta .drag-hint{display:none}
.cta-pulse{animation:cta-pulse 1.2s ease-out 2}
input[type=range].cta-pulse{border-radius:999px}
@keyframes cta-pulse{0%{box-shadow:0 0 0 0 rgba(206,99,24,.5)}70%{box-shadow:0 0 0 11px rgba(206,99,24,0)}100%{box-shadow:0 0 0 0 rgba(206,99,24,0)}}
@media(prefers-reduced-motion:reduce){.cta-pulse{animation:none}}
@media(max-width:640px){.cta{font-size:12.5px;border-radius:14px;margin:0 6px 10px}}

/* Conjectures guidées (build_course.py, dist/conjecture.js) */
.conjecture{margin:24px 0 8px;padding:16px 20px;border:1px dashed #b9c6ce;border-radius:10px;background:#fbfcfd}
.conjecture .small-label{display:block;margin-bottom:6px}
.conjecture-amorce{margin:0 0 12px;font-size:1.02em}
.conjecture-choix{display:grid;gap:8px}
.conjecture-choix .button{text-align:left;white-space:normal;line-height:1.45;padding:10px 14px;font-size:.95em}
.conjecture-choix .button[aria-pressed=true]{border-color:var(--blue);background:#eef5f8}
.conjecture-choix .button.juste{border-color:var(--green);background:#eef7f2;color:#1f5f4a}
.conjecture-choix .button.incorrect{border-color:#c0392b;background:#fff5f3;color:#7f1d1d}
.conjecture .feedback{margin:12px 0 0}
/* Retours « juste » et « à revoir » : règles communes .feedback.correct et .feedback.incorrect (styles.css). */
.feedback.incorrect{border-left-color:#c0392b;background:#fff5f3;color:#7f1d1d}
.conjecture .feedback.correct{border-left-color:var(--green);background:#eef7f2;color:#1f5f4a}
.conjecture-suite{margin-top:12px;padding-top:10px;border-top:1px solid var(--line);font-size:.95em}
.conjecture-suite p{margin:0}

/* Tiroir « Plan » (dist/layout.js) : petits écrans seulement */
.plan-bouton{position:fixed;right:14px;bottom:calc(14px + env(safe-area-inset-bottom,0px));z-index:40;min-height:42px;padding:9px 16px;border:1px solid var(--line);border-radius:999px;background:var(--navy);color:#fff;font:600 13px/1 var(--sans);box-shadow:0 6px 18px rgba(22,48,64,.25);cursor:pointer}
@media(min-width:1000px){.plan-bouton{display:none}}
@media print{.plan-bouton{display:none}}
.plan-dialog{border:0;border-radius:12px;padding:0;width:min(560px,94vw);max-height:88vh;box-shadow:0 20px 60px rgba(0,0,0,.35);color:var(--ink);background:var(--paper)}
.plan-dialog::backdrop{background:rgba(22,48,64,.55)}
.plan-dialog-tete{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 18px;border-bottom:1px solid var(--line)}
.plan-dialog-tete p{margin:0;font-size:12px;font-weight:650;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.plan-dialog-corps{padding:10px 18px 18px;overflow:auto;max-height:calc(88vh - 60px);font-size:15px;line-height:1.5}
.plan-dialog-corps ol{list-style:none;margin:0;padding:0}
.plan-dialog-corps ol ol{margin:4px 0 10px;padding-left:14px;border-left:1px solid var(--line);display:block!important}
.plan-dialog-corps li{margin:0}
.plan-dialog-corps a{display:block;padding:7px 0 7px 8px;text-decoration:none;color:var(--ink);min-height:36px}
.plan-dialog-corps > ol > li > a{font-weight:600;color:var(--navy)}
.plan-dialog-corps a.active,.plan-dialog-corps li.current > a,.plan-dialog-corps li.td-ouverte > a{color:var(--accent)}
.plan-dialog-corps a.fait::after{content:' ✓';color:var(--green)}
.plan-dialog-corps .td-exo img{width:13px;height:13px;vertical-align:-2px;margin-right:4px}

/* Découverte avant révélation : un élément de classe revele-<id de la conjecture> reste caché tant que la conjecture
   n'est pas trouvée (conjecture.js pose la classe <id>-ok sur <html>). Les règles sont écrites par moteur/construire.py
   dans dist/conjectures.css, une par conjecture du chapitre. (Chapitre 01A : règles écrites ici à la main.) */
/* Paliers d'un exercice guidé : chacun s'ouvre après le précédent */

/* Tableau à compléter (brique tableau_a_completer, dist/tableau.js) : cases de saisie dans les cellules, marque ✓ / ✗
   à côté de chaque case ; bilan révélé (brique bilan) : la ligne d'attente, puis l'encadré. */
.reading .tableau-a-completer .table-wrap td{vertical-align:middle}
.tableau-case{display:inline-flex;align-items:center;gap:4px}
.tableau-case .number-field{width:5.2em;padding:6px 8px;font-size:16px;font-variant-numeric:tabular-nums}
.tableau-case .number-field[aria-invalid=true]{border-color:#c0392b;background:#fff5f3}
.tableau-marque{min-width:1.1em;font-weight:650}.tableau-marque.ok{color:var(--green)}.tableau-marque.faux{color:#c0392b}
.tableau-a-completer .quiz-actions{margin:14px 0 0}
.tableau-a-completer+.proof{margin-top:14px}
.bilan-attente{font-style:normal}

/* td.css */
/* Feuille d'exercices (TD) et corrigé : page 6 du parcours (source/td/td_convert.py).
   Présentation pensée pour l'écran, pas pour l'imprimé : encadrés en « callouts » colorés (bleu
   démarche, ambre pièges, vert à retenir), copies ✎ en cartes, corrigé guidé question par question
   (dist/td.js), exercices marqués « fait », figures agrandies au clic. */
.td-section .reading>h2{margin-bottom:24px}
.td-legende{font-size:14px;color:var(--muted);border-bottom:1px solid var(--line);padding-bottom:14px;margin-bottom:28px}
.td-legende p{margin:0 0 6px}
.td-legende .parcours{margin-right:6px}

/* Exercices */
.td-exercice{border-top:1px solid var(--line);padding-top:22px;margin-top:44px}
/* Le navigateur ne met en page un exercice que lorsqu'il approche de l'écran : la page TD (54 exercices,
   même repliée quand une autre partie est affichée) ne ralentit plus le chargement (3,1 → 2,4 s mesurés
   sur téléphone moyen simulé). La hauteur réelle est gardée une fois l'exercice affiché (auto). */
.td-exercice{content-visibility:auto;contain-intrinsic-size:auto 900px}
.td-exercice.td-enrichissement{border-top:1px dashed #b9b9bf;margin-top:28px;padding-left:16px;border-left:3px solid #e2e2e6}
.reading .td-titre{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;font-size:18px;line-height:1.4;margin:0 0 12px}
.td-num{color:var(--accent);font-variant-numeric:tabular-nums;margin-right:2px}
.td-meta{display:inline-flex;align-items:center;gap:10px;margin-left:auto;font-weight:400}
.td-etoiles{font-size:13px;letter-spacing:.06em;color:#636369;white-space:nowrap}
@media(min-width:1000px){.reading .td-titre{font-size:20px}}
.td-icone{padding:0 3px;border-radius:9px}
.td-sujet{margin:-4px 0 12px}
.td-enonce>p,.td-corrige-corps>p{margin:0 0 .8em}

/* Listes numérotées comme dans le TD (a), b)… ; 1., 2.… ; A1)…) */
.reading .td-liste{list-style:none;margin:6px 0 12px;padding:0}
.reading .td-liste>li{display:grid;grid-template-columns:auto minmax(0,1fr);column-gap:.55em;margin:0 0 8px}
.td-lab{font-variant-numeric:tabular-nums;color:var(--heading);min-width:1.1em}
.td-liste>li>div>p{margin:0 0 .45em}
.td-liste>li>div>p:last-child{margin-bottom:0}
.td-colonnes .td-liste{columns:2;column-gap:36px}
.td-colonnes .td-liste>li{break-inside:avoid}

/* Encadrés : une famille de « callouts » à filet gauche coloré, dans la palette du cours
   (bleu = démarche, ambre = pièges et attention, vert = à retenir, gris-bleu = rappel et gestes). */
.td-cadre{border:0;border-left:3px solid #9fb3c0;border-radius:0 10px 10px 0;padding:12px 18px;margin:20px 0;background:#f3f6f8}
.td-cadre>p:last-child,.td-cadre>.td-liste:last-child{margin-bottom:0}
.td-rappel,.td-enrichi{border-left-color:#9fb3c0;background:#f3f6f8}
.td-gestes{border-left-color:var(--navy);background:#f3f6f8}
.td-pieges,.td-attention{border-left-color:#d99a1e;background:#fff8e8}
.td-pieges .td-etiquette,.td-attention .td-etiquette{color:#8a5a00}
.td-retenir{border-left-color:var(--green);background:#eef7f2}
.td-retenir .td-etiquette{color:var(--green)}
.td-methode{border-left-color:var(--blue);background:#eef5f8;padding:10px 16px}
.td-methode .td-etiquette{color:var(--blue)}
.td-boite{padding:0 18px 12px;overflow:hidden;border-left:0;border-radius:10px;border:1px solid #d7dfe4;background:var(--paper)}
.td-cadre-titre{margin:0 -18px 10px;padding:7px 18px;background:var(--navy);color:#fff;font-size:14px}
.td-etiquette{font-weight:650}
.td-etape{margin:16px 0 8px}

/* Copies ✎ : ce qui s'écrit sur une copie de contrôle. Carte blanche, plume dans la marge,
   fin trait de marge comme sur une copie ; les résultats encadrés prennent la couleur d'accent. */
.td-copie{position:relative;margin:12px 0;padding:12px 18px 12px 44px;border:1px solid #e2e7eb;border-radius:10px;background:#fff;box-shadow:0 1px 2px rgba(22,48,64,.05)}
.td-copie::before{content:'✎';position:absolute;left:11px;top:10px;color:#9aa7b0;font-size:14px}
.td-copie::after{content:'';position:absolute;left:32px;top:8px;bottom:8px;border-left:1px solid #f0cfc8}
.td-copie>p:last-child,.td-copie>div>p:last-child{margin-bottom:0}
/* Deux copies côte à côte dans l'imprimé : à l'écran, une carte par réponse, l'une sous l'autre
   (les égalités d'angles ne se coupent plus en deux colonnes étroites). */
.td-copie.td-copie-deux{display:grid;grid-template-columns:minmax(0,1fr);gap:12px;padding:0;border:0;background:none;box-shadow:none}
.td-copie.td-copie-deux::before,.td-copie.td-copie-deux::after{display:none}
.td-copie-deux>[data-q],.td-copie-deux>div:not(.td-pas){position:relative;padding:12px 18px 12px 44px;border:1px solid #e2e7eb;border-radius:10px;background:#fff;box-shadow:0 1px 2px rgba(22,48,64,.05)}
.td-copie-deux>div:not(.td-pas)::before{content:'✎';position:absolute;left:11px;top:10px;color:#9aa7b0;font-size:14px}
.td-copie-deux>div:not(.td-pas)::after{content:'';position:absolute;left:32px;top:8px;bottom:8px;border-left:1px solid #f0cfc8}
/* Repères de question dans les copies ; soulignements du TD = termes et titres, pas des liens */
.td-q{color:var(--accent);font-variant-numeric:tabular-nums}
.td-section u{text-decoration:underline dotted;text-decoration-color:#8fa6b5;text-underline-offset:4px}
.td-etape u,.td-sujet u{text-decoration:none;font-weight:650;color:var(--heading)}
.td-corrige-corps .katex .fbox{border-color:var(--accent);border-radius:3px}
.td-corrige-corps .katex .boxpad{background:#fff4ec;border-radius:3px}
/* Les questions en attente sont masquées même quand une règle d'affichage (grille des listes) les cible. */
.td-corrige-corps [hidden]{display:none!important}

/* Formules, figures, tableaux */
.td-formule{margin:10px 0;overflow-x:auto;overflow-y:hidden}
/* Plusieurs formules d'une même ligne du papier (séparées par \qquad) : côte à côte quand la place le permet, les unes
   sous les autres sinon (td_convert.py, formule_centree). */
.td-formules{display:flex;flex-wrap:wrap;justify-content:center;justify-content:safe center;align-items:center;gap:8px 2.2em;padding:2px 0}
.td-morceau{white-space:nowrap}
/* Formule ou tableau plus large que l'écran : dégradé au bord droit tant que la fin n'est pas atteinte (td.js). */
.td-formule.td-defile:not(.td-defile-fin),.td-tableau.td-defile:not(.td-defile-fin){-webkit-mask-image:linear-gradient(to right,#000 calc(100% - 44px),transparent);mask-image:linear-gradient(to right,#000 calc(100% - 44px),transparent)}
.td-figure{margin:16px 0;text-align:center}
.td-figure img{max-width:100%;height:auto}
.td-centre{text-align:center}
.td-droite{text-align:right}
.td-citation{margin:12px 0 12px 2em}
.td-fbox{border:1px solid #9d9da3;border-radius:3px;padding:1px 6px}
/* Texte du TD placé hors des énoncés (encadré « Repère » entre deux exercices…) et présentation d'une section dans le
   corrigé (td_convert.py) : à leur place, dans le fil de la section. */
.td-hors-enonce{margin:28px 0 0}
.td-corrige-section{margin:0 0 8px}
.td-centre .td-tableau table{margin:0 auto}
.td-tableau{overflow-x:auto;margin:12px 0}
.td-tableau table{border-collapse:collapse;font-size:15px}
.td-tableau td,.td-tableau th{border:1px solid #9d9da3;padding:6px 12px;background:var(--paper);font-weight:400;color:var(--ink)}
.td-tableau th{background:var(--soft)}
.td-tableau .al-l{text-align:left}.td-tableau .al-c{text-align:center}.td-tableau .al-r{text-align:right}
.td-fantome{visibility:hidden}
/* Minipage : contenu aligné à gauche comme sur le papier, même dans un environnement center ; une boîte (\fbox,
   tcolorbox) placée dans un center est centrée et prend la largeur de son contenu (« Programme de calcul »). */
.td-minipage{display:inline-block;vertical-align:top;width:calc(var(--w,100%) - 14px);max-width:100%;margin-right:14px;text-align:left}
.td-minipage.td-centre{text-align:center}
.td-centre>.td-boite{display:inline-block;vertical-align:top;max-width:100%;margin:12px 6px;text-align:left}
.td-minipage:last-child{margin-right:0}
@media(max-width:640px){.td-minipage{display:block;width:auto;margin-right:0}}
.reading code{font:.92em ui-monospace,SFMono-Regular,Menlo,monospace;background:var(--soft);padding:1px 5px;border-radius:4px}

/* Corrigé sous chaque exercice, fermé par défaut ; libellé « Voir » / « Masquer » */
details.td-corrige{margin:18px 0 0;border-block:1px solid var(--line);padding:10px 0}
details.td-corrige>summary{font-size:14px;font-weight:600;color:var(--accent);cursor:pointer}
details.td-corrige>summary .td-fermer,details.td-corrige[open]>summary .td-ouvrir{display:none}
details.td-corrige[open]>summary .td-fermer{display:inline}
.td-corrige-corps{padding-top:12px}
.td-cadre details.td-corrige{border-bottom:0;margin-bottom:-4px}

/* Corrigé guidé (dist/td.js) : la démarche est visible, chaque question attend derrière un bloc
   « Question b) » avec, s'il y a lieu, « Vérifie ta réponse », puis « Voir la correction ». */
.td-outils{display:flex;justify-content:flex-end;margin:0 0 6px}
.td-outils .button{font-size:12.5px;min-height:36px;padding:6px 12px;border-color:var(--line);background:var(--soft);color:var(--ink)}
.td-pas{display:flex;flex-wrap:wrap;align-items:center;gap:10px 18px;margin:12px 0;padding:12px 16px;border:1px dashed #b9c6ce;border-radius:10px;background:#fbfcfd}
.td-pas-titre{flex:1 1 100%;margin:0;font-weight:600;font-size:15px;color:var(--heading)}
.td-verif{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;flex:1 1 auto}
.td-champ{display:inline-flex;align-items:center;gap:7px;font-size:15px}
.td-lhs .katex{font-size:1.05em}
.td-champ .number-field{width:96px;padding:8px 10px;font-variant-numeric:tabular-nums}
.td-champ .number-field[aria-invalid=true]{border-color:#c0392b;background:#fff5f3}
.td-unite{color:var(--muted)}
.td-verif .button,.td-choix .button{min-height:38px;padding:7px 13px}
.td-verif .feedback,.td-choix .feedback{flex:1 1 100%;margin:2px 0 0;padding:9px 12px;font-size:14px}
.td-choix{display:flex;flex-wrap:wrap;align-items:center;gap:8px;flex:1 1 auto}
.td-choix .button[aria-pressed=true]{border-color:var(--blue);background:#eef5f8;color:#225773}
.td-choix .button.incorrect[aria-pressed=true]{border-color:#c0392b;background:#fff5f3;color:#7f1d1d}
.td-pas .feedback.incorrect{border-left-color:#c0392b;background:#fff5f3;color:#7f1d1d}
.td-pas .feedback.correct{border-left-color:var(--green);background:#eef7f2;color:#1f5f4a}
.td-pas .td-voir{margin-left:auto;min-height:38px;padding:7px 13px}
.td-copie-deux>.td-pas{margin:0}
.reading .td-liste>li.td-pas{display:flex;margin:8px 0}

/* Exercices marqués « fait » (mémoire du navigateur) */
.td-fait{margin-left:4px;font:600 12.5px/1 var(--sans);min-height:36px;padding:8px 12px;border:1px solid var(--line);border-radius:999px;background:var(--paper);color:var(--muted);cursor:pointer}
.td-fait:hover{border-color:var(--green);color:var(--green)}
.td-fait[aria-pressed=true]{background:var(--green);border-color:var(--green);color:#fff}
.td-fait[aria-pressed=true]::before{content:'✓ '}
.toc-side a.fait::after,.td-exos a.fait::after{content:' ✓';color:var(--green)}
.td-compteur{font-size:13.5px;color:var(--green);margin:6px 0 0}
.td-section h2+.td-compteur,.td-section h2+.td-exos+.td-compteur{margin:-14px 0 22px}
.td-compteur:empty{display:none}
.td-effacer{margin-top:8px;font-size:12.5px;min-height:34px;padding:6px 12px}

/* Figures agrandies au clic ; sur un téléphone (moins de 640 px), en plein écran au double de leur taille, à faire glisser */
.td-figure{position:relative}
.td-figure img{cursor:zoom-in}
.td-figure::after{content:'⤢';position:absolute;right:4px;top:-2px;font-size:15px;color:var(--muted);opacity:.75;pointer-events:none}
.td-figure img:focus-visible{outline:3px solid var(--blue);outline-offset:4px}
.td-zoom{position:fixed;inset:0;z-index:50;background:rgba(22,48,64,.72);display:flex;align-items:center;justify-content:center;cursor:zoom-out;padding:24px}
.td-zoom img{max-width:92vw;max-height:88vh;height:auto;background:#fff;border-radius:10px;padding:18px;box-shadow:0 12px 40px rgba(0,0,0,.35)}
.td-zoom.td-zoom-plein{padding:0;flex-direction:column;align-items:stretch;justify-content:flex-start;cursor:auto;background:rgba(22,48,64,.92)}
.td-zoom-tete{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 12px;background:var(--paper)}
.td-zoom-tete p{margin:0;font-size:14px;line-height:1.35;color:var(--muted)}
.td-zoom-cadre{flex:1 1 auto;min-height:0;overflow:auto;display:flex;padding:10px;overscroll-behavior:contain}
.td-zoom-plein .td-zoom-cadre img{max-width:none;max-height:none;margin:auto;flex:none;padding:10px;box-shadow:none}

/* Modèle de rédaction consulté sur place (dialogue), sans quitter l'exercice */
.td-dialog{border:0;border-radius:12px;padding:0;width:min(800px,94vw);max-height:90vh;box-shadow:0 20px 60px rgba(0,0,0,.35);color:var(--ink);background:var(--paper)}
.td-dialog::backdrop{background:rgba(22,48,64,.55)}
.td-dialog-tete{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 20px;border-bottom:1px solid var(--line)}
.td-dialog-tete p{margin:0;font-size:12px;font-weight:650;letter-spacing:.12em;text-transform:uppercase;color:var(--blue)}
.td-dialog-corps{padding:4px 24px 20px;overflow:auto;max-height:calc(90vh - 130px)}
.td-dialog-corps .writing-model{margin:0;border-top:0;padding-top:8px}
.td-dialog-pied{padding:12px 20px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:12px;flex-wrap:wrap}

/* Codes de modèles dans les corrigés (« Modèle associé : R1 ») : liens vers le cours */
.td-methode a.td-modele{color:var(--accent);text-decoration-color:currentColor}
/* Renvois du cours vers le TD */
.reading .td-ref a{color:inherit}
.reading .vers-td{font-size:14.5px;color:var(--muted);border-left:2px solid var(--line);padding-left:14px;margin-top:28px}

@media(max-width:767px){
  .reading .td-titre{font-size:16px}
  .td-cadre{padding:10px 14px}
  .td-copie{padding:10px 12px 10px 34px}.td-copie::before{left:9px}.td-copie::after{left:26px}
  .td-pas{padding:10px 12px;gap:8px 12px}.td-champ .number-field{width:84px;font-size:16px}.td-pas .td-voir{margin-left:0}
  .td-fait{min-height:40px}.td-sections a,.td-exos a{min-height:36px;display:inline-flex;align-items:center}
  .td-zoom{padding:10px}.td-zoom img{padding:10px}
  .td-colonnes .td-liste{columns:1}
  .td-tableau table{font-size:13px}
  .td-tableau td,.td-tableau th{padding:4px 6px}
  .td-formule .katex{font-size:16px}.td-corrige .td-formule .katex{font-size:13.8px}
}
@media print{details.td-corrige>.td-corrige-corps{display:block}.td-formule.td-defile,.td-tableau.td-defile{-webkit-mask-image:none;mask-image:none}}

/* Une section du TD à la fois (parcours.js, attribut data-td de <html>) ; sans JavaScript et à
   l'impression, tout le TD se lit d'un seul tenant. Sections td-1 à td-30 (le moteur refuse un TD de plus de
   30 sections : MAX_SECTIONS_TD de moteur/construire.py, à changer avec cette règle). */
html.en-parties .td-section{display:none}
html.en-parties[data-td="td-intro"] #td-intro,html.en-parties[data-td="td-1"] #td-1,
html.en-parties[data-td="td-2"] #td-2,html.en-parties[data-td="td-3"] #td-3,html.en-parties[data-td="td-4"] #td-4,
html.en-parties[data-td="td-5"] #td-5,html.en-parties[data-td="td-6"] #td-6,html.en-parties[data-td="td-7"] #td-7,
html.en-parties[data-td="td-8"] #td-8,html.en-parties[data-td="td-9"] #td-9,html.en-parties[data-td="td-10"] #td-10,
html.en-parties[data-td="td-11"] #td-11,html.en-parties[data-td="td-12"] #td-12,
html.en-parties[data-td="td-13"] #td-13,html.en-parties[data-td="td-14"] #td-14,
html.en-parties[data-td="td-15"] #td-15,html.en-parties[data-td="td-16"] #td-16,
html.en-parties[data-td="td-17"] #td-17,html.en-parties[data-td="td-18"] #td-18,
html.en-parties[data-td="td-19"] #td-19,html.en-parties[data-td="td-20"] #td-20,
html.en-parties[data-td="td-21"] #td-21,html.en-parties[data-td="td-22"] #td-22,
html.en-parties[data-td="td-23"] #td-23,html.en-parties[data-td="td-24"] #td-24,
html.en-parties[data-td="td-25"] #td-25,html.en-parties[data-td="td-26"] #td-26,
html.en-parties[data-td="td-27"] #td-27,html.en-parties[data-td="td-28"] #td-28,
html.en-parties[data-td="td-29"] #td-29,html.en-parties[data-td="td-30"] #td-30{display:block}
@media print{html.en-parties .td-section{display:block}}
.td-nav{margin-top:72px}

/* Plan de gauche (grand écran) : la section affichée déplie ses exercices, avec l'icône du parcours. */
@media(min-width:1000px){
  .toc-side ol ol ol{margin:2px 0 6px 10px;padding-left:0;border-left:0}
  .toc-side .td-exo>a{display:flex;align-items:center;gap:6px;padding:2px 0 2px 10px}
  .toc-side .td-exo img{width:12px;height:12px;flex:none;opacity:.8}
  html.js .toc-side .td-plan-section:not(.td-ouverte)>ol{display:none}
  .toc-side .td-plan-section.td-ouverte>a{color:var(--accent)}
}

/* Petits écrans (sans plan dans la marge) : les sections en tête de la page TD, puis les exercices de la
   section affichée, avec l'icône de leur parcours. */
.td-sections{display:flex;flex-wrap:wrap;gap:6px;margin:20px 0 0}
.td-sections a{font-size:13px;line-height:1.3;padding:6px 12px;border:1px solid var(--line);border-radius:999px;text-decoration:none;color:var(--muted);background:var(--paper)}
.td-sections a.active{color:var(--accent);border-color:#efb58c;background:#fff4ec}
.td-exos{display:flex;flex-wrap:wrap;gap:6px;margin:-6px 0 28px}
.td-exos a{display:inline-flex;align-items:center;gap:5px;font-size:13px;line-height:1.3;padding:6px 11px 6px 9px;border:1px solid var(--line);border-radius:999px;text-decoration:none;color:var(--heading);font-variant-numeric:tabular-nums;background:var(--paper)}
.td-exos a:hover,.td-sections a:hover{color:var(--accent);border-color:#efb58c}
.td-exos img{width:13px;height:13px}
@media(min-width:1000px){.td-sections,.td-exos{display:none}}
/* Premier exercice d'une section : le filet du titre de section suffit. */
.td-section h2+.td-exos+.td-exercice,.td-section h2+.td-exercice{border-top:0;margin-top:0;padding-top:0}

/* Marques de vérification et filtre des exercices */
.td-marque{min-width:1.1em;font-weight:650}.td-marque.ok{color:var(--green)}.td-marque.faux{color:#c0392b}
.td-filtres{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:-6px 0 22px;font-size:13px}
.td-filtres-lab{color:var(--muted);margin-right:4px}
.td-filtre{font:500 12.5px/1.2 var(--sans);padding:7px 11px;min-height:32px;border:1px solid var(--line);border-radius:999px;background:var(--paper);color:var(--muted);cursor:pointer}
.td-filtre:hover{border-color:var(--blue);color:#225773}
.td-filtre[aria-pressed=true]{border-color:var(--blue);background:#eef5f8;color:#225773}
.td-section h2+.td-compteur:empty+.td-filtres{margin-top:-6px}

