*,:before,:after{box-sizing:border-box}:root{--bg:#000;--fg:#e8e8e8;--muted:#9aa1a9;--accent:#372eaa;--line:#262626;--arrow-gutter:56px;--chrome-inset:16px;--chrome-gap:12px;--chrome-size:34px;--chrome-icon-size:26px}html,body{background:var(--bg);color:var(--fg);margin:0;padding:0;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:16px}a{color:var(--accent);text-underline-offset:3px;text-decoration:underline;text-decoration-thickness:1px}a:hover{color:#fff;text-decoration-style:dotted}.shell{max-width:940px;margin:4rem auto;padding:0 1rem}.block{margin:3rem 0}.kicker{text-transform:lowercase;letter-spacing:.02em;margin:0 0 .75rem;padding:0;font-size:1rem;font-weight:700;line-height:1.2}p{margin:0 0 .85rem;font-weight:400;line-height:1.65}.muted{color:var(--muted)}.inlineLink{margin-left:.25rem}ul{margin:.25rem 0 0;padding:0;list-style:none}.linkList li{padding:.25rem 0}.linkList li:before{content:"› ";color:var(--muted);margin-right:.25rem}.projectList{margin-top:1rem}.projectRow{border-bottom:none;padding:.25rem 0;display:block}.projectTitle{all:unset;cursor:pointer;color:var(--accent);text-underline-offset:3px;text-decoration:underline;text-decoration-thickness:1px}.projectTitle:hover{color:#fff;text-decoration-style:dotted}.projectTitle:focus-visible{outline:1px dashed var(--accent);outline-offset:3px;color:#fff;text-decoration-style:dotted}.leader{height:1px;color:var(--muted);opacity:.75;background-image:radial-gradient(currentColor 1px,#0000 1px);background-position:0;background-repeat:repeat-x;background-size:6px 1px;align-self:center;position:relative}.leader.short{background-size:8px 1px}.meta.role{color:var(--muted)}.meta.year{color:inherit!important}.meta{color:var(--muted);white-space:nowrap;font-size:.975rem}.modalOverlay{z-index:60;background:#000000eb;justify-content:center;align-items:center;padding:.75rem;display:flex;position:fixed;inset:0}.modalInner{--caption-height:2rem;justify-content:center;align-items:center;width:min(1200px,100%);height:min(86vh,860px);display:flex;position:relative;overflow:visible}.closeBtn{color:var(--fg);cursor:pointer;background:0 0;border:none;padding:.25rem .5rem;font-size:1.75rem;line-height:1;transition:opacity .2s}.closeBtn:hover{color:var(--fg);opacity:.75}.frame{--caption-height:2rem;border:1px dotted var(--line);background:var(--line);width:100%;height:100%;padding:0 var(--arrow-gutter) var(--caption-height);box-sizing:border-box;position:relative}.imageWrap{background:0 0;border:none;width:100%;height:100%;min-height:0;position:relative}.outerArrow{top:calc((100% - var(--caption-height)) / 2);color:var(--fg);cursor:pointer;-webkit-user-select:none;user-select:none;z-index:2;background:0 0;border:none;padding:.25rem .5rem;font-size:2rem;line-height:1;transition:opacity .2s;position:absolute;transform:translateY(-50%)}.outerArrow:hover{color:var(--fg);opacity:.75}.outerArrow.left{left:12px}.outerArrow.right{right:12px}.caption{height:var(--caption-height);text-align:center;white-space:nowrap;justify-content:center;align-items:center;padding:0 3rem;line-height:1.2;display:flex;position:absolute;bottom:0;left:0;right:0}.arrow,.arrow.left,.arrow.right{display:none!important}.fsToggle{color:var(--fg);cursor:pointer;-webkit-user-select:none;user-select:none;z-index:2;background:0 0;border:1px dotted #0000;padding:.25rem .35rem;font-size:1rem;line-height:1;transition:opacity .2s;position:absolute;bottom:.35rem;right:.35rem}.fsToggle:hover{color:var(--fg);opacity:.75}.fsToggle:focus-visible{outline:1px dashed var(--accent);outline-offset:3px}:fullscreen .frame{width:100vw;height:100vh;padding:0 0 var(--caption-height)}:fullscreen .outerArrow.left{left:12px}:fullscreen .outerArrow.right{right:12px}.accRow{align-items:baseline;display:flex}.accOpenBtn{all:unset;cursor:pointer;color:var(--fg)}.accOpenBtn:hover{-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.accOpenBtn:focus-visible{outline:1px dashed var(--accent);outline-offset:3px}.accClose{color:#fff;cursor:pointer;background:0 0;border:none;margin-left:.45rem;padding:0 .15rem;font-size:1.1rem;font-weight:700;line-height:1;transform:translateY(1px)}.accClose:hover{color:#fff;text-decoration:none}.accordionPanel{margin-top:.75rem}.block .block{margin:1.25rem 0 .5rem 1rem}.accPrompt{color:var(--fg);margin:.35rem 0 .35rem 1rem;font-weight:700;line-height:1}.accordionPanel.indented{padding-left:1rem}.accordionPanel.indented .projectList{padding-left:.5rem}.spacer-xs{height:.25rem}.footer{margin:4rem 0 2rem}.chrome{z-index:40;-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;display:inline-flex;position:fixed}.nameTL{top:var(--chrome-inset);left:var(--chrome-inset)}.brandName{color:var(--fg);letter-spacing:.02em;cursor:default;background:0 0;border:1px dotted #0000;padding:.25rem .45rem;font-size:1rem;font-weight:800;text-decoration:none}.toggleTR{top:var(--chrome-inset);right:var(--chrome-inset);width:var(--chrome-size);height:var(--chrome-size);cursor:pointer;background:0 0;border:none;padding:0;transition:opacity .2s}.toggleTR:hover{opacity:.75}.toggleTR:focus-visible{outline:1px dashed var(--accent);outline-offset:3px}.toggleTR .shape{width:var(--chrome-icon-size);height:var(--chrome-icon-size);stroke:var(--fg);fill:var(--fg);transition:opacity .2s;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.toggleTR .shape.off{opacity:0;pointer-events:none}.toggleTR .shape.on{opacity:1}.githubTR{top:var(--chrome-inset);right:calc(var(--chrome-inset) + var(--chrome-size) + var(--chrome-gap));width:var(--chrome-size);height:var(--chrome-size);background:0 0;border:1px dotted #0000;padding:0;transition:opacity .2s;bottom:auto}.githubTR:hover{opacity:.75;border-color:#0000}.githubTR:focus-visible{outline:1px dashed var(--accent);outline-offset:3px}.githubTR .shape{width:var(--chrome-icon-size);height:var(--chrome-icon-size);fill:var(--fg)}@media (max-width:640px){:root{--chrome-inset:10px;--chrome-gap:10px;--chrome-size:32px;--chrome-icon-size:24px}}.modalInner>.closeBtn{z-index:3;position:absolute;top:.25rem;left:auto;right:.25rem}@media (max-width:480px){html{font-size:15px}}@media (max-width:360px){html{font-size:14px}}@media (max-width:640px){.shell{max-width:100%;margin:2rem auto;padding:0 .875rem}.block{margin:2rem 0}.kicker{margin-bottom:.6rem}p{line-height:1.55}.projectRow{padding:.25rem 0}.modalOverlay{padding:max(.5rem, env(safe-area-inset-top)) max(.5rem, env(safe-area-inset-right)) max(.5rem, env(safe-area-inset-bottom)) max(.5rem, env(safe-area-inset-left))}.modalInner{width:100vw;height:100dvh}.frame{padding:0 0 var(--caption-height);background:0 0;border:none}.imageWrap{background:var(--line)}.outerArrow.left{left:6px}.outerArrow.right{right:6px}.caption{padding:0 3rem}}@media (hover:none),(pointer:coarse){.outerArrow,.closeBtn,.fsToggle{padding:.5rem .6rem;font-size:1.9rem}.fsToggle{color:#fff;background:#0a0a0aa6;border-color:#ffffff29;font-size:1.1rem}:root[data-theme=light] .fsToggle{color:#111;background:#ffffffc7;border-color:#0000001f;box-shadow:0 1px 3px #0000002e}}@media (max-width:640px),(hover:none),(pointer:coarse){.fsToggle{z-index:4;color:#fff;box-shadow:none;background:#0a0a0aa6;border-color:#0000}.fsToggle:hover{color:#fff;opacity:.75}}@media (max-width:640px){:fullscreen .frame{width:100vw;height:100vh}:fullscreen .outerArrow.left{left:8px}:fullscreen .outerArrow.right{right:8px}}.outerArrow{z-index:2}.closeBtn{z-index:3}.fsToggle{z-index:2}@supports (padding:max(0px)){.modalInner>.closeBtn{top:max(.25rem, env(safe-area-inset-top));right:max(.25rem, env(safe-area-inset-right))}.fsToggle{right:max(.35rem, env(safe-area-inset-right));bottom:max(.35rem, env(safe-area-inset-bottom))}}@media (max-width:640px){.block .block{margin:1rem 0 .4rem .75rem}.accordionPanel.indented{padding-left:.75rem}.accPrompt{margin-left:.75rem}}.outerArrow{opacity:0;transition:opacity .22s}.frame.show-arrows .outerArrow{opacity:1}@media (hover:hover) and (pointer:fine){.frame:hover .outerArrow{opacity:1;transition-delay:0s}.frame:not(:hover) .outerArrow{opacity:0;transition-delay:1s}}.frame.show-arrows .outerArrow:hover,.frame:hover .outerArrow:hover{color:var(--fg);opacity:.75;transition-delay:0s}:root[data-theme=light]{--bg:#fff;--fg:#111;--muted:#606770;--accent:#2d3ae0;--line:#e6e6e6}html,body{transition:background-color .18s,color .18s}
