:root{--measure:39.6rem;--t-title:clamp(2rem, 4.2vw, 2.68rem);--t-h2:clamp(1.64rem, 2.4vw, 1.93rem);--t-h3:clamp(1.18rem, 1.6vw, 1.39rem);--fg:var(--doc-ink);--fg-dim:var(--doc-ink-dim)}.sitenav{padding-inline:var(--gutter);border-bottom:1px solid var(--rule);align-items:baseline;gap:1rem;padding-block:1.2rem;display:flex}.brand{font-family:var(--display);letter-spacing:.02em;font-size:1.16rem;font-weight:700;font-stretch:122%;text-decoration:none}.brand .z{color:var(--verdict)}.ac{font-family:var(--data);font-size:var(--t-micro);letter-spacing:.15em;text-transform:uppercase;color:var(--fg-dim)}.navlinks{align-items:baseline;gap:1.6rem;margin-left:auto;display:flex}.navlinks a{font-family:var(--data);font-size:var(--t-micro);letter-spacing:.15em;text-transform:uppercase;color:var(--fg);text-decoration:none}.navlinks a:hover{text-decoration:underline;text-decoration-color:var(--fg);text-underline-offset:.22em;text-decoration-thickness:1px}.wrap{padding-inline:var(--gutter);padding-block-end:clamp(3rem,9vh,6rem)}.wrap>*{max-width:var(--measure);margin-inline:auto}.wrap>figure,.wrap>.phase{max-width:min(var(--max), 100%)}.phase>*{max-width:var(--measure);margin-inline:auto}.phase>figure,.phase>table{max-width:min(var(--max), 100%)}.hero{padding-block:clamp(2.2rem,6vh,3.6rem) 0}.kicker{font-family:var(--data);font-size:var(--t-micro);letter-spacing:.14em;text-transform:uppercase;color:var(--fg-dim)}.hero h1{font-size:var(--t-title);margin-block:1.3rem 0}.wrap .sub{font-size:var(--t-lede);color:var(--fg-dim);max-width:52ch;margin-block:1.3rem 0;line-height:1.5}.meta-row{flex-wrap:wrap;gap:.5rem;margin-block:1.8rem 0;display:flex}.chip,.define{font-family:var(--data);font-size:var(--t-micro);letter-spacing:.14em;text-transform:uppercase;color:var(--fg-dim);background:color-mix(in srgb, var(--vessel) 72%, transparent);border:1px solid var(--rule);border-radius:0;padding:.3rem .7rem;font-weight:500}.define{text-transform:none;letter-spacing:.01em;white-space:nowrap;padding:.05em .32em}.wrap p{margin-block:0 .9rem}.wrap ul,.wrap ol{margin-block:0 .9rem;padding-left:1.2rem}.wrap li{margin-block:.26rem}.wrap b,.wrap strong{color:var(--fg);font-weight:500}.wrap a{color:inherit;text-decoration-color:var(--rule-strong);text-underline-offset:.22em;text-decoration-thickness:1px}.wrap a:hover{text-decoration-color:var(--fg)}.wrap h2,.phase-title .t{font-family:var(--display);font-weight:600;font-stretch:112%;font-size:var(--t-h2);letter-spacing:-.016em;text-wrap:balance;line-height:1.1}.wrap h2{border-top:1px solid var(--rule);margin-block:2.6rem .9rem;padding-top:1.8rem}.wrap h3{font-family:var(--body);font-weight:500;font-size:var(--t-h3);letter-spacing:-.008em;margin-block:1.8rem .5rem;line-height:1.25}.wrap h4{font-family:var(--data);font-size:var(--t-small);letter-spacing:.1em;text-transform:uppercase;color:var(--fg-dim);margin-block:1.4rem .35rem;font-weight:500}.toc{background:color-mix(in srgb, var(--vessel) 72%, transparent);border:1px solid var(--rule);border-radius:0;margin-block:1.8rem;padding:1.3rem 1.4rem}.toc>h4:first-child{margin-top:0}.toc ol{margin-block:.9rem 0;padding-left:1.3rem}.toc li{margin-block:.26rem}.wrap .toc-note{font-size:var(--t-small);color:var(--fg-dim);margin-block:1.3rem 0}.est{font-family:var(--data);font-size:var(--t-micro);letter-spacing:.1em;text-transform:uppercase;color:var(--fg-dim)}.phase{margin-block:2.6rem 0;scroll-margin-top:1.4rem}.phase-head{border-top:1px solid var(--rule);align-items:baseline;gap:.9rem;margin-block:0 .9rem;padding-top:1.8rem;display:flex}.pnum{width:2.2rem;height:2.2rem;font-family:var(--data);font-size:var(--t-small);color:var(--fg-dim);background:color-mix(in srgb, var(--vessel) 72%, transparent);border:1px solid var(--rule-strong);border-radius:0;flex:none;place-items:center;font-weight:500;display:inline-grid}.phase-title{min-width:0}.tags{font-family:var(--data);font-size:var(--t-micro);letter-spacing:.04em;color:var(--fg-dim);margin-block:.35rem 0;line-height:1.5}.lead,.obj,.lab,.gate,.callout{background:color-mix(in srgb, var(--vessel) 72%, transparent);border:1px solid var(--rule);border-left:1px solid var(--rule-strong);border-radius:0;margin-block:1.4rem;padding:.85rem 1.1rem}.lh,.obj>b:first-child{font-family:var(--data);font-size:var(--t-micro);letter-spacing:.14em;text-transform:uppercase;color:var(--fg-dim);margin-block:0 .35rem;font-weight:500;display:block}.lead>:first-child,.obj>:first-child,.lab>:first-child,.gate>:first-child,.callout>:first-child,.lab>.lh+*,.gate>.lh+*,.callout>.lh+*{margin-top:0}.lead>:last-child,.obj>:last-child,.lab>:last-child,.gate>:last-child,.callout>:last-child{margin-bottom:0}.callout{border-left-color:var(--breach)}.callout>.lh{color:var(--breach)}.wrap table{border-collapse:collapse;width:100%;font-size:var(--t-small);margin-block:1.4rem}.wrap th,.wrap td{border:1px solid var(--rule);text-align:left;vertical-align:top;overflow-wrap:anywhere;padding:.45rem .65rem}.wrap th{font-family:var(--data);font-size:var(--t-micro);letter-spacing:.1em;text-transform:uppercase;color:var(--fg-dim);background:color-mix(in srgb, var(--vessel) 72%, transparent);border-bottom-color:var(--rule-strong);font-weight:500}.wrap td.num,.wrap td.mono,.wrap td code{font-family:var(--data);font-variant-numeric:tabular-nums}.wrap code{font-family:var(--data);color:var(--fg);background:color-mix(in srgb, var(--vessel) 72%, transparent);border:1px solid var(--rule);overflow-wrap:anywhere;border-radius:0;padding:.05em .32em;font-size:.92em}.wrap pre{font-family:var(--data);font-size:var(--t-small);color:var(--fg);background:var(--vessel);border:1px solid var(--rule);border-radius:0;margin-block:1.4rem;padding:.9rem 1.1rem;line-height:1.5;overflow-x:auto}.wrap pre code{background:0 0;border:none;padding:0}.wrap figure{margin-block:1.8rem}.wrap figure svg,.wrap figure img{width:100%;height:auto;display:block}.fig svg{max-width:460px;margin-inline:auto}.fig.wide svg{max-width:600px}.wrap figcaption{font-family:var(--body);font-size:var(--t-small);color:var(--fg-dim);max-width:var(--measure);margin:.7rem auto 0;line-height:1.5}.wrap figcaption b{color:var(--fg);font-weight:500}.wrap figcaption code,.wrap figcaption .mono{font-family:var(--data)}.legend{max-width:var(--measure);font-family:var(--data);font-size:var(--t-micro);letter-spacing:.06em;color:var(--fg-dim);flex-wrap:wrap;gap:.9rem;margin:.7rem auto 0;padding:0;display:flex}.legend span{align-items:center;gap:.4rem;display:inline-flex}.sw{border:1px solid var(--rule-strong);background:0 0;border-radius:0;width:.7rem;height:.7rem;display:inline-block}.sw-code{background:var(--vessel)}.sw-data{background:0 0}.sw-policy{background:var(--field)}details.src{margin-block:1.4rem}details.src>summary{cursor:pointer;font-family:var(--data);font-size:var(--t-micro);letter-spacing:.14em;text-transform:uppercase;color:var(--fg-dim);list-style:none}details.src>summary::-webkit-details-marker{display:none}details.src>summary:before{content:"▸ "}details.src[open]>summary:before{content:"▾ "}.srcs{font-size:var(--t-small);color:var(--fg-dim);margin-block:.9rem 0;line-height:1.5}.foot{border-top:1px solid var(--rule);font-size:var(--t-small);color:var(--fg-dim);margin-block:clamp(2.6rem,6vh,4rem) 0;padding-top:1.8rem}.foot-strong{color:var(--fg);font-weight:500}.wrap .foot-legal{border-top:1px solid var(--rule);font-family:var(--data);font-size:var(--t-micro);color:var(--fg-dim);flex-wrap:wrap;justify-content:space-between;gap:1rem;margin-block:1.4rem 0;padding-top:1.4rem;display:flex}.foot-id{letter-spacing:.1em;text-transform:uppercase}.foot-licence{letter-spacing:.04em}svg text{font-family:var(--body)}.mono{font-family:var(--data)}.dg-bg{fill:none}.dg-surface{fill:var(--vessel)}.dg-surface-2{fill:color-mix(in srgb, var(--vessel) 72%, transparent)}.dg-rule{stroke:var(--rule-strong);fill:none}.dg-edge{stroke:var(--rule-strong)}.dg-rule-dim{stroke:var(--rule);fill:none}.dg-arrow{fill:var(--rule-strong)}.dg-label{fill:var(--fg);font-family:var(--body);font-weight:500}.dg-annot{fill:var(--fg-dim);font-family:var(--body)}.dg-value{fill:var(--fg);font-family:var(--data)}.dg-value-dim{fill:var(--fg-dim);font-family:var(--data)}.dg-pass{stroke:var(--verdict)}.dg-pass-t{fill:var(--verdict)}.dg-fail{stroke:var(--breach)}.dg-fail-t{fill:var(--breach)}.dg-defs,.svg-defs{position:absolute}.tracknav{padding-inline:var(--gutter);border-bottom:1px solid var(--rule);flex-wrap:wrap;align-items:baseline;gap:.9rem 1.3rem;padding-block:.9rem;display:flex}.tracknav a{font-family:var(--data);font-size:var(--t-micro);letter-spacing:.14em;text-transform:uppercase;color:var(--fg-dim);text-decoration:none}.tracknav a:hover{color:var(--fg)}.tracknav a[aria-current=page]{color:var(--fg);border-bottom:1px solid var(--fg);padding-bottom:.26rem}.prevnext{border-top:1px solid var(--rule);font-family:var(--data);font-size:var(--t-small);letter-spacing:.04em;color:var(--fg-dim);flex-wrap:wrap;justify-content:space-between;gap:.9rem 1.3rem;margin-block:2.6rem 0;padding-top:1.4rem;display:flex}.pn-next{text-align:right;margin-left:auto}.phase-title h1.t{font-weight:640;font-stretch:118%;font-size:var(--t-title);letter-spacing:-.024em;line-height:.98}@media (width<=37.5rem){.navlinks{gap:1rem}.navlinks .hidem,.ac{display:none}.wrap table{font-size:var(--t-micro)}.wrap th,.wrap td{padding:.35rem .45rem}}.artscope{position:relative}.page-art{opacity:.5;z-index:-1;pointer-events:none;background-position:50%;background-size:cover;height:clamp(22rem,66vh,40rem);position:absolute;inset:0 0 auto;mask-image:linear-gradient(#000 30%,#0000 96%)}.page-art-overview{background-image:url(/academy/art/landing.jpg)}.page-art-loop{background-image:url(/academy/art/loop.jpg)}.page-art-blocks{background-image:url(/academy/art/blocks.jpg)}.page-art-history{background-image:url(/academy/art/history.jpg)}.page-art-chip{background-image:url(/academy/art/chip.jpg)}.page-art-boot{background-image:url(/academy/art/boot.jpg)}.page-art-enclaves{background-image:url(/academy/art/enclaves.jpg)}.page-art-rats{background-image:url(/academy/art/rats.jpg)}.page-art-future{background-image:url(/academy/art/future.jpg)}.page-art-capstone{background-image:url(/academy/art/capstone.jpg)}.signup{border-top:1px solid var(--rule);margin-block:2.6rem 0;padding-top:1.4rem}.signup-label{font-family:var(--data);font-size:var(--t-micro);letter-spacing:.16em;text-transform:uppercase;color:var(--fg-dim);margin-block:0}.wrap .signup-copy{font-size:var(--t-small);color:var(--fg-dim);max-width:var(--measure);margin-block:.9rem 1.3rem}.signup .field{max-width:34rem}.signup .field-soon{opacity:.55}.signup .field-soon input,.signup .field-soon button{cursor:default}
