@font-face{font-family:Roboto Mono;src:url(/fonts/roboto-mono-latin-400.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap;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:Roboto Mono;src:url(/fonts/roboto-mono-latin-700.woff2)format("woff2");font-weight:700;font-style:normal;font-display:swap;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:Tiltortion;src:url(/fonts/Tiltortion.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}:root{--color-primary:#f66;--color-secondary:#f66;--color-hover:#7b7b7b;--color-background:#2e0901;--color-text:#f66;--paint-border-color:var(--color-text);--title-chip-radius:8px;--font-family-primary:"Roboto Mono", monospace;--font-family-secondary:"Tiltortion", "Courier New", monospace;--font-size-base:16px;--font-size-small:14px;--font-size-large:18px;--spacing-xs:.25rem;--spacing-sm:.5rem;--spacing-md:1rem;--spacing-lg:1.5rem;--spacing-xl:2rem;--transition-fast:.15s ease;--transition-normal:.3s ease;--transition-slow:.5s ease;--z-index-menu:1000;--z-index-overlay:999}*,:before,:after{box-sizing:border-box}html{font-size:var(--font-size-base);scroll-behavior:smooth}html,body{width:100%;height:100%;font-family:var(--font-family-primary);color:var(--color-text);background-color:var(--color-background);margin:0;padding:0;line-height:1.6}:focus-visible{outline:2px solid var(--color-text);outline-offset:3px}.main{min-height:calc(100vh - 2 * var(--spacing-md));margin:var(--spacing-md);padding:var(--spacing-md);box-sizing:border-box;justify-content:flex-start;align-items:flex-start;display:flex;overflow:auto}.page-layout{gap:var(--spacing-md);width:100%;min-height:100%;padding-bottom:var(--spacing-xl);flex-direction:row;align-items:flex-start;display:flex}.content-layout{gap:var(--spacing-md);flex-direction:row;flex:1;align-items:flex-start;width:100%;min-width:0;display:flex;position:relative}.sidebar{gap:var(--spacing-md);flex-direction:column;flex:none;align-items:flex-start;display:flex;position:relative}.ascii-container{margin-top:var(--spacing-xl);margin-right:var(--spacing-md);flex-direction:column;justify-content:flex-start;align-items:flex-start;padding:0;display:flex;position:relative}.slideshow-container{width:75%;position:absolute;top:8.5%;left:17%}.menu-container{width:auto;height:fit-content;padding:0 var(--spacing-md) var(--spacing-md) var(--spacing-md);z-index:10;flex-direction:column;flex:none;justify-content:flex-start;align-items:flex-start;margin:0;display:flex;position:relative}.menu-container a,.nav-home__label{min-block-size:24px;line-height:1.6}.menu-container p{margin:0}.nav-home{margin:0;display:grid}.nav-home__label{grid-area:1/1;justify-self:start;margin:0}.nav-home__label[inert]{visibility:hidden}.ascii{white-space:pre;height:fit-content;font-family:var(--font-family-primary);font-size:var(--font-size-base);margin:0;padding:0;line-height:1.2;overflow:visible}.ascii-container p,.ascii-container div,.ascii-container ul,.ascii-container li{margin:var(--spacing-sm) 0;font-family:var(--font-family-primary);font-size:var(--font-size-base);line-height:1.6}.ascii-container ul{padding-left:var(--spacing-lg);list-style-type:disc}.ascii-container b{font-weight:700;font-size:var(--font-size-large);margin-bottom:var(--spacing-md)}.ascii-container>b{background-color:var(--color-text);color:var(--color-background);margin-bottom:var(--spacing-md);border-radius:var(--title-chip-radius);flex-shrink:0;align-self:flex-start;max-width:100%;padding:.1rem .45rem;display:inline-block;position:relative;overflow:visible}.ascii-container>b a{color:inherit}.video-description-wrapper{gap:var(--spacing-lg);margin:var(--spacing-md) 0;flex-direction:row;align-items:flex-start;width:100%;display:flex}.youtube-video-container{width:50%;min-width:250px;max-width:100%;height:300px;box-shadow:none;border:none;flex-shrink:1;margin:0;display:block;position:relative;overflow:hidden}.video-description{flex:1;min-width:0;margin:0}.dungeon-sim-page .dungeon-sim-media-row{align-items:flex-start;width:100%;max-width:100%;margin-top:0;margin-left:0}.dungeon-sim-page .dungeon-sim-media-row .youtube-video-container{height:352px;margin-left:0;padding-left:0}.dungeon-sim-page .youtube-video-container img{object-fit:contain;object-position:left center;width:100%;height:100%;display:block}.project-still-image .video-description-wrapper{align-items:flex-start;gap:var(--spacing-md);width:100%;max-width:100%;margin-left:0}.project-still-image .youtube-video-container{aspect-ratio:16/9;flex:0 0 50%;width:50%;min-width:250px;max-width:50%;height:auto;min-height:320px}.project-still-image .youtube-video-container img{object-fit:contain;object-position:left center;width:100%;height:100%;min-height:0;display:block}.project-media-stack{align-items:stretch;gap:var(--spacing-md);flex-direction:column;flex:0 0 50%;width:50%;min-width:250px;max-width:50%;margin:0;display:flex}.project-still-image .project-media-stack .youtube-video-container{flex:none;width:100%;max-width:100%;margin:0}.project-static-image{width:100%;height:auto;display:block}.project-still-image .video-description{flex:1 1 0;min-width:0;margin-top:0;margin-bottom:0;padding:0}.youtube-video-container iframe{width:100%;height:100%;box-shadow:none;border:none;position:relative;visibility:visible!important;opacity:1!important;display:block!important}.youtube-video-container iframe:focus,.youtube-video-container iframe:active{box-shadow:none;border:none}button.youtube-video-container{font:inherit;color:var(--color-text);text-align:start;cursor:pointer;background:0 0;padding:0;font-weight:400}button.youtube-video-container img,.youtube-video-container video{object-fit:cover;width:100%;height:100%;display:block}.youtube-video-container video{object-fit:contain}.youtube-poster__label{border:2px solid var(--color-text);background:var(--color-background);width:fit-content;max-width:100%;color:var(--color-text);font-family:var(--font-family-primary);font-size:var(--font-size-base);padding:.35rem .6rem;position:absolute;bottom:0;left:0}.youtube-video-container:focus-visible,.youtube-video-container:focus-within{outline-offset:3px}.slideshow{align-items:center;gap:var(--spacing-xs);width:100%;height:100%;display:flex}.slideshow__control{border:1px solid var(--color-text);min-block-size:24px;min-inline-size:24px;color:var(--color-text);font-family:var(--font-family-primary);cursor:pointer;background:0 0;flex:none;padding:0 .35rem;font-size:1.25rem;line-height:1}.slideshow img{object-fit:contain;object-position:left center;flex:auto;width:100%;min-width:0;height:100%}.ascii-container>h1.cv-section-header-label,.ascii-container h2.cv-section-header-label{margin:0 0 var(--spacing-sm)}.video-description p:first-child{margin-top:0}.video-description p:last-child{margin-bottom:0}.photo-reel-container{width:50%;min-width:250px;max-width:100%;height:300px;box-shadow:none;border:none;flex-shrink:1;margin:0;display:block;position:relative;overflow:hidden}.photo-reel{align-items:stretch;gap:var(--spacing-sm);scroll-snap-type:x mandatory;scroll-behavior:smooth;scrollbar-width:thin;flex-direction:row;width:100%;height:100%;display:flex;overflow:auto hidden}.photo-reel img{object-fit:contain;object-position:center;scroll-snap-align:start;width:auto;max-width:min(90vw,520px);height:100%;box-shadow:none;border:none;flex:none}.youtube-video-container .ascii-video-wrapper,.youtube-video-container .ascii-border{display:none!important}.menu-content{padding:var(--spacing-md);white-space:pre;font-family:var(--font-family-primary);font-size:var(--font-size-base);text-align:left;font-variant-numeric:tabular-nums;letter-spacing:0;margin:0;line-height:1.2}.menu-content a{margin:0;display:inline}.header-container{padding:var(--spacing-md);z-index:10;justify-content:flex-start;align-items:center;width:auto;height:auto;display:flex;position:relative}.header-container h1,.header-container .site-name{font-family:"Tiltortion", var(--font-family-secondary);color:var(--color-primary);z-index:1;margin:0;font-size:3rem;font-weight:400;line-height:.9;position:relative}a{color:var(--color-secondary);-webkit-text-decoration:underline var(--color-secondary);text-decoration:underline var(--color-secondary);font-style:italic}a:hover{color:var(--color-hover);-webkit-text-decoration:underline var(--color-hover);text-decoration:underline var(--color-hover)}.hidden{display:none!important}.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}.ascii-container .sr-only{margin:-1px}.smoke-control{z-index:1002;top:calc(var(--spacing-md) * 2);right:calc(var(--spacing-md) * 2);background:var(--color-background);min-block-size:24px;color:var(--color-text);font-family:var(--font-family-primary);font-size:var(--font-size-base);cursor:pointer;border:none;margin:0;padding:.7rem .95rem;font-style:italic;text-decoration:none;position:fixed;overflow:visible}.smoke-control--beside{top:calc(var(--spacing-md) * 2);bottom:auto}@media (width<=400px){.smoke-control:not(.smoke-control--beside){top:auto;bottom:calc(var(--spacing-md) * 2)}}.smoke-control--corner{top:auto;bottom:calc(var(--spacing-md) * 2)}.skip-link:focus{top:var(--spacing-sm);left:var(--spacing-sm);z-index:1001;clip:auto;white-space:normal;background-color:var(--color-background);width:auto;height:auto;color:var(--color-text);min-block-size:24px;margin:0;padding:.4rem .75rem;position:fixed;overflow:visible}@keyframes blink{0%,to{color:var(--color-primary)}50%{color:var(--color-hover)}}@keyframes scroll{0%{transform:translate(0)}to{transform:translate(-100%)}}@keyframes smoke{0%{transform:translateY(0)}to{transform:translateY(-15px)}}@media (width<=1000px){.video-description-wrapper{gap:var(--spacing-md);flex-direction:column;align-items:flex-start}.youtube-video-container{width:100%;min-width:0;margin-bottom:0}.project-still-image .youtube-video-container{flex:none;width:100%;min-width:0;max-width:100%;min-height:0}.project-media-stack{flex:none;width:100%;min-width:0;max-width:100%}.photo-reel-container{width:100%;min-width:0;margin-bottom:0}.video-description{align-self:stretch;width:100%}}@media (width<=800px){:root{--font-size-base:14px}.main{height:calc(100vh - 2 * var(--spacing-md));min-height:calc(100vh - 2 * var(--spacing-md));max-height:calc(100vh - 2 * var(--spacing-md));overflow:auto hidden}.page-layout{gap:var(--spacing-sm);box-sizing:border-box;flex-direction:column;height:100%;min-height:100%;display:flex}.content-layout{gap:var(--spacing-sm);flex-direction:column;position:relative}.sidebar{gap:var(--spacing-sm);flex-direction:column;flex:none;width:100%}.ascii-container{box-sizing:border-box;z-index:1;margin:0 0 var(--spacing-md) 0;flex:auto;position:relative;inset:auto;overflow:auto;width:100%!important;min-width:0!important;max-width:100%!important;height:100%!important;min-height:0!important;max-height:100%!important}.ascii-container>*{flex-shrink:0}.ascii{box-sizing:border-box;width:100%;min-width:0;max-width:100%;font-size:min(var(--font-size-base), 3vw);flex-shrink:1;overflow-x:auto}.slideshow-container{z-index:1;width:90%;max-width:500px;position:absolute;top:15%;left:5%}.video-description-wrapper{gap:var(--spacing-md);flex-direction:column;align-items:flex-start}.youtube-video-container,.photo-reel-container{width:100%;min-width:0;margin-bottom:0}.video-description{align-self:stretch;width:100%}.menu-container{width:100%;height:auto;padding:var(--spacing-sm);z-index:10;flex:none;margin-bottom:0;margin-right:0;position:relative}.header-container h1,.header-container .site-name{font-size:3rem;line-height:.85}}@media (width<=480px){:root{--font-size-base:12px}.menu-container h1{margin-bottom:var(--spacing-md);font-size:1.8rem;line-height:.8}.slideshow-container{z-index:1;width:95%;max-width:400px;position:absolute;top:20%;left:2.5%}.video-description-wrapper{gap:var(--spacing-md);flex-direction:column;align-items:flex-start}.youtube-video-container,.photo-reel-container{width:100%;min-width:0;height:250px;margin-bottom:0}.video-description{align-self:stretch;width:100%}}@media (prefers-contrast:more),(prefers-contrast:high){:root{--color-primary:#fff;--color-secondary:#fff;--color-text:#fff;--color-hover:#fff;--paint-border-color:#fff}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.blinking-link{animation:none}}.cv-content{max-width:1200px;margin:0}.cv-header{text-align:left;margin:0}.page-layout--cv .ascii-container>.cv-content,.page-layout--cv .cv-content>.cv-table-container,.page-layout--cv .cv-table-container>.cv-header,.page-layout--project .ascii-container>.projects-index{margin-top:0}.cv-header p{line-height:1.6}.cv-header p:first-child{margin-top:0;margin-bottom:var(--spacing-xl)}@media (width>=801px){.page-layout--cv .ascii-container,.page-layout--project .ascii-container{margin-top:calc(2 * var(--spacing-md) + 3rem * .9 + var(--spacing-md))}}.cv-table-container{margin:0}.cv-table{border-collapse:collapse;width:100%;font-family:var(--font-family-primary);font-size:var(--font-size-base);line-height:1.6}.cv-table th,.cv-table td{padding:var(--spacing-sm) var(--spacing-sm);text-align:left;vertical-align:top}.cv-table th{font-weight:700;font-size:var(--font-size-large);padding:var(--spacing-xs)}.ascii-container .cv-section:not(:last-child){margin-bottom:var(--spacing-lg)}.ascii-container .cv-section>.section-content{margin-top:0}.cv-table .section-header th{padding:var(--spacing-xs);color:inherit;vertical-align:top;background:0 0;border:none;margin-bottom:0;font-weight:400;text-decoration:none}.cv-section>.cv-table .section-header th{padding-bottom:0}.cv-section-header-label{font-weight:700;font-size:var(--font-size-large);background-color:var(--color-text);color:var(--color-background);border-radius:var(--title-chip-radius);box-sizing:border-box;overflow-wrap:break-word;max-width:100%;padding:.1rem .45rem;display:inline-block;position:relative;overflow:visible}.cv-section>.section-content{padding:0 var(--spacing-xs) var(--spacing-xs)}.cv-section>.section-content tr:last-child td{border-bottom:none}.cv-table .date{white-space:normal;width:22%;min-width:0}.cv-table .description{padding-left:var(--spacing-lg);padding-right:var(--spacing-lg)}.cv-table .location{text-align:right;white-space:normal;overflow-wrap:anywhere;width:28%;min-width:0;font-style:italic}.cv-table .location.education-location{width:32%}@media (width<=800px){.cv-content,.cv-table-container,.cv-section{width:100%;min-width:0;max-width:100%}.cv-table{table-layout:fixed}.cv-table .description{overflow-wrap:anywhere}}.cv-table tr:last-child td{border-bottom:none}.projects-index{gap:var(--spacing-lg);flex-direction:column;width:100%;max-width:1200px;display:flex}.project-row{align-items:flex-start;gap:var(--spacing-lg);box-sizing:border-box;flex-direction:row;width:100%;display:flex}.project-row>div,.project-row>a{margin:0}.project-row__preview-link{min-width:0;max-width:25%;color:inherit;outline-offset:4px;flex:0 0 25%;align-self:stretch;font-style:normal;text-decoration:none;display:block}.project-row__preview-link:hover,.project-row__preview-link:focus-visible{color:inherit;text-decoration:none}.project-row__preview-link:hover .project-row__thumb,.project-row__preview-link:focus-visible .project-row__thumb{filter:brightness(1.08)}.project-row__preview-link:focus-visible .project-row__thumb{outline:2px solid var(--color-text);outline-offset:3px}.project-header-link{width:auto;max-width:100%;color:inherit;outline-offset:4px;font-style:normal;text-decoration:none;display:table}.project-header-link:hover,.project-header-link:focus-visible{color:inherit;text-decoration:none}.project-header-link .cv-table{margin:0}.project-header-link:hover .cv-section-header-label,.project-header-link:focus-visible .cv-section-header-label{background-color:var(--color-hover);color:var(--color-background);box-shadow:inset 0 0 0 2px var(--color-hover);filter:none}.project-header-link:focus-visible{outline:2px solid var(--color-text)}.project-row__preview{width:100%;height:100%}.project-row__thumb{aspect-ratio:16/9;object-fit:cover;border-radius:var(--title-chip-radius);width:100%;height:auto;image-rendering:-webkit-optimize-contrast;image-rendering:crisp-edges;display:block}.project-row__thumb--github{object-fit:contain;padding:var(--spacing-md);box-sizing:border-box;background:color-mix(in srgb, var(--color-text) 12%, transparent)}.project-row__body{flex:1 1 0;min-width:0}.project-row__body .cv-table{margin:0}.project-row__body .cv-table .section-header th{padding-left:0;padding-right:0}.ascii-container .project-row__desc{margin:var(--spacing-xs) 0 0 0;font-family:var(--font-family-primary);font-size:var(--font-size-base);padding:0;line-height:1.6}@media (width<=800px){.project-row{flex-direction:column;align-items:stretch}.project-row__preview-link{flex:none;width:100%;max-width:100%}.project-row__thumb{max-height:220px}}.paint-border-canvas{image-rendering:-moz-crisp-edges;image-rendering:-webkit-crisp-edges;image-rendering:pixelated;image-rendering:crisp-edges}.paint-border-canvas--element{box-sizing:border-box}@media print{.paint-border-canvas--element,.menu,.menu-container{display:none!important}.ascii{color:#000;font-size:12pt}.cv-table-container{border:1px solid #000;padding:1rem}.cv-table th,.cv-table td{border-bottom:1px solid #000}.cv-table .section-header th{background:0 0;border-top:2px solid #000;border-bottom:2px solid #000}.cv-section-header-label,.ascii-container>b{color:#fff;background-color:#000}}
