@font-face{font-family:Atkinson Hyperlegible;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/atkinson-hyperlegible-latin-ext-400-normal.DRk46D-x.woff2)format("woff2"),url(/_astro/atkinson-hyperlegible-latin-ext-400-normal.Bbz-b3yf.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Atkinson Hyperlegible;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/atkinson-hyperlegible-latin-400-normal.BrHNak5F.woff2)format("woff2"),url(/_astro/atkinson-hyperlegible-latin-400-normal.BbWidj28.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Atkinson Hyperlegible;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/atkinson-hyperlegible-latin-ext-700-normal.BoVPHkS0.woff2)format("woff2"),url(/_astro/atkinson-hyperlegible-latin-ext-700-normal.CKkU2Dpt.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Atkinson Hyperlegible;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/atkinson-hyperlegible-latin-700-normal.GZI4o3u0.woff2)format("woff2"),url(/_astro/atkinson-hyperlegible-latin-700-normal.BK6Glc0m.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Averia Serif Libre;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/averia-serif-libre-latin-400-normal.B48ZlFjk.woff2)format("woff2"),url(/_astro/averia-serif-libre-latin-400-normal.YxHUUm7R.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Averia Serif Libre;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/averia-serif-libre-latin-700-normal.Cs78DjWF.woff2)format("woff2"),url(/_astro/averia-serif-libre-latin-700-normal.CMD-jnEt.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}.lab-body{--wallpaper:#d7e4df;--paper:#fffaf0;--paper-deep:#f3ead7;--ink:#281d25;--plum:#4d1f3f;--plum-dark:#2f1428;--gold:#e7a62f;--blue:#1f4d92;--rule:#8e657f;--soft-rule:#cdb8c4;color:var(--ink);background-color:var(--wallpaper);font-kerning:normal;font-variant-ligatures:common-ligatures contextual;-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;scrollbar-color:var(--plum) var(--wallpaper);margin:0;font-family:Atkinson Hyperlegible,Verdana,sans-serif;font-size:17px;line-height:1.48}.lab-body *{box-sizing:border-box}.lab-body:before{z-index:-1;content:"";opacity:.34;background-image:linear-gradient(45deg,#0000 47%,#4d1f3f29 48% 52%,#0000 53%),linear-gradient(-45deg,#0000 47%,#ffffff9e 48% 52%,#0000 53%);background-size:28px 28px;position:fixed;inset:0}.lab-body ::-moz-selection{color:var(--paper);background:var(--plum)}.lab-body ::selection{color:var(--paper);background:var(--plum)}.lab-body a{color:var(--blue);text-underline-offset:.16em;font-weight:700;text-decoration-thickness:1.5px}.lab-body a:hover{color:var(--plum);background:#fff1a8}.lab-body a:focus-visible,.lab-body summary:focus-visible{outline:3px dotted var(--blue);outline-offset:3px}.skip-link{z-index:100;background:var(--plum-dark);padding:10px 14px;position:fixed;top:8px;left:8px;transform:translateY(-160%);color:var(--paper)!important}.skip-link:focus{transform:translateY(0)}.page-shell{background:var(--paper);border:5px solid var(--plum-dark);width:min(1180px,100% - 32px);margin:28px auto;box-shadow:0 12px 34px #2f142833}.site-banner{min-height:132px;color:var(--paper);background:var(--plum-dark);border-bottom:4px solid var(--gold);flex-direction:column;justify-content:center;padding:24px 34px 20px;display:flex;position:relative;overflow:hidden}.site-banner:after{content:"";border:3px solid #fffaf026;border-radius:50%;width:210px;height:110px;position:absolute;bottom:-43px;right:28px;transform:rotate(-8deg)}.site-banner--project:after{width:300px;transform:rotate(8deg)}.site-title{z-index:1;letter-spacing:-.035em;width:fit-content;font-family:Averia Serif Libre,Georgia,serif;font-size:clamp(2.5rem,7vw,4.75rem);font-weight:700;line-height:.92;text-decoration:none;position:relative;color:var(--paper)!important;background:0 0!important}.site-banner p{z-index:1;color:#f2dcae;margin:12px 0 0;font-size:1rem;position:relative}.site-nav{border-bottom:3px solid var(--plum-dark);background:#6b2d57;flex-wrap:wrap;justify-content:center;gap:2px;min-height:52px;padding:0 16px;display:flex}.site-nav a{min-height:49px;color:var(--paper);text-underline-offset:.24em;background:0 0;align-items:center;padding:0 12px;font-family:Averia Serif Libre,Georgia,serif;font-size:1rem;text-decoration:underline;display:inline-flex}.site-nav a:hover{color:var(--plum-dark);background:var(--gold)}.window{background:var(--paper);border:2px solid var(--rule);min-width:0}.window>h2,.window>h1{color:var(--paper);background:var(--plum);border-bottom:2px solid var(--plum-dark);text-align:center;margin:0;padding:8px 12px 7px;font-family:Averia Serif Libre,Georgia,serif;font-weight:700;line-height:1.05}.window>h1{padding-block:11px 9px;font-size:clamp(1.8rem,4vw,2.65rem)}.window>h2{font-size:1.35rem}.window p,.window ul,.window ol{overflow-wrap:anywhere}.portfolio-grid{grid-template-columns:220px minmax(0,1fr) 230px;align-items:start;gap:12px;padding:16px;display:grid}.portfolio-intro{grid-column:2}.portfolio-rail{grid-area:1/1/span 2}.portfolio-work{grid-area:2/2}.portfolio-links{grid-area:1/3/span 2}.portfolio-rail,.portfolio-work,.portfolio-links{gap:12px;min-width:0;display:grid}.welcome-copy{padding:20px 22px 8px}.welcome-copy p{max-width:68ch;margin:0 0 14px}.welcome-note{background:#fff1b8;border:1px dashed #976719;margin:0 22px 22px;padding:14px 16px;font-family:Averia Serif Libre,Georgia,serif;font-size:1.02rem}.about-window{text-align:center}.about-window p{text-align:left;margin:0;padding:0 13px 14px}.pixel-brenden{width:min(170px,100% - 34px);height:auto;image-rendering:pixelated;border:3px double var(--plum);background:#d9e9ff;margin:15px auto 13px;display:block}.plain-list{margin:0;padding:14px 18px 16px 34px}.plain-list li+li{margin-top:7px}.portfolio-section>h2{text-align:left}.portfolio-feature{border:2px solid var(--plum);background:#edf3ef;grid-template-columns:minmax(0,1fr) 180px;align-items:stretch;margin:18px;display:grid}.portfolio-feature>div{align-self:center;padding:20px}.portfolio-feature>img{-o-object-fit:cover;object-fit:cover;border-left:2px solid var(--plum);width:100%;height:100%;min-height:210px;display:block}.portfolio-feature--tumble{grid-template-columns:minmax(0,1.15fr) minmax(220px,.85fr)}.portfolio-feature--tumble>img{border-right:2px solid var(--plum);border-left:0;order:1}.portfolio-feature--tumble>div{order:2}.portfolio-feature--cod4>img{-o-object-fit:contain;object-fit:contain;background:#cbd872}.portfolio-feature h3,.project-entry h3,.gallery-project h3{margin:5px 0 8px;font-family:Averia Serif Libre,Georgia,serif;line-height:1.08}.portfolio-feature h3{font-size:1.65rem}.portfolio-feature p,.project-entry p,.gallery-project p{margin:0}.project-kind{color:#6d435d;font-size:.94rem;font-weight:700}.project-actions{flex-wrap:wrap;gap:8px 16px;margin-top:14px;display:flex}.project-list{border-top:1px solid var(--soft-rule)}.project-entry{padding:18px 20px}.project-entry+.project-entry{border-top:1px dashed var(--soft-rule)}.project-entry h3{font-size:1.27rem}.project-entry>a,.offline-label{margin-top:8px;display:inline-block}.offline-label{color:#755c69;font-size:.95rem;font-style:italic}.project-gallery{display:grid}.gallery-project{grid-template-columns:190px minmax(0,1fr);align-items:center;gap:18px;padding:18px;display:grid}.gallery-project+.gallery-project{border-top:1px dashed var(--soft-rule)}.gallery-project__image{border:1px solid var(--rule);background:var(--paper-deep);display:block;overflow:hidden}.gallery-project__image:hover{background:var(--paper-deep)}.gallery-project__image img{-o-object-fit:cover;object-fit:cover;width:100%;height:118px;transition:transform .18s ease-out;display:block}.gallery-project__image:hover img{transform:scale(1.025)}.gallery-project h3{font-size:1.28rem}.button-shelf{grid-template-columns:1fr 1fr;gap:8px;padding:14px;display:grid}.button-shelf a{min-height:42px;color:var(--ink);background:#efe5cf;border:2px outset #ccbda0;align-items:center;gap:6px;padding:5px 7px;font-size:.91rem;line-height:1;text-decoration:none;display:flex}.button-shelf a:hover{color:var(--paper);background:var(--plum);border-style:inset}.button-shelf span{min-width:25px;color:var(--plum);text-align:center;font-family:Averia Serif Libre,Georgia,serif;font-weight:700}.button-shelf a:hover span{color:var(--gold)}.status-key{font-size:.95rem}.tiny-window{padding-bottom:14px}.tiny-window p{margin:0;padding:13px 13px 0;font-size:.95rem}.project-page{padding:26px}.project-hero{border:2px solid var(--plum);background:#edf3ef;grid-template-columns:minmax(0,1.25fr) minmax(280px,.75fr);display:grid}.project-hero>div{align-self:center;padding:clamp(24px,5vw,54px)}.project-hero h1{letter-spacing:-.035em;max-width:12ch;margin:8px 0 18px;font-family:Averia Serif Libre,Georgia,serif;font-size:clamp(2.5rem,6vw,5rem);line-height:.94}.project-lede{max-width:62ch;font-size:1.15rem}.project-hero figure{border-left:2px solid var(--plum);background:#cbd872;place-items:center;min-height:430px;margin:0;display:grid}.project-hero img{-o-object-fit:contain;object-fit:contain;width:100%;height:100%}.project-actions--large{align-items:center;margin-top:24px}.project-actions--large a{align-items:center;min-height:44px;display:inline-flex}.download-project{border:2px solid var(--plum-dark);padding:10px 14px;text-decoration:none;color:var(--paper)!important;background:var(--plum)!important}.download-project:hover{color:var(--plum-dark)!important;background:var(--gold)!important}.engineering-notes{border:2px solid var(--rule);margin-top:22px}.engineering-notes>h2,.project-next>h2{color:var(--paper);background:var(--plum);margin:0;padding:10px 16px;font-family:Averia Serif Libre,Georgia,serif;font-size:1.5rem}.engineering-grid{grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.engineering-grid article{padding:20px}.engineering-grid article+article{border-left:1px dashed var(--soft-rule)}.engineering-grid article:nth-child(4){border-left:0}.engineering-grid article:nth-child(n+4){border-top:1px dashed var(--soft-rule)}.engineering-grid h3,.project-callout h2,.project-next h2{margin:0 0 8px;font-family:Averia Serif Libre,Georgia,serif}.engineering-grid p,.project-callout p,.project-next p{margin:0}.project-callout{background:#fff1b8;border:1px dashed #976719;justify-content:space-between;align-items:center;gap:30px;margin-top:22px;padding:22px;display:flex}.project-next{border:2px solid var(--rule);margin-top:22px}.project-next p{padding:20px}.project-next>h2{margin:0}.unofficial-note{color:#755c69;text-align:center;margin:22px 0 0;padding:14px;font-size:.92rem}.site-footer{min-height:58px;color:var(--paper);background:var(--plum-dark);border-top:4px solid var(--gold);justify-content:space-between;gap:24px;padding:14px 20px;font-size:.93rem;display:flex}.site-footer p{margin:0}.site-footer a{color:#f2dcae}.site-footer a:hover{color:var(--plum-dark);background:var(--gold)}@media (width<=960px){.portfolio-grid{grid-template-columns:210px minmax(0,1fr)}.portfolio-links{grid-area:3/1/auto/-1;grid-template-columns:repeat(2,minmax(0,1fr))}.portfolio-links .tiny-window{grid-column:1/-1}.project-hero{grid-template-columns:minmax(0,1fr) 300px}.engineering-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.engineering-grid article:nth-child(4){border-left:1px dashed var(--soft-rule)}.engineering-grid article:nth-child(odd){border-left:0}.engineering-grid article:nth-child(n+3){border-top:1px dashed var(--soft-rule)}}@media (width<=720px){.lab-body{font-size:16.5px}.page-shell{width:100%;box-shadow:none;border-width:0;margin:0}.site-banner{min-height:118px;padding:22px 18px 18px}.site-title{font-size:clamp(2.55rem,16vw,4rem)}.site-banner p{max-width:36ch}.site-nav{gap:2px 4px;min-height:0;padding:7px 8px}.site-nav a{min-height:44px;padding-inline:10px}.portfolio-grid{grid-template-columns:minmax(0,1fr);padding:10px}.portfolio-rail,.portfolio-work,.portfolio-links{display:contents}.portfolio-intro{order:1;grid-area:auto/1}.portfolio-rail .about-window{order:2}.portfolio-rail .window:nth-child(2){order:3}.portfolio-work,.portfolio-work .portfolio-section:first-child{order:4}.portfolio-work .portfolio-section:nth-child(2){order:5}.portfolio-work .portfolio-section:nth-child(3){order:6}.portfolio-links .window:first-child{order:7}.portfolio-links .window:nth-child(2){order:8}.portfolio-links .tiny-window{order:9}.portfolio-feature,.portfolio-feature--tumble{grid-template-columns:1fr}.portfolio-feature--tumble>img{border-right:0;border-bottom:2px solid var(--plum);order:1}.portfolio-feature--tumble>div{order:2}.portfolio-feature--cod4>img{border-top:2px solid var(--plum);border-left:0;height:220px;min-height:0}.gallery-project{grid-template-columns:1fr}.gallery-project__image img{aspect-ratio:16/8;height:auto}.project-page{padding:12px}.project-hero{grid-template-columns:1fr}.project-hero figure{border-top:2px solid var(--plum);border-left:0;min-height:290px}.project-hero h1{font-size:clamp(2.6rem,13vw,4.5rem)}.engineering-grid{grid-template-columns:1fr}.engineering-grid article,.engineering-grid article:nth-child(n){border-left:0}.engineering-grid article+article{border-top:1px dashed var(--soft-rule)}.project-callout{flex-direction:column;align-items:flex-start}.site-footer{flex-direction:column;gap:5px}}@media (width<=430px){.welcome-copy{padding-inline:16px}.welcome-note{margin-inline:16px}.portfolio-feature{margin:12px}.project-entry{padding-inline:16px}.button-shelf{grid-template-columns:1fr}}@media (prefers-reduced-motion:reduce){.lab-body *{scroll-behavior:auto!important;transition-duration:.01ms!important}}
