#root{flex-direction:column;min-height:100dvh;display:flex}.main-content{width:100%;max-width:var(--content-max-width);box-sizing:border-box;padding:var(--space-5) var(--space-4) var(--space-6);flex:1;margin:0 auto}.home-page-container{text-align:center;padding-top:var(--space-5);flex-direction:column;align-items:center;display:flex}.headshot{object-fit:cover;border:3px solid var(--theme-purple);border-radius:50%;width:12em;height:12em;transition:box-shadow .3s}.headshot:hover{box-shadow:0 0 1.5em var(--theme-purple)}.home-page-container h1{margin-top:var(--space-4);margin-bottom:var(--space-2)}.home-headline{margin:0 0 var(--space-3);font-size:var(--text-lg);color:var(--theme-white);text-wrap:balance;font-weight:600}.home-page-text{max-width:34rem;color:var(--theme-muted)}.home-page-text p{margin-bottom:var(--space-3)}.home-page-text p:last-child{margin-bottom:0}.home-actions{justify-content:center;gap:var(--space-3);margin-top:var(--space-4);flex-wrap:wrap;display:flex}.home-divider{margin:var(--space-4) 0;border:none;border-top:1px solid var(--theme-border)}.icon-container{justify-content:center;gap:var(--space-4);margin-top:var(--space-4);flex-wrap:wrap;display:flex}.icon-link{align-items:center;gap:var(--space-1);color:var(--theme-muted);font-size:var(--text-sm);flex-direction:column;transition:color .3s;display:flex}.icon-link:hover{color:var(--theme-white);text-decoration:none}.icon{object-fit:contain;will-change:filter;width:50px;height:50px;transition:filter .3s}.icon-link:hover .icon{filter:drop-shadow(0 0 1em var(--theme-purple))}.disc-toggle{align-items:center;gap:var(--space-1);min-width:44px;min-height:44px;margin-top:var(--space-3);padding:var(--space-1) var(--space-3);border-radius:var(--radius);color:var(--theme-muted);cursor:pointer;background:0 0;border:none;flex-direction:column;transition:color .3s;display:inline-flex}.disc-toggle svg{animation:6s ease-in-out 3s infinite disc-wiggle}.disc-toggle-label{font-size:var(--text-sm);letter-spacing:.05em;font-style:italic}.disc-toggle:hover,.disc-toggle.is-active{color:var(--theme-light-purple)}.disc-toggle:focus-visible{outline:2px solid var(--theme-light-purple);outline-offset:2px}.disc-toggle.is-active svg{animation:none}@keyframes disc-wiggle{0%,14%,to{transform:rotate(0)}3%{transform:rotate(-18deg)}6%{transform:rotate(14deg)}9%{transform:rotate(-10deg)}12%{transform:rotate(6deg)}}@media (prefers-reduced-motion:reduce){.disc-toggle svg{animation:none}}.button{padding:var(--space-2) var(--space-4);border-radius:var(--radius);background-color:var(--theme-purple);color:var(--theme-white);font-weight:600;display:inline-block}.button:hover{background-color:var(--theme-dark-purple);text-decoration:none}.button-secondary{box-shadow:inset 0 0 0 2px var(--theme-purple);background-color:#0000}.button-secondary:hover{background-color:var(--theme-surface)}footer{border-top:1px solid var(--theme-border);background-color:var(--theme-surface);color:var(--theme-muted);text-align:center;padding:var(--space-3) var(--space-4);font-size:var(--text-sm)}footer p{margin:0}footer a{text-decoration:underline}.footer-build{margin-top:var(--space-1);font-size:.75rem}@media (width<=768px){.headshot{width:10em;height:10em}.icon{width:36px;height:36px}}nav{z-index:1000;background-color:var(--theme-surface);border-bottom:1px solid var(--theme-border);padding:0 var(--space-4);justify-content:space-between;align-items:center;display:flex;position:sticky;top:0}.wordmark{color:var(--theme-white);font-weight:700;font-size:var(--text-lg);padding:var(--space-2) 0}.wordmark:hover{color:var(--theme-light-purple);text-decoration:none}nav ul{gap:var(--space-1);margin:0;padding:0;list-style-type:none;display:flex}nav ul a{padding:var(--space-3) var(--space-3);color:var(--theme-muted);text-decoration:none;display:block}nav ul a:hover{color:var(--theme-white);text-decoration:none}nav ul a.active{color:var(--theme-white);box-shadow:inset 0 -3px 0 var(--theme-purple);font-weight:600}.menu-toggle{min-width:44px;min-height:44px;color:var(--theme-white);padding:var(--space-2);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;font-size:1.5rem;line-height:1;display:none}@media (width<=768px){nav{flex-wrap:wrap}.menu-toggle{display:flex}nav ul{width:100%;padding-bottom:var(--space-2);flex-direction:column;display:none}nav ul.show{display:flex}nav ul a{padding:var(--space-3) var(--space-2)}nav ul a.active{box-shadow:inset 3px 0 0 var(--theme-purple)}}.dgo{--dgo-throw-duration:2.8s;--dgo-orbit-duration:18s;width:100%;max-width:560px;height:calc(280px * var(--dgo-s,1) + 52px);margin:var(--space-5) auto 0;color:var(--theme-white);position:relative;overflow:hidden}.dgo-stage{width:560px;height:280px;transform:scale(var(--dgo-s,1));transform-origin:top;margin-left:-280px;position:absolute;top:0;left:50%}.dgo-floor{background:repeating-linear-gradient(90deg, var(--theme-purple) 0 1px, transparent 1px 40px), repeating-linear-gradient(0deg, var(--theme-purple) 0 1px, transparent 1px 40px);opacity:.35;transform-origin:50% 100%;height:150px;animation:2.4s linear infinite dgo-floor;position:absolute;bottom:0;left:-60px;right:-60px;transform:perspective(240px)rotateX(64deg);mask-image:radial-gradient(60% 100% at 50% 100%,#000 30%,#0000 75%)}.dgo-props{width:560px;height:280px;filter:drop-shadow(0 0 5px var(--theme-purple));position:absolute;inset:0;overflow:visible}.dgo-props-lines{fill:none;stroke:var(--theme-light-purple);stroke-width:2px;stroke-linecap:round;stroke-linejoin:round}.dgo-tee{fill:var(--theme-purple);fill-opacity:.35}.dgo-chains{transform-box:fill-box;transform-origin:50% 0}.dgo-tray-front{fill:var(--theme-surface);fill-opacity:.75;stroke:var(--theme-light-purple);stroke-width:2px;stroke-linejoin:round}.dgo-scene{perspective:900px;width:240px;height:240px;transform-style:preserve-3d;position:absolute;top:8px;left:160px}.dgo-glow{background:radial-gradient(circle, var(--theme-purple), transparent 65%);opacity:.35;border-radius:50%;width:200px;height:200px;margin:-100px;animation:4s ease-in-out infinite dgo-pulse;position:absolute;top:50%;left:50%}.dgo-disc{width:104px;height:104px;filter:drop-shadow(0 0 12px var(--theme-purple));position:absolute;top:68px;left:68px}.dgo-disc svg{width:100%;height:100%;animation:4s linear infinite dgo-rot;display:block}.dgo-disc:after{content:"";background:radial-gradient(circle at 32% 26%,#fff6,#0000 38%);border-radius:50%;position:absolute;inset:0}.dgo-disc-lines{fill:none;stroke:var(--theme-white)}.dgo-disc-text{fill:var(--theme-white);font-family:Inter,system-ui,sans-serif;font-size:7px;font-weight:800}.dgo-plane{transform-style:preserve-3d;position:absolute;inset:0;transform:rotateX(72deg)}.dgo-ring{border:1.5px solid var(--theme-light-purple);opacity:.6;box-shadow:0 0 10px var(--theme-purple);border-radius:50%;position:absolute;inset:12px}.dgo-arm{transform-style:preserve-3d;transform:rotateZ(var(--a));animation:dgo-orbit var(--dgo-orbit-duration) linear infinite;position:absolute;inset:0}.dgo-sat{background:var(--theme-surface);border:1.5px solid var(--theme-purple);width:42px;height:42px;box-shadow:0 0 8px -2px var(--theme-purple);transform:rotateZ(calc(var(--a) * -1)) rotateX(-72deg);animation:dgo-face var(--dgo-orbit-duration) linear infinite;border-radius:50%;place-items:center;margin:-21px 0 0 -21px;display:grid;position:absolute;top:12px;left:50%}.dgo-sat img{object-fit:contain;width:26px;height:26px;display:block}.dgo-flash{background:radial-gradient(circle at 86% 55%, var(--theme-white), var(--theme-purple) 30%, transparent 60%);opacity:0;pointer-events:none;position:absolute;inset:0}.dgo-ace,.dgo-missed{text-align:center;letter-spacing:2px;text-shadow:-3px 0 var(--theme-light-purple), 3px 0 var(--theme-purple), 0 0 18px var(--theme-purple);opacity:0;pointer-events:none;font:italic 900 46px/1 Inter,system-ui,sans-serif;position:absolute;top:40px;left:0;right:0}.dgo-ace small,.dgo-missed small{margin:var(--space-2) 0;letter-spacing:5px;color:var(--theme-light-purple);text-shadow:none;font:700 11px Inter,system-ui,sans-serif;display:block}.dgo-missed{font-size:34px;line-height:1}.dgo-ui{justify-content:center;align-items:center;gap:var(--space-3);height:44px;display:flex;position:absolute;bottom:0;left:0;right:0}.dgo-throw{border:2px solid var(--theme-purple);min-height:40px;color:var(--theme-white);letter-spacing:3px;cursor:pointer;box-shadow:0 0 10px var(--theme-purple);background:0 0;border-radius:999px;padding:0 22px;font:700 12px Inter,system-ui,sans-serif;transition:background-color .2s,opacity .2s}.dgo-throw:hover,.dgo-throw:focus-visible{background-color:var(--theme-purple);outline:none}.dgo-throw[aria-disabled=true]{opacity:.4;cursor:default}.dgo-aces{letter-spacing:2px;color:var(--theme-muted);font-variant-numeric:tabular-nums;font:600 12px Inter,system-ui,sans-serif}.dgo-aces b{color:var(--theme-white)}.dgo.is-miss{--dgo-x2:340px;--dgo-y2:20px}.dgo.is-miss .dgo-props:first-of-type{z-index:1}.dgo.is-throwing .dgo-plane{animation:dgo-collapse var(--dgo-throw-duration) ease-in-out}.dgo.is-throwing .dgo-glow{animation:dgo-dim var(--dgo-throw-duration) ease-in-out}.dgo.is-throwing .dgo-disc{animation:dgo-throw var(--dgo-throw-duration) linear}.dgo.is-throwing .dgo-disc svg{animation-duration:.35s}.dgo.is-ace .dgo-chains{animation:dgo-chain var(--dgo-throw-duration) linear}.dgo.is-ace .dgo-flash{animation:dgo-flash var(--dgo-throw-duration) linear}.dgo.is-miss .dgo-missed{animation:dgo-missed var(--dgo-throw-duration) linear}.dgo.is-ace .dgo-ace{animation:dgo-ace var(--dgo-throw-duration) linear}.dgo.is-paused *,.dgo.is-paused :after{animation-play-state:paused!important}@media (prefers-reduced-motion:reduce){.dgo-floor,.dgo-glow,.dgo-disc svg,.dgo-arm,.dgo-sat{animation:none!important}}@keyframes dgo-floor{to{background-position:0 0,0 40px}}@keyframes dgo-pulse{50%{opacity:.22;transform:scale(1.1)}}@keyframes dgo-rot{to{transform:rotate(360deg)}}@keyframes dgo-orbit{0%{transform:rotateZ(var(--a))}to{transform:rotateZ(calc(var(--a) + 360deg))}}@keyframes dgo-face{0%{transform:rotateZ(calc(var(--a) * -1)) rotateX(-72deg)}to{transform:rotateZ(calc(var(--a) * -1 - 360deg)) rotateX(-72deg)}}@keyframes dgo-collapse{0%{opacity:1;transform:rotateX(72deg)scale(1)}12%,86%{opacity:0;transform:rotateX(72deg)scale(.3)}to{opacity:1;transform:rotateX(72deg)scale(1)}}@keyframes dgo-dim{0%,to{opacity:.35}12%,86%{opacity:0}}@keyframes dgo-throw{0%{opacity:1;animation-timing-function:ease-in-out;transform:translate(0)scale(1)rotateX(0)}14%{transform:translate(-208px,86px)scale(.36)rotateX(0)}22%{animation-timing-function:ease-in;transform:translate(-222px,90px)scale(.36)rotateX(55deg)}26%{animation-timing-function:linear;transform:translate(-208px,86px)scale(.36)rotateX(62deg)}33%{transform:translate(-110px,64px)scale(.36)rotateX(62deg)}40%{transform:translate(-10px,47px)scale(.36)rotateX(62deg)}47%{transform:translate(92px,35px)scale(.36)rotateX(62deg)}54%{transform:translate(var(--dgo-x1,202px), var(--dgo-y1,30px)) scale(.36) rotateX(62deg);animation-timing-function:ease-in}61%{transform:translate(var(--dgo-x2,202px), var(--dgo-y2,68px)) scale(.36) rotateX(76deg)}82%{transform:translate(var(--dgo-x2,202px), var(--dgo-y2,68px)) scale(.36) rotateX(76deg);opacity:1}88%{transform:translate(var(--dgo-x2,202px), var(--dgo-y2,68px)) scale(.36) rotateX(76deg);opacity:0}90%{opacity:0;animation-timing-function:ease-out;transform:translate(0)scale(.2)rotateX(0)}to{opacity:1;transform:translate(0)scale(1)rotateX(0)}}@keyframes dgo-chain{0%,54%{transform:rotate(0)}57%{transform:rotate(8deg)}60%{transform:rotate(-6deg)}63%{transform:rotate(4deg)}66%{transform:rotate(-2deg)}69%,to{transform:rotate(0)}}@keyframes dgo-flash{0%,53.5%{opacity:0}55%{opacity:.5}64%,to{opacity:0}}@keyframes dgo-ace{0%,55%{opacity:0;transform:scale(.4)}59%{opacity:1;transform:scale(1.2)}62%{transform:scale(1)translate(0)}64%{transform:translate(-3px)}65%{transform:translate(3px)}66%,82%{opacity:1;transform:scale(1)translate(0)}90%,to{opacity:0;transform:scale(1.08)}}@keyframes dgo-missed{0%,56%{opacity:0;transform:scale(.8)}62%,82%{opacity:1;transform:scale(1)}90%,to{opacity:0;transform:scale(1)}}.case-study-list{gap:var(--space-4);margin-top:var(--space-4);padding:0;list-style:none;display:grid}.case-study-card{background-color:var(--theme-surface);border:1px solid var(--theme-border);border-radius:var(--radius);padding:var(--space-4);transition:border-color .2s}.case-study-card:hover{border-color:var(--theme-purple)}.case-study-card h3{margin:0 0 var(--space-2)}.case-study-card p{margin:0 0 var(--space-3);color:var(--theme-muted)}.tag-list{gap:var(--space-2);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.tag-list li{padding:var(--space-1) var(--space-2);border:1px solid var(--theme-border);border-radius:var(--radius);font-size:var(--text-sm);color:var(--theme-muted)}.case-study{max-width:42rem}.case-study .tag-list{margin-bottom:var(--space-4)}.case-study section h2{margin-bottom:var(--space-2)}.project-grid{gap:var(--space-4);margin-top:var(--space-5);grid-template-columns:repeat(auto-fill,minmax(min(280px,100%),1fr));padding:0;list-style:none;display:grid}.project-card{background-color:var(--theme-surface);border:1px solid var(--theme-border);border-radius:var(--radius);padding:var(--space-4);flex-direction:column;transition:border-color .2s;display:flex}.project-card:hover{border-color:var(--theme-purple)}.project-card h3{margin:0 0 var(--space-2)}.project-card p{margin:0 0 var(--space-3);color:var(--theme-muted);flex:1}.error-boundary{text-align:center;max-width:34rem;padding:var(--space-5) var(--space-4);flex-direction:column;align-items:center;margin:0 auto;display:flex}.error-boundary-title{margin-bottom:var(--space-3)}.error-boundary-text{color:var(--theme-muted);margin-bottom:var(--space-4)}.error-boundary-actions{justify-content:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.error-boundary-actions .button{cursor:pointer;font-size:var(--text-base);border:none;font-family:inherit}:root{--theme-purple:#646cff;--theme-dark-purple:#363fdb;--theme-light-purple:#9aa0ff;--theme-black:#2d2d2a;--theme-surface:#383836;--theme-border:#4c4c48;--theme-white:#fbfff1;--theme-muted:#b8bcb0;--space-1:.25rem;--space-2:.5rem;--space-3:1rem;--space-4:1.5rem;--space-5:2.5rem;--space-6:4rem;--text-sm:.875rem;--text-base:1rem;--text-lg:1.25rem;--text-xl:1.75rem;--text-2xl:2.5rem;--radius:8px;--content-max-width:56rem;color-scheme:dark}*,:before,:after{box-sizing:border-box}body{min-width:320px;min-height:100dvh;color:var(--theme-white);background-color:var(--theme-black);overflow-wrap:break-word;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;padding:0;font-family:Inter,system-ui,Avenir,Helvetica,Arial,sans-serif;font-weight:400;line-height:1.6}img{max-width:100%}h1{font-size:var(--text-2xl);margin:0 0 var(--space-4);line-height:1.15}h2{font-size:var(--text-xl);margin:var(--space-5) 0 var(--space-3);line-height:1.25}h3{font-size:var(--text-lg);margin:0 0 var(--space-2);line-height:1.3}p{margin:0 0 var(--space-3)}a{color:var(--theme-light-purple);text-decoration:none}a:hover{text-decoration:underline}a:focus-visible,button:focus-visible,[tabindex]:focus-visible{outline:3px solid var(--theme-light-purple);outline-offset:2px;border-radius:var(--radius)}main:focus-visible{outline:none}.skip-link{left:var(--space-2);z-index:2000;padding:var(--space-2) var(--space-3);border-radius:var(--radius);background-color:var(--theme-purple);color:var(--theme-white);font-weight:600;position:absolute;top:-100%}.skip-link:focus{top:var(--space-2);text-decoration:none}@media (width<=768px){:root{--text-2xl:2rem;--text-xl:1.5rem}}
