body:has(.jh-site){background:#fbfaf6}body:has(.jh-site) .grain{display:none}.jh-site{--fg:#1d1d1f;--fg-soft:#424245;--fg-mute:#6e6e73;--accent:#06c;--line:rgba(0,0,0,.09);--paper:#fbfaf6;--wash:#f1efe7;--sans:-apple-system,BlinkMacSystemFont,"SF Pro Text",Inter,"Helvetica Neue",Arial,sans-serif;--mono:"SF Mono",ui-monospace,"JetBrains Mono",Menlo,monospace;--hand:var(--font-caveat),"Bradley Hand","Segoe Print",cursive;--gutter:max(16px,5vw);--measure:680px;min-height:100vh;font-family:var(--sans);color:var(--fg);background:var(--paper);font-variant-numeric:normal;-webkit-font-smoothing:antialiased;line-height:1.5}.jh-site a{color:inherit}.jh-site .sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.jh-site :focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:3px}.jh-site [hidden]{display:none!important}.jh-site main{padding:56px var(--gutter)24px}.jh-site .col{max-width:var(--measure);margin:0 auto}.jh-site .wide{max-width:1080px;margin:0 auto}.jh-site .kicker{font:600 12px/1.4 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--accent);margin:0 0 14px}.jh-site .kicker a{text-decoration:none}.jh-site .kicker a:hover{text-decoration:underline}.jh-site .intro{max-width:var(--measure)}.jh-site .intro h1{letter-spacing:-.035em;margin:0;font-size:max(34px,min(6vw,52px));font-weight:700;line-height:1.04}.jh-site .lede{color:var(--fg-soft);max-width:600px;margin:18px 0 0;font-size:18px;line-height:1.55}.jh-site .how{font:400 24px/1.25 var(--hand);color:var(--fg-soft);transform-origin:0;margin:14px 0 0;transform:rotate(-1deg)}.jh-site .sky-tools{max-width:var(--measure)}.jh-site .search{margin-top:28px;position:relative}.jh-site .search input{width:100%;font:16px var(--sans);color:var(--fg);-webkit-appearance:none;-moz-appearance:none;appearance:none;background:#fff;border:1px solid rgba(0,0,0,.14);border-radius:12px;padding:13px 92px 13px 16px;box-shadow:0 1px 2px rgba(0,0,0,.04)}.jh-site .search input:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 4px rgba(0,102,204,.14)}.jh-site #count{font:600 12px var(--mono);color:var(--fg-mute);pointer-events:none;position:absolute;top:50%;right:16px;transform:translateY(-50%)}.jh-site .sky-actions{flex-wrap:wrap;align-items:center;gap:10px 14px;margin-top:14px;display:flex}.jh-site .pick{font:600 14px var(--sans);background:var(--accent);color:#fff;cursor:pointer;border:0;border-radius:999px;padding:9px 16px;box-shadow:0 4px 14px rgba(0,102,204,.22)}.jh-site .pick:hover{background:#0058b0}.jh-site .pick:disabled{opacity:.5;cursor:default}.jh-site .view-switch{background:var(--wash);border-radius:999px;padding:3px;display:inline-flex}.jh-site .view-switch button{font:500 13px var(--sans);color:var(--fg-soft);cursor:pointer;background:0 0;border:0;border-radius:999px;padding:6px 13px}.jh-site .view-switch button[aria-pressed=true]{color:var(--fg);background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.08)}.jh-site .jump{color:var(--fg-mute);margin:14px 0 0;font-size:13px}.jh-site .jump a{color:var(--fg-soft)}.jh-site .none{color:var(--fg-mute);margin-top:40px}.jh-site .chip{font:500 13px var(--sans);color:var(--fg);cursor:pointer;background:#fff3c4;border:0;border-radius:999px;padding:6px 12px;box-shadow:inset 0 0 0 1px rgba(0,0,0,.08)}.jh-site{overflow-x:clip}.jh-site .sky{--unit:60px;margin:-56px calc(-1*var(--gutter))0;padding:56px var(--gutter)0;background:linear-gradient(#c9def4 0,#d6e6f6 30%,#e6eef7 70%,#f6ebe2 100%);position:relative;overflow:hidden}.jh-site:has(.sky.view-sky){background:linear-gradient(#c9def4,#c9def4)top/100% 160px no-repeat,var(--paper)}.jh-site:has(.sky.view-sky) .site-nav{border-bottom-color:transparent}.jh-site:has(.sky.view-sky) .site-nav:before{-webkit-backdrop-filter:none;backdrop-filter:none;background:0 0}.jh-site .sky-head{z-index:6;pointer-events:none;max-width:1080px;margin:0 auto;position:relative}.jh-site .sky-head>*{pointer-events:auto}.jh-site .sky .intro{max-width:560px}.jh-site .sky .lede{color:#3a4352}.jh-site .sky .search input{background:rgba(255,255,255,.86);border-color:rgba(30,60,110,.16)}.jh-site .formation{max-width:1240px;height:var(--h);margin:-330px auto 0;position:relative}.jh-site .lead{z-index:3;pointer-events:none;width:min(360px,34vw);height:auto;animation:5.5s ease-in-out infinite alternate lead-bob;position:absolute;top:6px;right:2%;transform:rotate(-12deg)}@keyframes lead-bob{to{transform:rotate(-9deg)translate(6px,-10px)}}.jh-site .clouds{pointer-events:none;position:absolute;top:0;bottom:0;left:0;right:0}.jh-site .clouds.back{z-index:0}.jh-site .clouds.front{z-index:4}.jh-site .cloud{translate:-50% -50%;transform:translate3d(0,calc(var(--sy,0)*var(--p)*1px),0);will-change:transform;background:50%/100% 100% no-repeat;display:block;position:absolute}.jh-site .year-mark{left:0;right:0;top:var(--y);z-index:1;text-align:center;font:700 clamp(110px,15vw,220px)/1 var(--hand);letter-spacing:.02em;color:rgba(255,255,255,.92);text-shadow:0 0 6px #fff,0 0 18px rgba(255,255,255,.9),0 0 40px rgba(255,255,255,.6);filter:blur(.4px);pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;position:absolute;translate:0 -50%}.jh-site .year-mark.current{text-align:right;font-size:max(80px,min(9vw,130px));top:205px;left:auto;right:4%;translate:none}.jh-site .sky.js .year-mark{clip-path:inset(0 100% 0 0);transition:clip-path 2.2s cubic-bezier(.4,.1,.3,1)}.jh-site .sky.js .year-mark[data-seen]{clip-path:inset(-20% -5%)}.jh-site .planes{z-index:2;margin:0;padding:0;list-style:none;position:absolute;top:0;bottom:0;left:0;right:0}.jh-site .spot{left:calc(var(--x)*100%);top:var(--y);width:calc(var(--unit)*var(--size));height:calc(var(--unit)*var(--size));position:absolute;translate:-50% -50%}.jh-site .spot:hover,.jh-site .spot:focus-within{z-index:10}.jh-site .plane-link{-webkit-tap-highlight-color:transparent;-webkit-user-drag:none;outline-offset:6px;border-radius:50%;width:100%;height:100%;display:block;position:relative}.jh-site .bob{animation:bob var(--bob)ease-in-out var(--bob-delay)infinite alternate;animation-play-state:paused;position:absolute;top:0;bottom:0;left:0;right:0}.jh-site .spot[data-on] .bob{animation-play-state:running}@keyframes bob{to{transform:translate(4px,-8px)}}.jh-site .craft{transform:rotate(var(--turn));transition:transform .35s cubic-bezier(.3,1.5,.5,1);position:absolute;top:0;bottom:0;left:0;right:0}.jh-site .plane-link:hover .craft{transform:rotate(var(--turn))translateY(-10px)scale(1.14)}.jh-site .plane-link:focus-visible .craft{transform:rotate(var(--turn))translateY(-10px)scale(1.14)}.jh-site .plane-link .paper{width:100%;height:100%;position:absolute;top:0;bottom:0;left:0;right:0;overflow:visible}.jh-site .planes:focus-within{z-index:5}.jh-site .planes:has(.spot:hover){z-index:5}.jh-site .spot.nudge .paper{transform-origin:50%;animation:1.1s cubic-bezier(.3,.7,.4,1) nudge}@keyframes nudge{0%,to{transform:none}22%{transform:translateY(-10%)scale(1.14)rotate(-10deg)}48%{transform:translateY(-10%)scale(1.14)rotate(9deg)}72%{transform:translateY(-4%)scale(1.05)rotate(-4deg)}}.jh-site .spot.nudge:before{content:"";pointer-events:none;border:2.5px solid #fff;border-radius:50%;animation:1s ease-out .18s both nudge-ring;position:absolute;top:6%;bottom:6%;left:6%;right:6%;box-shadow:0 0 0 1px rgba(0,102,204,.16),0 0 14px rgba(255,255,255,.85),inset 0 0 10px rgba(255,255,255,.6)}@keyframes nudge-ring{0%{opacity:.95;transform:scale(.45)}to{opacity:0;transform:scale(1.75)}}.jh-site .view-list .spot:before{display:none}.jh-site .plane-link.read .craft:after{content:"";background:linear-gradient(rgba(255,255,255,.95),rgba(255,255,255,0));border-radius:2px;width:4px;height:220%;margin-left:-2px;position:absolute;top:86%;left:50%;box-shadow:0 0 6px rgba(255,255,255,.8)}.jh-site .sky.js .spot:not([data-seen]) .plane-link{opacity:0}.jh-site .sky.js .spot[data-seen] .plane-link{animation:arrive .9s cubic-bezier(.2,.8,.3,1)var(--arrive)both}@keyframes arrive{0%{opacity:0;transform:translate(-70px,60px)scale(.6)}}.jh-site .spot.looping .craft{transform-origin:50% -40%;animation:.95s cubic-bezier(.45,.05,.4,1) loop}@keyframes loop{to{transform:rotate(calc(var(--turn) + 360deg))}}.jh-site .spot[data-dim] .plane-link{filter:grayscale();opacity:.15!important}.jh-site .spot[data-hit]:after{content:"";z-index:-1;pointer-events:none;background:radial-gradient(closest-side,rgba(255,255,255,.9),rgba(255,255,255,0));border-radius:50%;position:absolute;top:-22%;bottom:-22%;left:-22%;right:-22%}.jh-site .plane-link .card{z-index:6;width:250px;color:var(--fg);text-align:left;opacity:0;pointer-events:none;transform-origin:100%;background:#fffefa;border-radius:2px 10px 10px 2px;padding:10px 14px 9px;transition:opacity .18s,transform .3s cubic-bezier(.3,1.4,.5,1);position:absolute;top:62%;right:78%;transform:translate(10px,6px)rotate(-8deg);box-shadow:inset 0 1px rgba(255,255,255,.8),0 10px 26px rgba(25,45,80,.22)}.jh-site .plane-link .card:before{content:"";transform-origin:0;border-top:1.5px solid rgba(60,70,90,.45);width:36px;position:absolute;top:50%;left:100%;transform:rotate(-24deg)}.jh-site .plane-link[data-edge=left] .card{transform-origin:0;border-radius:10px 2px 2px 10px;left:78%;right:auto;transform:translate(-10px,6px)rotate(-8deg)}.jh-site .plane-link[data-edge=left] .card:before{transform-origin:100%;left:auto;right:100%;transform:rotate(24deg)}.jh-site .plane-link:hover .card{opacity:1;transform:rotate(-6deg)}.jh-site .plane-link:focus-visible .card{opacity:1;transform:rotate(-6deg)}.jh-site .card time,.jh-site .card .m{font:500 11px/1.4 var(--mono);letter-spacing:.04em;color:var(--fg-mute);display:block}.jh-site .card .t{-webkit-line-clamp:3;letter-spacing:-.01em;overflow-wrap:anywhere;-webkit-box-orient:vertical;margin:3px 0 5px;font-size:15px;font-weight:600;line-height:1.32;display:-webkit-box;overflow:hidden}.jh-site .card .sum{display:none}@media (hover:none){.jh-site .view-sky .plane-link .card{clip:rect(0 0 0 0);white-space:nowrap;opacity:1;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}}.jh-site .sky>.none{z-index:6;max-width:1080px;margin:0 auto;padding-bottom:40px;position:relative}@media (max-width:640px){.jh-site .sky{--unit:42px;margin-top:-36px;padding-top:36px}.jh-site .formation{height:var(--mh);margin-top:8px}.jh-site .year-mark.current{font-size:64px;top:104px;right:6%}.jh-site .spot{left:calc(var(--mx)*100%);top:var(--my)}.jh-site .year-mark{top:var(--my);font-size:96px}.jh-site .lead{width:160px;top:0;right:-4px}.jh-site .cloud{scale:.6}}.jh-site .view-list.sky{background:0 0;overflow:visible}.jh-site .view-list .clouds,.jh-site .view-list .lead,.jh-site .view-list .year-mark{display:none}.jh-site .view-list .formation{max-width:1080px;margin-top:28px;height:auto!important}.jh-site .view-list .planes{position:static}.jh-site .view-list .spot{border-top:1px solid var(--line);width:auto;height:auto;position:static;translate:none}.jh-site .view-list .spot:first-child{border-top:0}.jh-site .view-list .spot:after,.jh-site .view-list .spot[data-dim]{display:none}.jh-site .view-list .plane-link,.jh-site .sky.js.view-list .spot .plane-link{opacity:1;border-radius:3px;grid-template-columns:40px 1fr;align-items:center;gap:14px;width:auto;height:auto;padding:9px 0;animation:none;display:grid}.jh-site .view-list .bob{width:30px;height:30px;animation:none;position:relative}.jh-site .view-list .plane-link.read .craft:after{display:none}.jh-site .view-list .plane-link .card{clip:auto;white-space:normal;opacity:1;width:auto;height:auto;box-shadow:none;background:0 0;grid-template-columns:150px 1fr auto;align-items:baseline;gap:14px;margin:0;padding:0;display:grid;position:static;overflow:visible;transform:none}.jh-site .view-list .plane-link .card:before{display:none}.jh-site .view-list .plane-link .card .t{-webkit-line-clamp:unset;margin:0;font-size:16px;font-weight:400}.jh-site .view-list .plane-link:hover .card .t{color:var(--accent)}.jh-site .view-list .plane-link .card time,.jh-site .view-list .plane-link .card .m{white-space:nowrap;font-size:13px}.jh-site .view-list .plane-link.read .card .t{color:var(--fg-soft)}@media (max-width:560px){.jh-site .view-list .plane-link .card{grid-template-columns:1fr;gap:2px}.jh-site .view-list .plane-link .card .m{display:none}}.jh-site .post h1{letter-spacing:-.03em;text-wrap:balance;overflow-wrap:anywhere;margin:0;font-size:max(28px,min(4.4vw,42px));font-weight:700;line-height:1.12}.jh-site .post-text{color:var(--fg);overflow-wrap:break-word;margin-top:30px;font-size:18px;line-height:1.7}.jh-site .post-text p,.jh-site .post-text ul,.jh-site .post-text ol,.jh-site .post-text blockquote,.jh-site .post-text figure{margin:0 0 1.1em}.jh-site .post-text h2{letter-spacing:-.02em;margin:1.8em 0 .5em;font-size:22px;font-weight:700;line-height:1.3}.jh-site .post-text h3{letter-spacing:-.01em;margin:1.6em 0 .4em;font-size:19px;font-weight:700;line-height:1.35}.jh-site .post-text h4{letter-spacing:.01em;text-transform:uppercase;color:var(--fg-soft);margin:1.4em 0 .3em;font-size:15px;font-weight:700}.jh-site .post-text strong{font-weight:700}.jh-site .post-text ul{padding-left:1.3em;list-style:outside}.jh-site .post-text ol{padding-left:1.3em;list-style:decimal}.jh-site .post-text li{margin:.3em 0}.jh-site .post-text li::marker{color:var(--fg-mute)}.jh-site .post-text a{color:var(--accent);text-underline-offset:3px;text-decoration:underline;text-decoration-thickness:1px}.jh-site .post-text blockquote{color:var(--fg-soft);border-left:3px solid rgba(0,102,204,.35);padding:2px 0 2px 18px;font-style:italic}.jh-site .post-text blockquote+blockquote{margin-top:-.4em}.jh-site .post-text blockquote p{margin:0}.jh-site .post-text figure{margin:1.6em 0}.jh-site .post-text img{width:auto;max-width:100%;height:auto;max-height:80vh;box-shadow:0 0 0 1px var(--line),0 6px 24px rgba(20,40,80,.08);border-radius:10px;margin:0 auto;display:block}.jh-site .post-text img[style*=--w]{width:max(var(--w),72px)}.jh-site .post-text figure.row{flex-wrap:wrap;justify-content:center;align-items:center;gap:14px 22px;display:flex}.jh-site .post-text figure.row img{-o-object-fit:contain;object-fit:contain;flex:0 auto;max-height:160px;margin:0}.jh-site .post-text figure.row img,.jh-site .post-text img[style*=--w\:1],.jh-site .post-text img[style*=--w\:2]{box-shadow:none;border-radius:6px}.jh-site .post-text hr{border:0;border-top:1px solid var(--line);margin:2em 0}.jh-site .series{background:var(--wash);border-radius:12px;margin-top:24px;padding:14px 16px;font-size:14px}.jh-site .series p{margin:0 0 8px;font-weight:600}.jh-site .series ol{flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none;display:flex}.jh-site .series a,.jh-site .series span{box-shadow:inset 0 0 0 1px var(--line);background:#fff;border-radius:999px;padding:5px 11px;font-size:13px;text-decoration:none;display:inline-block}.jh-site .series a:hover{color:var(--accent)}.jh-site .series [aria-current]{background:var(--accent);color:#fff;box-shadow:none}.jh-site .disclose{border-top:1px solid var(--line);color:var(--fg-mute);margin:28px 0 0;padding-top:14px;font-size:13px}.jh-site .pager{grid-template-columns:1fr 1fr;gap:14px;margin-top:48px;display:grid}.jh-site .pager a{box-shadow:inset 0 0 0 1px var(--line);overflow-wrap:anywhere;background:#fff;border-radius:12px;padding:14px 16px;font-size:15px;line-height:1.4;text-decoration:none;display:block}.jh-site .pager a:hover{box-shadow:inset 0 0 0 1px rgba(0,102,204,.4)}.jh-site .pager small{font:600 11px var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--accent);margin-bottom:4px;display:block}.jh-site .pager .newer{text-align:right}.jh-site .back{margin:28px 0 0;font-size:14px}.jh-site .back a{color:var(--fg-soft)}.jh-site .sheet-backdrop{z-index:50;overscroll-behavior:contain;padding:40px var(--gutter)64px;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:rgba(40,32,20,.34);animation:.3s both backdrop-in;position:fixed;top:0;bottom:0;left:0;right:0;overflow-y:auto}.jh-site .sheet{--from-x:0px;--from-y:0px;background-color:#fffefa;background-image:var(--creases);transform-origin:50% 30%;background-size:100% 100%;border-radius:3px;outline:none;max-width:720px;margin:0 auto;padding:56px max(20px,min(6vw,64px)) 40px;animation:.62s cubic-bezier(.2,.9,.25,1.05) both sheet-unfold;position:relative;box-shadow:inset 0 1px rgba(255,255,255,.8),0 30px 80px rgba(30,20,5,.35),0 2px 6px rgba(30,20,5,.12)}.jh-site .sheet .pager a{background:rgba(255,255,255,.7)}.jh-site .sheet-close{width:40px;height:40px;color:var(--fg-mute);font:300 30px/1 var(--sans);cursor:pointer;background:0 0;border:0;border-radius:50%;position:absolute;top:12px;right:12px}.jh-site .sheet-close:hover{background:var(--wash);color:var(--fg)}.jh-site .sheet-again{text-align:center;margin:32px 0 0}.jh-site .sheet-again button{font:400 23px/1.2 var(--hand);color:var(--accent);cursor:pointer;background:0 0;border:0;padding:6px 10px;transform:rotate(-1deg)}.jh-site .sheet-again button:hover{text-underline-offset:4px;text-decoration:underline}.jh-site .sheet-backdrop.closing{-webkit-backdrop-filter:none;backdrop-filter:none;pointer-events:none}.jh-site .sheet.folding{box-shadow:6px 18px 30px rgba(30,20,5,.25)}.jh-site .sheet.folding>*{opacity:0;transition:opacity .18s}@keyframes backdrop-in{0%{-webkit-backdrop-filter:blur();backdrop-filter:blur();background-color:rgba(40,32,20,0)}}@keyframes sheet-unfold{0%{transform:translate(var(--from-x),var(--from-y))scale(.1)rotate(-40deg);clip-path:polygon(46% 40%,55% 37%,63% 45%,58% 52%,64% 60%,52% 63%,44% 58%,36% 61%,39% 50%,34% 43%);filter:brightness(.88)}45%{transform:translate(calc(var(--from-x)*.15),calc(var(--from-y)*.15))scale(.72)rotate(6deg);clip-path:polygon(8% 4%,50% 9%,94% 2%,90% 50%,97% 97%,50% 91%,4% 98%,10% 50%,2% 30%,6% 12%);filter:brightness(.95)}75%{clip-path:polygon(0 0,50% 0,100% 0,100% 50%,100% 100%,50% 100%,0 100%,0 50%,0 30%,0 10%);filter:none;transform:scale(1.015)rotate(-.6deg)}to{clip-path:polygon(0 0,50% 0,100% 0,100% 50%,100% 100%,50% 100%,0 100%,0 50%,0 30%,0 10%);transform:none}}@media (prefers-reduced-motion:reduce){.jh-site .plane-link .paper,.jh-site .plane-link .card{transition:none}.jh-site .bob,.jh-site .lead,.jh-site .sky.js .spot[data-seen] .plane-link,.jh-site .spot.nudge .paper{animation:none}.jh-site .spot.nudge:before{display:none}.jh-site .sky.js .year-mark{transition:none}.jh-site .sheet{animation:.2s both fade-in}.jh-site .sheet-backdrop{animation:none}@keyframes fade-in{0%{opacity:0}}}@media (max-width:560px){.jh-site main{padding-top:36px}.jh-site .post-text{font-size:17px}.jh-site .pager{grid-template-columns:1fr}.jh-site .pager .newer{text-align:left}.jh-site .sheet-backdrop{padding:12px 8px 40px}.jh-site .sheet{padding:52px 18px 28px}.jh-site .view-list .plane-link .card{grid-template-columns:1fr;gap:2px}.jh-site .view-list .plane-link .card .m{display:none}}
