
@font-face{font-family:'Poppins';font-weight:400;font-style:normal;font-display:swap;src:url('/physics/assets/fonts/poppins-400.woff') format('woff')}
@font-face{font-family:'Poppins';font-weight:500;font-style:normal;font-display:swap;src:url('/physics/assets/fonts/poppins-500.woff') format('woff')}
@font-face{font-family:'Poppins';font-weight:700;font-style:normal;font-display:swap;src:url('/physics/assets/fonts/poppins-700.woff') format('woff')}
@font-face{font-family:'InkGlyphs';font-weight:400;font-style:normal;font-display:swap;src:url('/physics/assets/fonts/inkglyphs-400.woff') format('woff');unicode-range:U+0370-03FF,U+221D,U+2264-2265,U+00B2-00B3,U+00B9,U+2070-2079,U+207B,U+2080-2089,U+0127,U+2096,U+2192,U+207A,U+2153-2154,U+2713,U+2090}
@font-face{font-family:'InkGlyphs';font-weight:700;font-style:normal;font-display:swap;src:url('/physics/assets/fonts/inkglyphs-700.woff') format('woff');unicode-range:U+0370-03FF,U+221D,U+2264-2265,U+00B2-00B3,U+00B9,U+2070-2079,U+207B,U+2080-2089,U+0127,U+2096,U+2192,U+207A,U+2153-2154,U+2713,U+2090}
:root{color-scheme:dark;--bg:#0D1B2A;--ink:#F5F5F5;--cyan:#38B6FF;--amber:#FFB703;--coral:#EF476F;--grey:#6E7D8C;--greytx:#84919F;
--card:rgba(255,255,255,.035);--edge:rgba(245,245,245,.13);--hair:rgba(245,245,245,.09);
--navy:#0D1B2A;--wtext:42rem;--wpanel:47rem;--wfig:58rem}
*{box-sizing:border-box;margin:0}
html{scroll-behavior:smooth}
body{background:radial-gradient(1100px 520px at 50% -180px,rgba(56,182,255,.055),transparent 62%) var(--bg);
color:var(--ink);font-family:'Poppins','InkGlyphs',sans-serif;font-weight:400;line-height:1.75;font-size:1.05rem;
-webkit-font-smoothing:antialiased;display:flex;flex-direction:column;min-height:100vh}
main{flex:1 0 auto}
footer.site{flex-shrink:0}
.wrap{max-width:64rem;margin:0 auto;padding:0 1.2rem}
a{color:var(--cyan);text-decoration:none}
a:hover{text-decoration:underline;text-underline-offset:3px}
main p a,main li a,main dd a{text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}
:focus-visible{outline:2px solid var(--cyan);outline-offset:3px;border-radius:4px}
.skip{position:absolute;left:-999px;top:0;background:var(--bg);padding:.5rem 1rem;z-index:9}
.skip:focus{left:.5rem}
header.site{border-bottom:1px solid var(--hair);padding:1rem 0;margin-bottom:2.6rem}
header.site .wrap{display:flex;align-items:baseline;gap:1.6rem;flex-wrap:wrap}
.wm{display:flex;align-items:center}
.wm:hover{text-decoration:none}
.wmsvg{height:1.6rem;width:auto;display:block}
.wmsvg path{fill:var(--ink)}
.wmsvg circle{fill:var(--cyan)}
nav.top{margin-left:auto;display:flex;gap:1.4rem;font-weight:500;font-size:.95rem}
nav.top a{color:var(--ink);opacity:.82}
nav.top a:hover{color:var(--cyan);opacity:1;text-decoration:none}
nav.top a[aria-current="page"]{color:var(--cyan);opacity:1}
main{display:block}
h1{font-weight:700;font-size:clamp(2.05rem,5.4vw,2.9rem);line-height:1.14;letter-spacing:-.012em;text-wrap:balance;margin:.1rem 0 .55rem}
.flourish{margin:.15rem 0 1.15rem}
.flourish svg{width:200px;height:auto;display:block}
h2{font-weight:700;font-size:1.42rem;line-height:1.3;margin:2.9rem 0 .9rem;display:flex;align-items:center;gap:.6rem;text-wrap:balance}
h2::before{content:"";width:.48rem;height:.48rem;border-radius:50%;background:var(--cyan);flex:none}
p{margin:0 0 1.15rem}
strong{font-weight:700}
.lede{color:var(--greytx);font-weight:500;font-size:1.17rem;line-height:1.6;margin-bottom:1.3rem;text-wrap:pretty}
.crumbs{font-size:.85rem;font-weight:500;color:var(--greytx);margin:0 0 1.15rem;letter-spacing:.01em}
.crumbs a{color:var(--greytx)}
.chips{display:flex;gap:.5rem;flex-wrap:wrap;margin:0 0 1.5rem}
.chip{border:1px solid var(--edge);border-radius:99px;padding:.16rem .78rem;font-size:.78rem;font-weight:500;color:var(--greytx);letter-spacing:.02em}
.chip.spec{border-color:rgba(56,182,255,.45);color:var(--cyan)}a.chip.spec{text-decoration:none;display:inline-block;line-height:1.55;min-height:1.9rem;padding-top:.2rem;padding-bottom:.2rem}a.chip.spec:hover,a.chip.spec:focus-visible{border-color:var(--cyan);text-decoration:underline}
.builds{font-size:.9rem;font-weight:500;color:var(--greytx);margin:.35rem 0 1.4rem}
.builds+.builds{margin-top:-.9rem}
.builds a{color:var(--greytx);text-decoration:underline;text-underline-offset:3px}
.goals{border-top:1px solid var(--hair);border-bottom:1px solid var(--hair);padding:1rem 0 .5rem;margin:0 0 1.9rem}
.goals .gl{font-size:.73rem;font-weight:700;letter-spacing:.16em;color:var(--greytx);margin-bottom:.55rem}
.goals ul{list-style:none;margin:0;padding:0}
.goals li{padding:.22rem 0 .22rem 1.25rem;position:relative;color:var(--ink)}
.goals li::before{content:"";position:absolute;left:.1rem;top:.86em;width:.42rem;height:.42rem;border-radius:50%;background:var(--cyan);opacity:.8}
article.lesson>*,article.lesson section.lsec>*{max-width:var(--wtext);margin-left:auto;margin-right:auto;padding-left:1.2rem;padding-right:1.2rem}
article.lesson>section.lsec{max-width:none;padding-left:0;padding-right:0}
article.lesson>.panel,article.lesson section.lsec>.panel{max-width:var(--wpanel)}
article.lesson>.eqs,article.lesson section.lsec>.eqs{max-width:var(--wpanel)}
article.lesson>.rulecard,article.lesson section.lsec>.rulecard{max-width:var(--wpanel)}
article.lesson>.tblwrap,article.lesson section.lsec>.tblwrap{max-width:var(--wpanel)}
article.lesson>.pn,article.lesson section.lsec>.pn{max-width:var(--wpanel)}
article.lesson>figure.fig,article.lesson section.lsec>figure.fig{max-width:var(--wfig)}
.panel{border:1px solid var(--edge);background:var(--card);border-radius:20px;padding:1.25rem 1.45rem 1.15rem;margin:2rem auto}
.panel .pl{display:flex;align-items:center;gap:.6rem;font-size:.73rem;font-weight:700;letter-spacing:.16em;margin-bottom:.6rem}
.pi{width:1.05rem;height:1.05rem;flex:none}
.p-lie{border-color:rgba(239,71,111,.4);background:rgba(239,71,111,.06)}
.p-lie .pl{color:var(--coral)}
.p-exam{border-color:rgba(255,183,3,.38);background:rgba(255,183,3,.05)}
.p-exam .pl{color:var(--amber)}
.p-check{border-color:rgba(56,182,255,.4);background:rgba(56,182,255,.055)}
.p-check .pl{color:var(--cyan)}
.p-check details+details{margin-top:.6rem}
.p-ex .pl{color:var(--ink)}
.p-ex .ext{font-weight:700;margin-bottom:.8rem}
.panel p:last-child{margin-bottom:0}
.p-exam ul{list-style:none;margin:.2rem 0 0;padding:0}
.p-exam li{margin:.7rem 0;padding-left:1.35rem;position:relative}
.p-exam li::before{content:"";position:absolute;left:.05rem;top:.62em;width:.5rem;height:.5rem;border-radius:50%;background:var(--amber)}
details summary{cursor:pointer;display:inline-flex;align-items:center;gap:.55rem;font-weight:500;color:var(--cyan);
border:1px solid rgba(56,182,255,.45);border-radius:11px;padding:.5rem 1.05rem;list-style:none;user-select:none;
transition:background .18s,border-color .18s}
details summary::-webkit-details-marker{display:none}
details summary::after{content:"";width:.5rem;height:.5rem;border-right:2px solid var(--cyan);border-bottom:2px solid var(--cyan);
transform:rotate(45deg) translateY(-1px);transition:transform .18s}
details[open] summary::after{transform:rotate(-135deg) translateY(-2px)}
details summary:hover{background:rgba(56,182,255,.08)}
details[open] summary{margin-bottom:.9rem}
details.hintbox summary{color:var(--greytx);border-color:var(--edge)}
details.hintbox summary::after{border-color:var(--greytx)}
details.hintbox summary:hover{background:rgba(245,245,245,.05)}
figure.fig{margin:2.3rem auto;position:relative}
figure.fig svg{width:100%;height:auto;display:block}
figure.fig img{width:100%;height:auto;display:block}
/* The unit-hub guide, below the lesson links: a reference block, not a
   second lede, so it is ruled off and set a little tighter. */
.hubguide{border-top:1px solid var(--hair);margin-top:2.4rem;padding-top:.6rem}
.hubguide h2{font-size:1.06rem;margin:1.5rem 0 .4rem}
.hubguide ul{margin:.3rem 0 0;padding-left:1.1rem}
.hubguide li{margin:0 0 .45rem;line-height:1.6}
.hubeq{margin:.4rem 0 0}
.hubeq dt{font-weight:700;margin:.7rem 0 .1rem}
/* A hub equation row is .ieq, which is white-space:nowrap, and often
   carries two equations with a \qquad between them. On a 390px phone
   five of the physics unit hubs pushed the whole page sideways --
   508px on mechanics. The row scrolls within itself now, the same
   treatment a dense figure gets, and fig.js gives it a focus stop and
   a name only while it is actually overflowing. */
.hubeq dt{overflow-x:auto;-webkit-overflow-scrolling:touch}
.hubeq dt:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}
.hubeq dd{margin:0 0 0 0;color:var(--greytx);line-height:1.5}
/* The expand control lives in the caption row below the artwork, never over
   it, and keeps a 44px hit target: 2.75rem at the 16px root. */
.figxbtn{flex:none;margin-left:auto;align-self:center;width:2.75rem;height:2.75rem;border-radius:9px;border:1px solid var(--edge);background:var(--bg);color:var(--greytx);cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;opacity:.85}
.figxbtn:hover{color:var(--cyan);border-color:var(--cyan);opacity:1}
.figxbtn svg{width:1.05rem;height:1.05rem}
/* A figure whose smallest label would project below 9 CSS px on a phone keeps
   a build-computed minimum artwork width (--figmin) and scrolls sideways
   instead of shrinking its labels past reading size. fig.js makes the
   viewport a named, keyboard-focusable region only while it actually
   overflows, so it is never a tab stop that goes nowhere. */
.figscroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
.figscroll svg{min-width:var(--figmin,0)}
.figscroll:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}
dialog.figdlg{background:var(--bg);border:1px solid var(--edge);border-radius:14px;padding:0;width:min(96vw,1150px);max-height:92vh;margin:auto;color:var(--ink)}
dialog.figdlg[open]{display:flex;flex-direction:column}
dialog.figdlg::backdrop{background:rgba(4,10,17,.82)}
.figdlgbar{display:flex;align-items:center;gap:1rem;justify-content:space-between;padding:.55rem .55rem .55rem .95rem;border-bottom:1px solid var(--hair)}
.figdlgbar p{margin:0;font-size:.85rem;color:var(--greytx);line-height:1.35}
.figdlgclose{flex:none;border:1px solid var(--edge);background:none;color:var(--ink);font:inherit;font-size:.85rem;border-radius:8px;padding:.35rem .8rem;cursor:pointer}
.figdlgclose:hover{border-color:var(--cyan);color:var(--cyan)}
.figdlgpan{overflow:auto;flex:1;min-height:0;padding:.9rem;-webkit-overflow-scrolling:touch}
.figdlgpan svg{width:900px;max-width:none;display:block;margin:0 auto}
@media print{.figxbtn,dialog.figdlg{display:none}}
figure.fig figcaption{display:flex;gap:.7rem;align-items:baseline;border-top:1px solid var(--hair);
margin-top:.7rem;padding-top:.55rem;color:var(--greytx);font-size:.9rem;line-height:1.55}
figure.fig .fign{color:var(--cyan);font-weight:700;font-size:.74rem;letter-spacing:.14em;flex:none}
.figsvg .sk-ink{stroke:var(--ink)}.figsvg .sk-cyan{stroke:var(--cyan)}.figsvg .sk-grey{stroke:var(--grey)}
.figsvg .sk-amber{stroke:var(--amber)}.figsvg .sk-coral{stroke:var(--coral)}.figsvg .sk-bg{stroke:var(--bg)}
.figsvg .fl-ink{fill:var(--ink)}.figsvg .fl-cyan{fill:var(--cyan)}.figsvg .fl-grey{fill:var(--grey)}
.figsvg .fl-amber{fill:var(--amber)}.figsvg .fl-coral{fill:var(--coral)}.figsvg .fl-bg{fill:var(--bg)}
rect.fl-bg[stroke-width]{stroke:var(--ink)}
.figsvg text{font-family:'InkGlyphs','Poppins',sans-serif}
.qbar{text-decoration:overline}
/* The combining overline that travels with the clipboard: kept in the text
   flow so copy picks it up, collapsed so the CSS bar above is the only one
   drawn. display:none would remove it from the clipboard as well. */
.qbarc{font-size:0;speak:never}
@keyframes an-swing{from{transform:translate(var(--ox),var(--oy)) rotate(var(--a0)) translate(var(--nox),var(--noy))}to{transform:translate(var(--ox),var(--oy)) rotate(var(--a1)) translate(var(--nox),var(--noy))}}
.an-swing{animation:an-swing 1.9s ease-in-out infinite alternate}
@keyframes an-flip{from{transform:translate(var(--ox),var(--oy)) scaleY(1) translate(var(--nox),var(--noy))}to{transform:translate(var(--ox),var(--oy)) scaleY(-1) translate(var(--nox),var(--noy))}}
.an-flip{animation:an-flip 1.4s ease-in-out infinite alternate}
@keyframes an-jit{0%{transform:translate(0,0)}25%{transform:translate(3.5px,-2.6px)}50%{transform:translate(-2.9px,1.9px)}75%{transform:translate(1.9px,3.2px)}100%{transform:translate(0,0)}}
.an-jit1{animation:an-jit 1.1s linear infinite}
.an-jit2{animation:an-jit 1.6s linear infinite reverse}
.an-jit3{animation:an-jit 2.3s linear infinite}
@keyframes an-walk{0%{transform:translate(0,0)}13%{transform:translate(8px,-5px)}26%{transform:translate(3px,7px)}40%{transform:translate(-7px,11px)}55%{transform:translate(-12px,2px)}68%{transform:translate(-4px,-9px)}82%{transform:translate(6px,-12px)}100%{transform:translate(0,0)}}
.an-walk{animation:an-walk 8.5s linear infinite}
@keyframes an-strike{0%{transform:translate(0,0)}40%{transform:translate(var(--sx),var(--sy))}52%{transform:translate(calc(var(--sx)*0.86),calc(var(--sy)*0.86))}64%{transform:translate(var(--sx),var(--sy))}76%{transform:translate(calc(var(--sx)*0.3),calc(var(--sy)*0.3))}100%{transform:translate(0,0)}}
.an-strike{animation:an-strike 2.6s linear infinite}
@media (prefers-reduced-motion: reduce){.figsvg g[class^="an-"]{animation:none !important;transform:none !important}}
.figsvg .tx-ink{fill:var(--ink)}.figsvg .tx-cyan{fill:var(--cyan)}.figsvg .tx-grey{fill:var(--greytx)}
.figsvg .tx-amber{fill:var(--amber)}.figsvg .tx-coral{fill:var(--coral)}.figsvg .sk-greytx{stroke:var(--greytx)}.figsvg .fl-greytx{fill:var(--greytx)}
@media (prefers-reduced-motion: reduce){.animfig *{animation:none !important}}
@media print{.animfig *{animation:none !important}}
/* Figures animated through the global an-* classes must print still too. */
@media print{.figsvg g[class^="an-"]{animation:none !important;transform:none !important}}
.eqs{text-align:center;padding:.4rem .2rem .2rem;margin:1.9rem auto;overflow-x:auto;overflow-y:hidden}
.eqs .eq{display:block;font-size:clamp(1.15rem,4.6vw,1.5rem);font-weight:500;letter-spacing:.01em;line-height:1.35;white-space:nowrap}
.eqs .dstag{display:inline-block;margin-top:.7rem;font-size:.68rem;font-weight:700;letter-spacing:.15em;
border-radius:99px;padding:.22rem .8rem}
.eqs .ds-on{color:var(--amber);border:1px solid rgba(255,183,3,.45)}
.eqs .ds-off{color:var(--greytx);border:1px solid var(--edge)}
.ieq{font-weight:500;white-space:nowrap}
/* The two semantic twins of an equation: the MathML a screen reader reads and
   the linear text a copy takes. Hidden by clipping and taken out of the flow,
   not by display:none or visibility:hidden, either of which would drop the
   MathML out of the accessibility tree along with the pixels.

   Out of the flow is the load-bearing part. Hiding an inline twin in place
   with font-size:0 reads the same and copies the same, but Chromium still
   gives a <math> containing an <mfrac> a two-pixel minimum width, and two
   pixels beside an inline equation move the rest of the line. Absolute
   positioning is the only version that is provably zero. */
.eqml,.eqtx{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;
overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}
/* Only the visual layer that has a semantic twin opts out of selection, so a
   copy takes the unambiguous .eqtx once instead of the picture and the MathML
   twice. Bare affixes ("R{{_{2}}}") carry no aria-hidden and stay selectable. */
.eqml,.eq[aria-hidden],.ieq[aria-hidden]{-webkit-user-select:none;user-select:none}
.frac{display:inline-flex;flex-direction:column;align-items:center;vertical-align:middle;line-height:1.25;margin:0 .1em}
.frac .n{border-bottom:1.6px solid currentColor;padding:0 .28em}
.frac .d{padding:0 .28em}
.rt{margin-right:.05em}
.rad{border-top:1.6px solid currentColor;padding:0 .15em}
.rt.big{font-size:2.05em;font-weight:400;line-height:1;vertical-align:middle;margin-right:.02em}
.rad.tall{display:inline-flex;align-items:center;vertical-align:middle;border-top:1.6px solid currentColor;padding:.12em .22em .12em .12em}
sup,sub{line-height:0}
.tblwrap{overflow-x:auto;margin:1.6rem auto}
.dtable{width:100%;border-collapse:collapse;font-size:.95rem}
.dtable th{font-size:.73rem;letter-spacing:.14em;text-transform:uppercase;color:var(--greytx);text-align:left;padding:.5rem .8rem;border-bottom:2px solid rgba(110,125,140,.5);font-weight:700}
.dtable td{padding:.55rem .8rem;border-bottom:1px solid rgba(110,125,140,.28)}
.dtable td:first-child{font-weight:700}
.rulecard{border:2px solid rgba(56,182,255,.55);border-radius:22px;text-align:center;padding:1.6rem 1.3rem;margin:2.7rem auto 0}
.rulecard p{margin:0;font-weight:700;font-size:clamp(1.1rem,3.6vw,1.32rem);line-height:1.5}
.rulecard .r2{color:var(--cyan)}
.videotop{margin:.9rem 0 0;font-size:.95rem}
.videotop .pi{width:.85rem;height:.85rem;vertical-align:-.1em;margin-right:.4rem}
.videotop a{color:var(--cyan);text-decoration:underline;text-underline-offset:3px}
.next{display:inline-flex;align-items:center;gap:.6rem;border:1px solid var(--edge);border-radius:14px;
padding:.7rem 1.2rem;color:var(--ink);font-weight:500;transition:border-color .18s,transform .18s cubic-bezier(.2,.9,.3,1.25)}
.next:hover{border-color:var(--cyan);text-decoration:none;transform:translateY(-1px)}
.next svg{width:1rem;height:1rem;flex:none}
.pn{display:flex;gap:.9rem;justify-content:space-between;flex-wrap:wrap;margin:2.4rem auto 0}
.pn .next{max-width:100%}
.pn .rev svg{transform:scaleX(-1)}
.pn .pnl{font-size:.68rem;font-weight:700;letter-spacing:.15em;color:var(--greytx);display:block}
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(13.5rem,1fr));gap:.95rem;margin:1.5rem 0}
.card{border:1px solid var(--edge);background:var(--card);border-radius:20px;padding:1.05rem 1.15rem;color:var(--ink);display:block;transition:transform .18s cubic-bezier(.2,.9,.3,1.25),border-color .18s}
a.card:hover{transform:translateY(-2px);border-color:rgba(56,182,255,.5);text-decoration:none}
.card h3,.card h2{font-size:1.02rem;font-weight:700;margin:0 0 .25rem}
/* The first card or section on an index page is an H2, not an H3: a page that
   goes H1 -> H3 leaves a hole in the outline a screen reader has to guess at.
   The level is semantics; the size is this rule. Anywhere a card-level H2
   appears it must lose the section dot and the flex row an H2 normally gets. */
.card h2,.rpcard h2,.cklesson h2,.ki h2,.eqgrp h2{display:block;line-height:1.3;gap:0;letter-spacing:normal}
.card h2::before,.rpcard h2::before,.cklesson h2::before,.ki h2::before,.eqgrp h2::before{content:none;display:none}
.card .meta{color:var(--greytx);font-size:.84rem;font-weight:500}
ul.topics{list-style:none;padding:0;margin:.8rem 0}
ul.topics li{padding:.62rem .2rem;border-bottom:1px solid var(--hair);display:flex;align-items:baseline;gap:.7rem;flex-wrap:wrap}
ul.topics .tag{font-size:.7rem;font-weight:700;letter-spacing:.12em;color:var(--greytx);border:1px solid var(--edge);border-radius:6px;padding:.06rem .48rem;flex:none}
ul.topics .writing{color:var(--greytx)}
.search{width:100%;background:var(--card);border:1px solid var(--edge);border-radius:12px;color:var(--ink);font:inherit;padding:.62rem .95rem;margin:.4rem 0 .8rem}
.search::placeholder{color:var(--greytx)}
.unitline{color:var(--greytx);font-weight:700;font-size:.78rem;letter-spacing:.14em;margin:1.5rem 0 .1rem}
h2.unitline{display:block;line-height:1.5}
h2.unitline::before{display:none}
.jumps{color:var(--greytx);font-size:.88rem;line-height:2;margin:.2rem 0 1.2rem}
.jumps a{color:var(--greytx);text-decoration:underline;text-underline-offset:3px;white-space:nowrap}
.jumps a:hover{color:var(--cyan)}
ul.topics .tag a{text-decoration:none;display:inline-block;padding:.3rem .25rem;min-height:24px;box-sizing:border-box}
ul.topics .tag a:hover{color:var(--cyan);text-decoration:underline;text-underline-offset:3px}
@media (max-width:560px){
.jumps{line-height:2.35}
.jumps a{display:inline-block;border:1px solid var(--edge);border-radius:99px;padding:0 .68rem;text-decoration:none;margin:0 .06rem;line-height:1.9}
ul.topics li.flt{display:block}
ul.topics li.flt .tag{display:table;margin-top:.45rem;font-size:.74rem}
ul.topics li.flt .tag a{padding:.4rem .3rem}
ul.topics li.flt .meta{display:block;color:var(--greytx);font-size:.84rem;margin-top:.3rem}
}
.progress{color:var(--greytx);font-size:.95rem;font-weight:500;margin:-.5rem 0 1.2rem}
.hero{text-align:center;padding:2.4rem 0 1rem}
.hero .bigwm{margin:0 0 .1rem;display:flex;justify-content:center}
.hero .bigwm .wmsvg{height:clamp(2.85rem,9.4vw,4.35rem)}
.hero .tag{color:var(--greytx);font-weight:500;font-size:1.14rem;margin:.45rem 0 1.2rem}
.hero .strip{margin:1.5rem auto 1.9rem;max-width:40rem;opacity:.95}
.hero .links{display:flex;gap:.85rem;justify-content:center;flex-wrap:wrap}
.hero .links2{margin-top:.75rem}
.hero .links2 .btn{font-size:.9rem;padding:.45rem .95rem;color:var(--greytx)}
.hero .links2 .btn:hover{color:var(--ink)}
/* background is not decoration here. .btn was written for anchors, which
   are transparent by default, and it sets a colour without one — so the
   four <button class=btn> controls on the account page took the user
   agent's own button face, which is near-white, and wore near-white
   text on it. "Save settings", "Sync now", "Sign out on this device"
   and "Delete this account" were all legible only by their shape.
   Transparent keeps every anchor exactly as it was and removes the
   default face from every button. */
.btn{background:transparent;border:1px solid var(--edge);border-radius:12px;padding:.58rem 1.15rem;font-weight:500;color:var(--ink);transition:border-color .18s,transform .18s cubic-bezier(.2,.9,.3,1.25)}
.btn:hover{border-color:var(--cyan);text-decoration:none;transform:translateY(-1px)}
.btn.primary{border-color:var(--cyan);color:var(--cyan)}
.searchbox input{width:100%;max-width:34rem;padding:.62rem .9rem;border-radius:12px;border:1px solid var(--edge);background:transparent;color:var(--ink);font:inherit}
.searchbox input:focus{border-color:var(--cyan)}
.searchbox input::placeholder{color:var(--greytx)}
.wbblock{margin:2.4rem 0 0;padding:1.4rem 1.5rem;border:1px solid var(--edge);border-radius:20px;background:var(--card)}
.wbblock .gl{font-size:.72rem;letter-spacing:.14em;color:var(--cyan);font-weight:600;margin:0 0 .5rem}
.wbblock>p{margin:0 0 1rem;color:var(--greytx)}
.wbblock .cards{grid-template-columns:repeat(auto-fit,minmax(210px,1fr))}
.card.wb h3{display:flex;align-items:center;gap:.4rem}
.card.wb h3 .pi{width:1rem;height:1rem;flex:none}
.note{color:var(--greytx);font-size:.88rem;margin:2.4rem auto 0}
footer.site{border-top:1px solid var(--hair);margin-top:3.4rem;padding:1.5rem 0 2.3rem;color:var(--greytx);font-size:.86rem}
footer.site a{color:var(--greytx);text-decoration:underline;text-underline-offset:3px}
footer.site .reg{font-size:.78rem;opacity:.8}
@media (prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto}}
@media (max-width:680px){header.site .wrap{flex-wrap:wrap;row-gap:.4rem}nav.top{width:100%;margin-left:0;flex-wrap:wrap;justify-content:space-between;gap:.4rem .9rem;font-size:.9rem}}
@media print{
:root{--bg:#ffffff;--ink:#15222e;--cyan:#0b6fae;--amber:#8a6100;--coral:#b3264e;--grey:#5a6570;--greytx:#5a6570;--card:#ffffff;--edge:#c9d1d8;--hair:#dfe5ea}
body{background:#fff;font-size:11pt;line-height:1.55}
header.site nav.top,.search,.searchbox,.videotop,.pn,footer.site .fnav,.hero .links{display:none}
a{color:inherit;text-decoration:none}
figure.fig,.panel,.eqs,.goals{break-inside:avoid;page-break-inside:avoid}
details{display:block}details summary{display:none}details>*{display:block}
.card{box-shadow:none}
.wbblock .card.wb{box-shadow:none}
}
.ckbar{display:flex;gap:.55rem;flex-wrap:wrap;margin:.2rem 0 1rem}.ckbar button{font:inherit;font-size:.82rem;padding:.4rem .8rem;border:1px solid var(--edge);border-radius:.45rem;background:var(--card);color:var(--ink);cursor:pointer}.ckbar button:hover{border-color:var(--cyan)}.ckbar button[aria-pressed=true]{border-color:var(--cyan);color:var(--cyan)}.cklegend{font-size:.8rem;color:var(--greytx);margin:.1rem 0 1.5rem}.cklegend span{white-space:nowrap;margin-right:1rem;line-height:2}.cklegend i{display:inline-flex;align-items:center;justify-content:center;font-style:normal;font-weight:700;font-size:.5rem;color:#0D1B2A;width:.72rem;height:.72rem;border-radius:50%;margin-right:.32rem;vertical-align:middle;box-sizing:border-box}.cklist{list-style:none;padding:0;margin:.2rem 0}li.ck{display:flex;gap:.65rem;align-items:flex-start;padding:.28rem 0}li.ck.hide{display:none}.ckdot{flex:0 0 auto;width:1.3rem;height:1.3rem;margin-top:.1rem;border-radius:50%;border:2px solid var(--grey);background:transparent;cursor:pointer;padding:0;position:relative;transition:background .12s,border-color .12s}.ckdot::before{content:'';position:absolute;inset:-12px}.ckdot::after{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:.76rem;font-weight:700;color:#0D1B2A;line-height:1}.ckdot:hover{border-color:var(--cyan)}li.ck[data-state="1"] .ckdot{background:var(--coral);border-color:var(--coral)}li.ck[data-state="1"] .ckdot::after{content:"!"}li.ck[data-state="2"] .ckdot{background:var(--amber);border-color:var(--amber)}li.ck[data-state="2"] .ckdot::after{content:"~"}li.ck[data-state="3"] .ckdot{background:#2ea043;border-color:#2ea043}li.ck[data-state="3"] .ckdot::after{content:"\2713"}.cktext{flex:1;line-height:1.45}.cktally{display:block;font-size:.8rem;color:var(--greytx);font-weight:400;letter-spacing:0;margin-top:.2rem}.cklesson{margin:0 0 1.15rem}.cklesson h3,.cklesson h2{margin:.1rem 0;font-size:1.02rem}.ckspec{font-size:.76rem;color:var(--greytx);font-weight:400;margin-left:.15rem}.ckstrip{margin-top:2.2rem;padding-top:1.3rem;border-top:1px solid var(--hair)}.ckstrip .cknote{font-size:.85rem;margin-top:.75rem}.nextsteps{margin-top:2.2rem;padding-top:1.3rem;border-top:1px solid var(--hair)}.nextsteps ul{margin:.55rem 0 0;padding-left:1.1rem}.nextsteps li{margin:0 0 .45rem;line-height:1.55}.qr dl{margin:0 0 .5rem}.qr dt{font-weight:700;margin:1.15rem 0 .15rem;color:var(--ink)}.qr dd{margin:0;line-height:1.5}.qr dd .eg{display:block;color:var(--greytx);font-size:.9rem;margin-top:.15rem}.ki{margin:0 0 1rem}.ki h3,.ki h2{margin:.1rem 0 .25rem;font-size:1.0rem}.ki ul{list-style:none;padding:0;margin:0}.ki li{padding:.1rem 0 .1rem .9rem;border-left:2px solid var(--edge);margin:.32rem 0;line-height:1.45}.ub{border-bottom:1px solid var(--edge)}.ub>summary{display:flex;align-items:baseline;gap:.6rem;cursor:pointer;padding:.85rem .2rem;list-style:none;min-height:44px;box-sizing:border-box}.ub>summary::-webkit-details-marker{display:none}.ub>summary::after{content:'';margin-left:auto;flex:none;width:.5rem;height:.5rem;border-right:2px solid var(--greytx);border-bottom:2px solid var(--greytx);transform:rotate(45deg);transition:transform .18s ease;align-self:center}.ub[open]>summary::after{transform:rotate(-135deg)}.ub>summary:hover .ubt,.ub>summary:focus-visible .ubt{color:var(--cyan)}.ubt{font-weight:600;color:var(--ink)}.ubm{color:var(--greytx);font-size:.86rem}.ubn{color:var(--greytx);font-size:.74rem;font-weight:700;letter-spacing:.1em;border:1px solid var(--edge);border-radius:6px;padding:.06rem .48rem;flex:none;white-space:nowrap}.ubb{padding:.1rem 0 1.1rem}.fltbar{position:sticky;top:0;z-index:5;background:var(--bg);padding:.7rem 0 .5rem;margin:0 0 .4rem}.fltcount{display:flex;gap:.6rem;justify-content:space-between;margin:.35rem .1rem 0;font-size:.78rem;color:var(--greytx)}.fcgo{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .9rem;margin:.7rem 0 .2rem}.fcstart{font-weight:700;font-size:1rem;padding:.62rem 1.5rem;border-radius:999px;background:var(--cyan);color:var(--navy);border:0;cursor:pointer;min-height:44px}.fcstart:disabled{background:none;color:var(--greytx);border:1px solid var(--edge);cursor:default}.fcstart:hover{filter:brightness(1.08)}.fclink2{background:none;border:0;color:var(--greytx);font-size:.9rem;cursor:pointer;padding:.5rem .1rem;text-decoration:underline;text-underline-offset:3px;min-height:44px}.fclink2:hover,.fclink2:focus-visible{color:var(--cyan)}.fcman{margin:.5rem 0 0}.fcman>summary{cursor:pointer;color:var(--greytx);font-size:.84rem;padding:.45rem .1rem;min-height:44px;display:flex;align-items:center}.fcman>summary:hover{color:var(--cyan)}.azjump{display:flex;flex-wrap:wrap;gap:.1rem .55rem;margin:.2rem .1rem 1.2rem;font-size:.84rem;font-weight:700}.azjump a{color:var(--greytx);text-decoration:none;padding:.15rem .1rem}.azjump a:hover,.azjump a:focus-visible{color:var(--cyan)}@media print{.fltbar{display:none}.ub>summary::after{display:none}.azjump{display:none}}.bdwrap{margin:0}.bdsel{border:0;margin:1.4rem 0 0;padding:0;min-width:0}.bdsel>legend{padding:0;margin:0 0 .6rem;font-weight:700;color:var(--ink)}.bdopts{display:flex;flex-wrap:wrap;gap:.5rem}.bdr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}.bdopts label{display:inline-flex;align-items:center;min-height:44px;box-sizing:border-box;padding:.4rem 1.15rem;border:1px solid var(--edge);border-radius:999px;cursor:pointer;color:var(--greytx);font-size:.94rem;font-weight:600}.bdopts label:hover{color:var(--cyan);border-color:rgba(56,182,255,.45)}.bdr:checked+label{background:var(--cyan);border-color:var(--cyan);color:var(--navy)}.bdr:focus-visible+label{outline:2px solid var(--cyan);outline-offset:3px}.bdprompt,.bdstat{margin:.7rem .1rem 0;font-size:.88rem;color:var(--greytx)}.bdstat:empty{display:none}.bdpanel{margin:2.4rem 0 0}.bdpanel h3{font-size:1.06rem;font-weight:700;margin:2rem 0 .55rem}.bdsrc{font-size:.86rem;color:var(--greytx);border-left:2px solid var(--edge);padding:.2rem 0 .2rem .9rem;margin:.2rem 0 1.3rem}.ppul{font-size:.72rem;font-weight:700;letter-spacing:.13em;color:var(--greytx);margin:1.2rem 0 0}.ubb .note{margin:1.6rem 0 1.15rem}ul.topics .tag.pt{border-color:rgba(255,183,3,.45);color:var(--amber);letter-spacing:.03em}.bdwrap:has(.bdr[value="aqa"]:checked) .bdpanel:not([data-board="aqa"]){display:none}.bdwrap[data-show="aqa"] .bdpanel:not([data-board="aqa"]){display:none}.bdwrap[data-show="aqa"] .bdprompt{display:none}.bdwrap:has(.bdr[value="edexcel"]:checked) .bdpanel:not([data-board="edexcel"]){display:none}.bdwrap[data-show="edexcel"] .bdpanel:not([data-board="edexcel"]){display:none}.bdwrap[data-show="edexcel"] .bdprompt{display:none}.bdwrap:has(.bdr[value="ocr"]:checked) .bdpanel:not([data-board="ocr"]){display:none}.bdwrap[data-show="ocr"] .bdpanel:not([data-board="ocr"]){display:none}.bdwrap[data-show="ocr"] .bdprompt{display:none}.bdwrap:has(.bdr[value="cie"]:checked) .bdpanel:not([data-board="cie"]){display:none}.bdwrap[data-show="cie"] .bdpanel:not([data-board="cie"]){display:none}.bdwrap[data-show="cie"] .bdprompt{display:none}.bdwrap:has(.bdr:checked:not(.bdr-all)) .bdprompt{display:none}@media print{.bdsel,.bdprompt,.bdstat{display:none}}.gdef{margin:0 0 .85rem}.gdef dt{font-weight:700;margin:.7rem 0 .1rem}.gdef dd{margin:0;line-height:1.5}.glink{color:var(--greytx);font-size:.88rem}.eqgrp{margin:0 0 1.35rem}.eqgrp h3,.eqgrp h2{margin:.1rem 0 .3rem;font-size:1.0rem}.eqgrp .eqs{margin:.3rem 0}.eqlead{border-left:2px solid var(--amber);padding:.1rem 0 .1rem .85rem;margin:.2rem 0 1.6rem}.eqcount{font-size:.8rem;color:var(--greytx);font-weight:400;letter-spacing:0;margin-top:.2rem;display:block}.rpcard{position:relative;border:1px solid var(--edge);border-radius:20px;padding:.85rem 1rem;margin:.7rem 0;background:var(--card);transition:transform .18s cubic-bezier(.2,.9,.3,1.25),border-color .18s}.rpcard:hover{transform:translateY(-2px);border-color:rgba(56,182,255,.5)}.rpcard h3,.rpcard h2{margin:.1rem 0 .3rem;font-size:1.0rem}.rpcard h3 a,.rpcard h2 a{color:var(--ink)}.rpcard h3 a:hover,.rpcard h2 a:hover{text-decoration:none}.rpcard h3 a::after,.rpcard h2 a::after{content:'';position:absolute;inset:0}.rpcard .rplinks{position:relative;z-index:1;width:fit-content}.rpn{display:inline-block;font-size:.72rem;font-weight:700;letter-spacing:.1em;color:var(--greytx);margin-bottom:.25rem}.rpcard p{margin:.25rem 0}.rplinks{font-size:.85rem;color:var(--greytx);margin-top:.4rem}.rpsoon{font-size:.78rem;color:var(--greytx);font-style:italic}.rpsec{margin:1.7rem 0 0}.rpsec h2{margin-bottom:.4rem}.rpvar{list-style:none;padding:0;margin:.3rem 0}.rpvar li{padding:.18rem 0 .18rem .9rem;border-left:2px solid var(--edge);margin:.3rem 0}.rpvar b{color:var(--cyan)}.rpwarn{border-left:3px solid var(--coral);padding:.35rem 0 .35rem .9rem;margin:.6rem 0}.rpmark{border-left:3px solid var(--amber);padding:.35rem 0 .35rem .9rem;margin:.6rem 0}.fcbar{margin:.2rem 0 1.2rem}.fcbar[hidden]{display:none}.fcrow{display:flex;gap:.55rem;flex-wrap:wrap}.fcscope{display:flex;gap:.9rem;flex-wrap:wrap;margin:0 0 .65rem}.fcscope label{display:flex;align-items:center;gap:.45rem;font-size:.82rem;color:var(--greytx)}.fcscope select{font:inherit;font-size:.82rem;padding:.35rem .5rem;max-width:16rem;border:1px solid var(--edge);border-radius:.45rem;background:var(--card);color:var(--ink)}.fcscope select:hover{border-color:var(--cyan)}.fcbar button,.fcgrade button,.fcnav button,.fcpr{font:inherit;font-size:.82rem;padding:.4rem .8rem;border:1px solid var(--edge);border-radius:.45rem;background:var(--card);color:var(--ink);cursor:pointer}.fcbar button:hover,.fcgrade button:hover,.fcnav button:hover,.fcpr:hover{border-color:var(--cyan)}@media (max-width:560px){.fcrow{display:grid;grid-template-columns:1fr 1fr;gap:.45rem}.fcrow button{width:100%}}.fccard{display:flex;flex-direction:column;width:100%;max-width:660px;margin:.4rem auto 1rem;background:var(--card);border:2px solid rgba(56,182,255,.55);border-radius:22px;padding:1.5rem 1.7rem 1.2rem;min-height:15rem;cursor:pointer;text-align:left;color:var(--ink);font:inherit;transition:transform .14s ease}.fccard.turn{transform:rotateY(90deg)}.fccard:focus-visible{outline:2px solid var(--cyan);outline-offset:3px}.fctype{font-size:.72rem;font-weight:700;letter-spacing:.14em;color:var(--cyan);margin:0 0 .7rem}.fctopic{font-size:.78rem;color:var(--greytx);margin:0 0 .25rem}.fcq{font-size:1.12rem;line-height:1.55;margin:.2rem 0}.fccard .r1,.fccard .r2,.fcanswer .r1,.fcanswer .r2{font-weight:700;font-size:1.05rem;line-height:1.5;margin:.5rem 0}.fccard .r2,.fcanswer .r2{color:var(--cyan)}.fcfoot{display:flex;justify-content:space-between;align-items:center;margin-top:auto;border-top:1px solid var(--hair);padding-top:.7rem;font-size:.8rem;color:var(--greytx)}.fcprog{font-size:.85rem;color:var(--greytx);max-width:660px;margin:.4rem auto}.fcgrade{display:flex;gap:.55rem;max-width:660px;margin:.4rem auto 1rem}.fcgrade button{flex:1;text-align:center}.fcgrade button.g1{border-color:var(--coral)}.fcgrade button.g2{border-color:var(--amber)}.fcgrade button.g3{border-color:var(--cyan)}.fcnav{display:flex;gap:.55rem;max-width:660px;margin:.2rem auto 1.2rem}.fcunit{margin-top:2.4rem}.fcunit h2 .fcpr{margin-left:.7rem;vertical-align:middle}.fcd{margin:.45rem 0;border:1px solid var(--edge);border-radius:.6rem;padding:.45rem .8rem}.fcd .fcl{font-size:.72rem;font-weight:700;letter-spacing:.12em;color:var(--cyan);text-transform:uppercase;margin-right:.5rem}.fcface{margin:.5rem 0}.fccard .eqs,.fcd .eqs{margin:.9rem auto}.fccard .eqs .eq,.fcd .eqs .eq{font-size:clamp(1rem,3.4vw,1.25rem)}.fcanswer{border-top:1px solid var(--hair);padding-top:.6rem}.fclink{font-size:.85rem;margin:.4rem 0 .2rem}@media print{.fcbar,#fcplayer{display:none}}.apptabs{display:none}a.searchtop{display:none}@media (display-mode: standalone){nav.top{display:none}a.searchtop{display:flex;align-items:center;color:var(--ink);-webkit-tap-highlight-color:transparent}footer.site .fnav{display:none}body{padding-bottom:calc(72px + env(safe-area-inset-bottom))}.apptabs{display:flex;position:fixed;bottom:0;left:0;right:0;z-index:60;background:var(--bg);border-top:1px solid var(--hair);padding-bottom:env(safe-area-inset-bottom)}@supports (backdrop-filter: blur(1px)){.apptabs{background:color-mix(in srgb,var(--bg) 86%,transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}}.apptabs a{flex:1;position:relative;display:flex;flex-direction:column;align-items:center;gap:3px;padding:9px 0 7px;color:var(--greytx);font-size:.6rem;font-weight:500;letter-spacing:.04em;text-decoration:none;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none}header.site{padding-top:env(safe-area-inset-top)}.apptabs a svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;transition:transform .12s}.apptabs a.on,.apptabs a[aria-current=page]{color:var(--cyan)}.apptabs a:active svg{transform:scale(.88)}.crumbs{display:none}footer.site{display:none}main h1{font-size:1.7rem}.lede{font-size:.98rem}.topics li.flt{display:flex;align-items:center;justify-content:space-between;gap:.8rem;min-height:50px;border-bottom:1px solid var(--hair);padding:.35rem 0}.lprog{height:4px;background:var(--hair);border-radius:2px;margin:.3rem 0 .55rem;overflow:hidden}.lprog i{display:block;height:100%;width:0;background:var(--cyan);transition:width .25s}.lproglbl{font-size:.72rem;letter-spacing:.06em;color:var(--greytx);text-transform:uppercase;margin:0 0 .9rem}.lstep{display:none}.lstep.on{display:block}.lnav{display:flex;gap:.6rem;margin:1.5rem 0 .6rem}.lnav button{flex:1;font:inherit;font-size:.95rem;padding:.72rem;border-radius:.6rem;border:1px solid var(--edge);background:var(--card);color:var(--ink);cursor:pointer}.lnav button[data-l-next]{border-color:var(--cyan);font-weight:600}.lnav button:disabled{opacity:.35}.lstep.si-r{animation:stepr .18s ease}.lstep.si-l{animation:stepl .18s ease}.uprog{height:5px;border-radius:3px;background:var(--hair);overflow:hidden;margin:.55rem 0 .25rem}.uprog i{display:block;height:100%;background:var(--cyan);border-radius:3px}.usub{font-size:.72rem;color:var(--greytx)}.donetick{color:var(--cyan);font-weight:700;margin-left:.45rem}.acch{cursor:pointer;-webkit-user-select:none;user-select:none;display:flex;align-items:center;justify-content:space-between;gap:.6rem}.acch::after{content:"";flex:none;width:9px;height:9px;border-right:2px solid var(--greytx);border-bottom:2px solid var(--greytx);transform:rotate(45deg);transition:transform .15s}.acch.acco::after{transform:rotate(225deg)}header.site .wrap{padding-top:.5rem;padding-bottom:.5rem}.fcrow button{flex:1 1 30%;padding:.6rem .5rem}.fcmanage{display:none;margin-top:.55rem}.fcmanage.open{display:flex}.fcmanagetg{font:inherit;font-size:.78rem;background:none;border:0;color:var(--greytx);text-decoration:underline;cursor:pointer;padding:.45rem 0 0;display:block}.fcunit h2 .ckspec{display:none}.exnext{font:inherit;font-size:.85rem;padding:.5rem .95rem;margin:.45rem 0 .15rem;border:1px solid var(--cyan);border-radius:.5rem;background:var(--card);color:var(--ink);cursor:pointer}.exin{animation:exin .25s ease}}@keyframes exin{from{opacity:0;transform:translateY(6px)}}@keyframes stepr{from{opacity:.25;transform:translateX(26px)}to{opacity:1;transform:none}}@keyframes stepl{from{opacity:.25;transform:translateX(-26px)}to{opacity:1;transform:none}}.installpill{position:fixed;bottom:18px;right:18px;z-index:70;display:flex;align-items:center;gap:.5rem;font:inherit;font-size:.85rem;font-weight:600;padding:0;border-radius:99px;border:1px solid var(--cyan);background:var(--bg);color:var(--ink);box-shadow:0 4px 18px rgba(0,0,0,.35)}.installpill button{font:inherit;background:none;border:0;color:inherit;cursor:pointer;border-radius:99px}.installgo{padding:.6rem 0 .6rem 1rem}.installx{font-weight:400;color:var(--greytx);padding:.6rem 1rem .6rem .3rem}.hintcard{border:1px solid var(--hair);border-radius:14px;padding:.85rem 1rem;margin:.2rem 0 1rem;font-size:.88rem;color:var(--greytx);display:flex;justify-content:space-between;gap:.8rem;align-items:flex-start}.hintcard button{font:inherit;background:none;border:0;color:var(--cyan);cursor:pointer;padding:0;font-weight:600}.statwrap .big{font-size:1.4rem;font-weight:700;color:var(--ink);margin:.3rem 0}.statbars{display:flex;align-items:flex-end;gap:4px;height:88px;margin:.6rem 0 1rem}.statcol{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;justify-content:flex-end;min-width:0}.statcol i{display:block;width:100%;max-width:22px;border-radius:4px 4px 0 0;background:var(--cyan)}.statcol span{font-size:.56rem;color:var(--greytx);white-space:nowrap}.statrow{display:flex;align-items:center;gap:.7rem;margin:.45rem 0}.statlbl{flex:0 0 9.5rem;font-size:.82rem;color:var(--greytx);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.statprog{flex:1;margin:0}.statn{flex:0 0 3.2rem;text-align:right;font-size:.8rem;color:var(--ink)}@media (max-width:480px){.statlbl{flex-basis:7.2rem;font-size:.74rem}}.srlab{color:var(--greytx);font-size:.8rem;display:flex;justify-content:space-between;align-items:center}.srclear{font:inherit;font-size:.75rem;background:none;border:0;color:var(--cyan);cursor:pointer}@media not (prefers-reduced-motion: reduce){@view-transition{navigation:auto}}.tbadge{position:absolute;top:3px;left:50%;margin-left:8px;background:var(--coral);color:#fff;font-style:normal;font-size:.58rem;font-weight:700;line-height:15px;min-width:15px;border-radius:8px;padding:0 4px;text-align:center}.offpill{display:none;align-items:center;font-size:.66rem;letter-spacing:.08em;border:1px solid var(--hair);border-radius:99px;padding:.15rem .55rem;color:var(--greytx)}.offpill.on{display:inline-flex}a.card{transition:transform .12s}a.card:active{transform:scale(.985)}html{-webkit-tap-highlight-color:rgba(56,182,255,.12)}.appdash .big{font-size:1.5rem;font-weight:700;color:var(--ink);margin:.35rem 0}.ckprog{height:7px;border-radius:4px;background:var(--hair);overflow:hidden;margin:.5rem 0}.ckprog i{display:block;height:100%;width:0;border-radius:4px;background:var(--cyan);transition:width .4s}.tqlist{list-style:none;padding:0;margin:1.4rem 0}.tqq{border-top:1px solid var(--hair);padding:1rem 0}.tqq:last-child{border-bottom:1px solid var(--hair)}.tqmeta{font-size:.74rem;letter-spacing:.06em;text-transform:uppercase;color:var(--greytx);margin:0 0 .35rem}.tqtext{margin:0}.tqa{margin:.6rem 0 0}.tqa summary{cursor:pointer;font-size:.85rem;color:var(--cyan);padding:.35rem 0;min-height:32px}.tqa>div{border-left:2px solid var(--edge);padding:.1rem 0 .1rem .8rem;margin:.3rem 0 0;color:var(--greytx);font-size:.94rem}.tqgo{margin:1.6rem 0 .4rem}.qbbar{margin:.2rem 0 1.1rem}.qbbar[hidden]{display:none}.qbscope{display:flex;flex-wrap:wrap;gap:.5rem 1rem;align-items:baseline;font-size:.92rem;color:var(--greytx);margin-bottom:.2rem}.qbscope label{min-width:0}.qbscope select{width:100%}select option{background:var(--navy);color:var(--ink)}@media print{:root{color-scheme:light}}.qbscope select{font:inherit;font-size:.92rem;padding:.3rem .5rem;border-radius:8px;background:var(--card);color:var(--ink);border:1px solid var(--edge);max-width:100%}.qbgo{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .9rem;margin:.7rem 0 .2rem}.qbstart{font-weight:700;font-size:1rem;padding:.62rem 1.5rem;border-radius:999px;background:var(--cyan);color:var(--navy);border:0;cursor:pointer;min-height:44px}.qbstart:hover{filter:brightness(1.08)}.qbstart:disabled{background:none;color:var(--greytx);border:1px solid var(--edge);cursor:default}.qblink{background:none;border:0;color:var(--greytx);font-size:.9rem;cursor:pointer;padding:.5rem .1rem;text-decoration:underline;text-underline-offset:3px;min-height:44px}.qblink:hover,.qblink:focus-visible{color:var(--cyan)}.qbman{margin:.4rem 0 0}.qbman>summary{cursor:pointer;color:var(--greytx);font-size:.84rem;padding:.45rem .1rem;min-height:44px;display:flex;align-items:center}.qbman>summary:hover{color:var(--cyan)}.qbcard{border:2px solid var(--edge);border-radius:22px;background:var(--card);padding:1.15rem 1.2rem 1.3rem;margin:.4rem 0 1rem}.qbmeta{display:flex;flex-wrap:wrap;gap:.45rem;align-items:center;margin:0 0 .7rem}.qbchip{font-size:.68rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--greytx);border:1px solid var(--edge);border-radius:6px;padding:.1rem .5rem}.qbchip.on{color:var(--navy);background:var(--cyan);border-color:var(--cyan)}.qbq{font-size:1.06rem;line-height:1.55;margin:.1rem 0 .9rem}.qbwork{width:100%;box-sizing:border-box;font:inherit;font-size:.95rem;line-height:1.5;min-height:5.5rem;padding:.6rem .7rem;border-radius:12px;background:var(--bg);color:var(--ink);border:1px solid var(--edge);resize:vertical}.qbhint{font-size:.82rem;color:var(--greytx);margin:.35rem 0 .8rem}.qbans{border-top:1px solid var(--edge);margin-top:1rem;padding-top:.9rem}.qbans h3{font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--cyan);margin:0 0 .5rem}.qbans p{line-height:1.6;margin:.3rem 0}.qbgrade{display:flex;flex-wrap:wrap;gap:.5rem;margin:1rem 0 .2rem}.qbgrade button{font:inherit;font-size:.9rem;font-weight:600;padding:.55rem 1rem;border-radius:999px;cursor:pointer;min-height:44px;border:1px solid var(--edge);background:var(--bg);color:var(--ink)}.qbgrade button:hover{border-color:var(--cyan)}.qbg0{border-color:var(--coral)!important;color:var(--coral)!important}.qbg1{border-color:var(--amber)!important;color:var(--amber)!important}.qbg2{border-color:#2ea043!important;color:#2ea043!important}.qbprog{display:flex;justify-content:space-between;gap:.8rem;font-size:.8rem;color:var(--greytx);margin:.2rem .1rem 0}.qbdone{text-align:center;padding:1.6rem 1rem}.qbdone .big{font-size:1.5rem;font-weight:700;color:var(--ink);margin:.2rem 0 .5rem}.qbnext{font-size:.95rem;line-height:1.55;margin:.6rem 0 .2rem}.qbstrip{border:1px solid var(--edge);border-radius:16px;padding:.9rem 1rem;margin:1.4rem 0;display:flex;flex-wrap:wrap;gap:.5rem 1rem;align-items:center}.qbstrip .qbn{font-weight:700;color:var(--ink)}.qbpaper{border-top:1px solid var(--edge);padding-top:.7rem;font-size:.92rem;color:var(--greytx)}.qbpaperbar{display:flex;justify-content:space-between;align-items:center;gap:.8rem;margin:.2rem 0 .5rem}.qbclock{font-weight:700;font-size:1.1rem;color:var(--ink);font-variant-numeric:tabular-nums}.qbclock.qblow{color:var(--coral)}.qbyours{border-top:1px solid var(--edge);margin-top:1rem;padding-top:.9rem}.qbyours h3{font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--greytx);margin:0 0 .5rem}.qbyours p{white-space:pre-wrap;line-height:1.55;margin:.3rem 0;color:var(--ink)}.qbmarks{align-items:center;gap:.4rem}.qbmkl{font-size:.82rem;color:var(--greytx)}.qbmk{min-width:46px;font-variant-numeric:tabular-nums;font-weight:700;padding:.55rem .5rem}.qbbd{margin:1.1rem 0 0;text-align:left}.qbbd>summary{cursor:pointer;color:var(--greytx);font-size:.84rem;padding:.45rem .1rem;min-height:44px;display:flex;align-items:center}.qbbd>summary:hover{color:var(--cyan)}.qbsketch{margin:.7rem 0 .2rem}.qbskh{font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--greytx);margin:0 0 .4rem}.qbcanvas{--skink:var(--cyan);display:block;width:100%;border-radius:12px;background:var(--bg);border:1px solid var(--edge);touch-action:none;cursor:crosshair}.qbcanvas[data-ro]{cursor:default}.qbsktools{display:flex;flex-wrap:wrap;align-items:center;gap:.2rem .8rem;margin-top:.1rem}@media print{.qbsktools{display:none}}@media print{.qbbar,.qbgrade,.qbwork{display:none}}.plset{margin:.4rem 0 1.4rem}.plset fieldset{border:0;padding:0;margin:0 0 1.5rem}.plset legend{font-weight:700;font-size:1.05rem;padding:0;margin:0 0 .2rem}.plset .meta{margin:0 0 .7rem}.plopts{display:flex;flex-wrap:wrap;gap:.5rem}.plopt{font:inherit;font-size:.95rem;font-weight:600;padding:.55rem 1.1rem;border-radius:999px;cursor:pointer;min-height:44px;border:1px solid var(--edge);background:var(--bg);color:var(--ink)}.plopt:hover{border-color:var(--cyan)}.plopt[aria-pressed=true]{background:var(--cyan);border-color:var(--cyan);color:var(--navy)}.pldays .plopt{min-width:3.4rem;padding:.55rem .5rem;text-align:center}.plsum{border:1px solid var(--edge);border-radius:16px;padding:.9rem 1.1rem;margin:.2rem 0 1.4rem;font-size:.95rem;color:var(--greytx)}.plsum b{color:var(--ink)}.pldots{display:flex;gap:.2rem;margin:.2rem 0 1.1rem}.pldot{flex:1 1 0;height:.36rem;border-radius:3px;background:var(--edge);min-width:2px}.pldot.on{background:var(--cyan)}.pldot.at{background:var(--amber)}.plkind{font-size:.68rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--cyan);margin:0 0 .5rem}.plles h2{margin:.1rem 0 .5rem;font-size:1.3rem}.plles h2::before{display:none}.plles .meta{margin:0 0 1rem}.plflip{cursor:pointer}.pldone{text-align:center;padding:1.8rem 1rem 1.6rem}.plring{display:block;margin:0 auto .9rem;width:104px;height:104px}.plring circle{fill:none;stroke-width:6;stroke-linecap:round}.plring .trk{stroke:var(--edge)}.plring .arc{stroke:var(--cyan);stroke-dasharray:295;stroke-dashoffset:0;transform:rotate(-90deg);transform-origin:50% 50%}.plring .tk{fill:none;stroke:var(--cyan);stroke-width:7;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:44;stroke-dashoffset:0}.plnext{font-size:.95rem;line-height:1.55;margin:.1rem auto .4rem;max-width:34rem}.plgo .plring .arc{animation:plarc .9s ease-out both}.plgo .plring .tk{animation:pltk .45s .75s ease-out both}.plgo .pldone .big{animation:plpop .5s .9s ease-out both}@keyframes plarc{from{stroke-dashoffset:295}to{stroke-dashoffset:0}}@keyframes pltk{from{stroke-dashoffset:44}to{stroke-dashoffset:0}}@keyframes plpop{from{opacity:0;transform:translateY(.4rem) scale(.94)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.plgo .plring .arc,.plgo .plring .tk,.plgo .pldone .big{animation:none}}.plbackbar{position:fixed;left:0;right:0;bottom:0;z-index:61;display:flex;justify-content:center;padding:.6rem .8rem calc(.6rem + env(safe-area-inset-bottom));background:linear-gradient(to top,var(--bg) 62%,rgba(13,27,42,0))}.plbackbar button{font:inherit;font-weight:700;font-size:.95rem;padding:.62rem 1.5rem;border-radius:999px;background:var(--cyan);color:var(--navy);border:0;cursor:pointer;min-height:44px;box-shadow:0 6px 22px rgba(0,0,0,.4)}body.hasplanbar{padding-bottom:4.5rem}@media (display-mode: standalone){.plbackbar{bottom:calc(72px + env(safe-area-inset-bottom));padding-bottom:.6rem}body.hasplanbar{padding-bottom:calc(4.5rem + 72px + env(safe-area-inset-bottom))}}@media print{.plbackbar{display:none}}.flagbtn{background:none;border:0;color:var(--greytx);font:inherit;font-size:.78rem;cursor:pointer;padding:.4rem .1rem;text-decoration:underline;text-underline-offset:3px;min-height:44px}.flagbtn:hover,.flagbtn:focus-visible{color:var(--cyan)}.lsec>.flagbtn{display:block;margin:.1rem 0 0}figcaption .flagbtn{font-size:.72rem;min-height:0;padding:.15rem .1rem}.flagrow{margin:.6rem 0 0}.flagdlg{background:var(--bg);background-image:linear-gradient(var(--card),var(--card));color:var(--ink);border:2px solid var(--edge);box-shadow:0 18px 50px rgba(0,0,0,.55);border-radius:18px;padding:1.1rem 1.2rem;max-width:26rem;width:calc(100vw - 2.4rem)}.flagdlg::backdrop{background:rgba(3,8,14,.78)}.flagdlg h2{margin:0 0 .6rem;font-size:1.05rem}.flagcats{display:flex;flex-direction:column;gap:.15rem;margin:0 0 .8rem}.flagcats label{display:flex;gap:.5rem;align-items:baseline;padding:.22rem 0;cursor:pointer}.flagnote{display:block;font-size:.84rem;color:var(--greytx);margin:0 0 .3rem}.flagdlg textarea{width:100%;box-sizing:border-box;font:inherit;font-size:.92rem;min-height:4.2rem;padding:.5rem .6rem;border-radius:10px;background:var(--bg);color:var(--ink);border:1px solid var(--edge);resize:vertical}.flagts{margin:.7rem 0 0}.flagstat{font-size:.88rem;margin:.5rem 0 0;min-height:1.2em}.flagact{display:flex;gap:.6rem;justify-content:flex-end;margin-top:.6rem}.flagact button{font:inherit;cursor:pointer;min-height:44px;padding:.5rem 1.1rem;border-radius:999px}.flagcancel{background:none;border:1px solid var(--edge);color:var(--ink)}.flagsend{background:var(--cyan);color:var(--navy);border:0;font-weight:700}.lbd{margin:1.1rem 0 0}.lbd .bdsel{margin:.2rem 0 0}.bdnudge{margin:.6rem .1rem 0;font-size:.88rem;color:var(--greytx);line-height:1.5}.bdnudge button{font:inherit;font-size:.84rem;background:none;border:0;cursor:pointer;color:var(--cyan);text-decoration:underline;text-underline-offset:3px;padding:.2rem .3rem;margin-left:.2rem}.bdfold{margin:1rem 0}li.bdfold{margin:.3rem 0}.bdfold button{font:inherit;font-size:.86rem;line-height:1.45;color:var(--greytx);background:none;border:1px dashed var(--edge);border-radius:12px;padding:.5rem .9rem;cursor:pointer;text-align:left;min-height:44px;width:100%;box-sizing:border-box}.bdfold button:hover,.bdfold button:focus-visible{color:var(--cyan);border-color:rgba(56,182,255,.45)}.bdfold .bdfold-go{color:var(--cyan);font-weight:600;white-space:nowrap;margin-left:.35rem}.bdshown{border-left:2px solid rgba(56,182,255,.35);padding-left:.9rem}@media print{.lbd,.bdfold{display:none}}.appsi-code{margin:1.2rem 0}.appsi-code code{font-size:1.35rem;letter-spacing:.08em;word-break:break-all;background:var(--card);border:1px solid var(--edge);border-radius:12px;padding:.7rem .9rem;display:inline-block;max-width:100%}