body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}html,body{background-color:#fff}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}@font-face{font-family:MSSerif;src:url(/assets/MSSansSerif-Cjxn4tiz.ttf)}@font-face{font-family:Millennium;src:url(/assets/Millennium--2--Wy5N.ttf)}@font-face{font-family:MillenniumBold;src:url(/assets/Millennium-Bold-fhRzYlxH.ttf)}@font-face{font-family:Terminal;src:url(/assets/Terminal-CbV3XFSd.ttf)}*{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}p,h1,h2,h3,h4,h5,h6{margin:0}p{font-family:Millennium,Times New Roman,Times,serif;font-size:18px}p b{font-family:MillenniumBold,Times New Roman,Times,serif}.showcase-header{color:#fff;font-family:lores-15-bold-alt-oakland;font-size:15px}.toolbar-text{color:#000;font-family:lores-15-bold-alt-oakland;font-size:18px}h1{font-family:gastromond,sans-serif;font-size:64px}h2{font-family:MillenniumBold,Times New Roman,Times,serif;font-size:32px}h3{letter-spacing:0;font-family:MillenniumBold,Times New Roman,Times,serif;font-size:24px}h4{letter-spacing:0;font-family:MillenniumBold,Times New Roman,Times,serif;font-size:18px}li{margin-bottom:16px}.blend{mix-blend-mode:screen;background-color:red}:root{--button-highlight:#fff;--button-face:#747474;--button-shadow:gray;--window-frame:#2b2b2b;--surface:silver;--surface-hover:#e9e9e9;--border-field:inset -1px -1px var(--button-highlight), inset 1px 1px var(--button-shadow), inset -2px -2px var(--button-face), inset 2px 2px var(--window-frame);--border-raised-outer:inset -1px -1px var(--window-frame), inset 1px 1px var(--button-highlight);--border-raised-inner:inset -2px -2px var(--button-shadow), inset 2px 2px var(--button-face)}.big-button-container{box-shadow:var(--border-raised-outer), var(--border-raised-inner);cursor:pointer;padding:24px;overflow:hidden}.big-button-container:hover{background-color:var(--surface-hover)}.big-button-container:active{box-shadow:var(--border-raised-inner), var(--border-raised-outer);background-color:var(--surface)}input{box-sizing:border-box;resize:none;width:100%;box-shadow:var(--border-field);border:none;padding:4px 8px;font-family:Millennium,sans-serif;font-size:18px}textarea{box-sizing:border-box;resize:none;width:100%;height:150px;box-shadow:var(--border-field);border:none;padding:4px 8px;font-family:Millennium,sans-serif;font-size:18px}.music-controller-container{box-shadow:var(--border-field)}textarea:focus,textarea:active,input:focus,input:active{background-color:#fbffc4;outline:none}.button-border{box-sizing:border-box;background:var(--surface-hover);box-shadow:var(--border-raised-outer), var(--border-raised-inner);border:none;border-radius:0}.site-button{box-sizing:border-box;background:var(--surface-hover);box-shadow:var(--border-raised-outer), var(--border-raised-inner);color:#000;cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;-khtml-user-select:none;border:none;border-radius:0;padding:4px 12px;font-family:Millennium;font-size:18px;overflow:hidden}.site-button:hover{background-color:var(--surface)}.site-button:active{background-color:var(--button-shadow)}.site-button:disabled{background-color:var(--button-shadow);cursor:not-allowed}.captioned-image{text-align:center;flex-direction:column;align-self:center;align-items:center;width:100%;margin-bottom:32px;display:flex}.captioned-image img{width:100%}.text-block{text-align:justify;flex-direction:column;margin-top:16px;margin-bottom:32px;display:flex}.site-page{display:flex;position:absolute;inset:0;overflow:hidden;transform:translate(0,0)}.site-page-content{flex-direction:column;width:100%;margin-left:300px;padding:32px 64px 64px 16px;display:flex;overflow-y:scroll}.router-link:visited{color:purple}.loading:after{content:"";animation:1s step-end infinite dotty;display:inline-block}@keyframes dotty{0%{content:""}25%{content:"."}50%{content:".."}75%{content:"..."}to{content:""}}@keyframes arrow{0%{opacity:0;transform:scaleY(0)}50%{opacity:1;transform:scale(1)}to{transform:scale(1)}}.arrow-mount{transition:opacity;animation:.2s ease-out forwards arrow}.rainbow-wrapper{-z-animation:rainbow 18s ease infinite;background:linear-gradient(124deg,#ff2400,#e81d1d,#e8b71d,#e3e81d,#1de840,#1ddde8,#2b1de8,#dd00f3,#dd00f3) 0 0/1800% 1800%;animation:18s infinite rainbow}@keyframes rainbow{0%{background-position:0 82%}50%{background-position:100% 19%}to{background-position:0 82%}}.shortcut-border{background-image:url("data:image/svg+xml,%3csvg width='100%25' height='100%25' xmlns='http://www.w3.org/2000/svg'%3e%3crect width='100%25' height='100%25' fill='none' stroke='%23ea3323' stroke-width='2' stroke-dasharray='1%2c1' stroke-dashoffset='0' stroke-linecap='butt'/%3e%3c/svg%3e")}.selected-shortcut-border{background-image:url("data:image/svg+xml,%3csvg width='100%25' height='100%25' xmlns='http://www.w3.org/2000/svg'%3e%3crect width='100%25' height='100%25' fill='none' stroke='%23fff' stroke-width='2' stroke-dasharray='1%2c1' stroke-dashoffset='0' stroke-linecap='butt'/%3e%3c/svg%3e")}.notyf-announcer,.notyf{opacity:0!important}.start-menu-option:hover{cursor:pointer;color:#fff;background-color:#00a}.app-grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,340px),1fr));gap:16px;width:100%;display:grid}.app-card{flex-direction:column;padding:20px}.project-box{align-items:center;margin-bottom:16px;padding:20px}.app-hero{align-items:center;gap:24px}.app-hero-icon{image-rendering:auto;flex-shrink:0;width:112px;height:112px}.platform-badge{background:var(--surface-hover);border:1px solid #000;padding:2px 8px;font-family:MSSerif,sans-serif;font-size:14px}.download-panel{box-shadow:var(--border-raised-outer), var(--border-raised-inner);background:#f4f4f4;flex-direction:column;margin-bottom:16px;padding:20px}.download-button{color:#000;justify-content:center;align-items:center;padding:8px 16px;text-decoration:none;display:inline-flex}.download-panel .download-button{padding:10px 24px;font-size:20px}.command-line{color:#3cff3c;white-space:nowrap;-webkit-user-select:text;user-select:text;background:#000;flex:1;min-width:0;padding:6px 10px;font-size:14px;overflow-x:auto}.feature-grid{text-align:left;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;margin-bottom:32px;display:grid}.feature-card{background:#fff;border:2px solid #000;flex-direction:column;gap:6px;padding:14px}.feature-card p{font-size:16px}.captioned-image>a{justify-content:center;width:100%;display:flex}.app-screenshot{box-sizing:border-box;image-rendering:auto;width:100%;max-width:760px;padding:12px}.project-pager{flex-wrap:wrap;justify-content:space-between;gap:8px;margin-top:16px}.site-page.compact{flex-direction:column}.site-page.compact .site-page-content{box-sizing:border-box;flex:1;min-height:0;margin-left:0;padding:20px 16px 48px}.site-page.compact h1{font-size:44px}.site-page.compact h2{font-size:26px}.site-page.compact h3{font-size:20px}.site-page.compact .text-block{text-align:left}.site-page.compact .header-row{flex-wrap:wrap;column-gap:16px}.site-page.compact .about-row{flex-direction:column}.site-page.compact .about-row>div{margin-top:24px;margin-left:0!important}.site-page.compact .home-name{font-size:52px!important}.site-page.compact .app-hero{gap:16px}.site-page.compact .app-hero-icon{width:72px;height:72px}.site-page.compact .download-panel{padding:16px}.site-page.compact .download-panel .download-button{align-self:stretch}.section-label{text-transform:uppercase;letter-spacing:2px;border-bottom:2px solid #000;margin-top:40px;margin-bottom:16px;padding-bottom:6px}.work-card-image{object-fit:cover;object-position:top;image-rendering:auto;border-bottom:2px solid #000;width:calc(100% + 40px);height:160px;margin:-20px -20px 16px}.xp-entry{border-left:4px solid #000;flex-direction:column;margin-bottom:40px;padding-left:20px}.xp-entry-nested{border-left:2px dashed #555;margin-top:24px;margin-bottom:0;padding-left:16px}.xp-entry li{margin-bottom:10px}.date-badge{background:var(--surface-hover);white-space:nowrap;border:1px solid #000;padding:2px 8px;font-family:MSSerif,sans-serif;font-size:14px}.site-page.compact .xp-entry{padding-left:12px}.site-page.compact .xp-entry-nested{padding-left:10px}.App{width:100%;height:100dvh;image-rendering:pixelated;position:relative;overflow:hidden}html,body{height:100%;margin:0;overflow:hidden}div{display:flex}#root{height:100%}.white{color:#fff}.blinking-cursor{-ms-animation:.65s blink step-end infinite;background-color:#fff;width:.8em;height:.15em;animation:.65s step-end infinite blink}@keyframes blink{0%,to{background-color:#0000}50%{background-color:#fff}}
