@import "https://fonts.googleapis.com/css2?family=Archivo:ital,wdth,wght@0,75..125,400..800;1,75..125,400..800&family=Bodoni+Moda:ital,opsz,wght@1,6..96,400..700&family=Azeret+Mono:wght@300;400;500&display=swap";:root{--ink:#0a0a09;--ink-sunk:#060605;--paper:#edebe4;--paper-mid:#938f85;--paper-soft:#7e7b72;--paper-faint:#5b584f;--body-text:#c7c4ba;--surface:#100f0d;--surface-2:#1a1812;--surface-3:#221f18;--scroll-thumb:#3a382f;--accent-text:var(--olive);--olive:#b8d22a;--olive-deep:#5d6b14;--olive-ink:#0d1000;--coral:#ff8a75;--rule:#edebe41f;--rule-strong:#edebe436;--font-display:"Archivo",sans-serif;--font-accent:"Bodoni Moda",serif;--font-mono:"Azeret Mono",ui-monospace,monospace;--ease-out:cubic-bezier(.23,1,.32,1);--gutter:clamp(1.25rem,4vw,4.5rem);--rail:3.25rem;--measure:62ch;--buncss-light: ;--buncss-dark:initial;color-scheme:dark}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}body{position:relative;background:var(--ink);color:var(--paper);font-family:var(--font-display);font-synthesis:none;-webkit-font-smoothing:antialiased;overflow-x:clip;margin:0;font-size:1rem;line-height:1.55}::selection{background:var(--olive);color:var(--olive-ink)}::placeholder{color:var(--paper-soft)}:focus-visible{outline:2px solid var(--olive);outline-offset:3px;border-radius:1px}*{scrollbar-color:var(--paper-faint)transparent;scrollbar-width:thin}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:var(--ink-sunk)}::-webkit-scrollbar-thumb{background:var(--scroll-thumb);border:3px solid var(--ink-sunk);border-radius:99px}::-webkit-scrollbar-thumb:hover{background:var(--paper-faint)}input,textarea,button{font:inherit;caret-color:var(--olive)}a{color:inherit}h1,h2,h3,p,figure{margin:0}.display{font-family:var(--font-display);letter-spacing:-.038em;text-wrap:balance;font-weight:500;font-stretch:112%;line-height:.95}.display em{font-family:var(--font-accent);letter-spacing:-.02em;color:var(--accent-text);font-style:italic;font-weight:400;font-stretch:100%}.mono{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;font-variant-numeric:tabular-nums;color:var(--paper-mid);font-size:.6875rem;font-weight:400}.body-copy{max-width:var(--measure);color:var(--body-text);font-size:clamp(.975rem,1.05vw,1.0625rem);line-height:1.68}.body-copy+.body-copy{margin-top:1.1em}.shell{position:relative;padding-inline:var(--gutter);padding-right:calc(var(--gutter) + var(--rail))}@media (max-width:860px){.shell{padding-right:var(--gutter)}}.section{position:relative;border-top:1px solid var(--rule);padding-block-start:clamp(5.5rem,13vh,10rem);padding-block-end:clamp(5.5rem,13vh,10rem)}.section-head{display:flex;justify-content:space-between;align-items:baseline;gap:2rem;margin-bottom:clamp(2.5rem,5vw,4rem)}.nav{position:absolute;z-index:3;display:flex;justify-content:space-between;align-items: center;padding:24px 4vw;inset:0 0 auto}.wordmark{display:inline-flex;letter-spacing:-.08em;text-decoration:none;align-items: center;gap:.5rem;font-size:1.5rem;font-weight:700}.wordmark svg{display:block}.nav-links{display:flex;font-family:var(--font-display);letter-spacing:.08em;text-transform:uppercase;gap:2rem;font-size:.78rem}.nav-link{position:relative;color:#edebe4cc;text-decoration:none;padding-block-start:.15rem;padding-block-end:.15rem;transition:color .18s}@media (hover:hover) and (pointer:fine){.nav-link:hover{color:var(--olive)}}.availability{display:inline-flex;align-items: center;gap:.55rem}.availability-dot{background:var(--olive);animation:pulse 2.8s var(--ease-out)infinite;border-radius:50%;width:6px;height:6px;box-shadow:0 0 #b8d22a66}@keyframes pulse{0%,70%,to{box-shadow:0 0 #b8d22a4d}35%{box-shadow:0 0 0 5px #b8d22a00}}@media (prefers-reduced-motion:reduce){.availability-dot{animation:none}}@media (max-width:860px){.nav{padding:20px 6vw}}@media (max-width:400px){.nav-links{gap:.9rem}.nav-link{letter-spacing:.08em}}.rail{position:fixed;width:var(--rail);z-index:50;display:flex;pointer-events:none;flex-direction:column;justify-content:center;align-items: center;gap:1rem;top:0;bottom:0;right:0}.rail-track{position:relative;background:var(--rule-strong);width:1px;height:min(34vh,260px)}.rail-fill{position:absolute;background:var(--olive);transform-origin:top;height:0;inset:0 0 auto}.rail-label{writing-mode:vertical-rl;letter-spacing:.22em;font-size:.625rem}@media (max-width:860px){.rail{display:none}}.hero{position:relative;overflow:hidden;margin-inline:calc(var(--gutter)*-1);margin-right:calc((var(--gutter) + var(--rail))*-1);background:#242424;min-height:100svh;padding:9rem 4vw 3rem}@media (max-width:860px){.hero{margin-right:calc(var(--gutter)*-1);padding:7rem 6vw 2rem}}.hero-media{position:absolute;z-index:0;inset:0}.hero-video{object-fit:cover;opacity:.56;width:100%;height:100%}.hero-media:after{content:"";position:absolute;background:linear-gradient(105deg,#0c0c0cc7,#0c0c0c2e 70%),linear-gradient(#0000 60%,#0c0c0c80);inset:0}.hero-copy{position:relative;z-index:1;display:flex;flex-direction:column;justify-content:space-between;height:calc(100svh - 12rem)}@media (max-width:860px){.hero-copy{height:calc(100svh - 9rem)}}.hero-eyebrow{color:var(--accent-text)}.hero h1{letter-spacing:-.09em;max-width:1000px;margin:auto 0;font-size:clamp(3.7rem,9vw,9.5rem);font-weight:400;line-height:.88}@media (max-width:860px){.hero h1{font-size:clamp(3.4rem,16vw,6rem)}}.accent-coral{color:var(--coral)}.hero-bottom{display:flex;justify-content:space-between;align-items: flex-end;gap:1.5rem}.hero-bottom .body-copy{color:#f2f0ebb8;max-width:42ch;font-size:.85rem;line-height:1.45}.circle-link{display:flex;color:var(--paper);border:1px solid #f2f0eb80;border-radius:50%;flex:none;justify-content:center;align-items: center;width:64px;height:64px;transition:background .3s,color .3s,transform .3s}@media (hover:hover) and (pointer:fine){.circle-link:hover{background:var(--olive);color:var(--ink);transform:rotate(45deg)}}@media (max-width:860px){.player{width:100%;margin-top:clamp(2rem,7vw,3rem)}}.work-list{border-top:1px solid var(--rule)}.work-row:last-child{border-bottom:none}.work-row{position:relative;display:block;border-bottom:1px solid var(--rule);text-decoration:none;isolation:isolate;padding-block-start:clamp(1.5rem,3vw,2.25rem);padding-block-end:clamp(1.5rem,3vw,2.25rem)}.work-row:before{content:"";position:absolute;inset:0 calc(var(--gutter)*-.5);background:var(--olive);clip-path:inset(0 100% 0 0);z-index:-1;transition:clip-path .42s var(--ease-out)}.work-row-inner{display:grid;grid-template-columns:1.4rem minmax(0,1fr)minmax(0,.85fr)auto;align-items: start;gap:clamp(1rem,2.5vw,2.5rem);transition:color .3s}.work-marker{background:var(--olive);transition:background .3s ease,transform .3s var(--ease-out);border-radius:50%;width:7px;height:7px;margin-top:1.05rem}.work-row:hover .work-marker{background:var(--olive-ink);transform:scale(1.35)}.work-title{letter-spacing:-.035em;font-size:clamp(1.75rem,3.6vw,3rem);font-weight:500;font-stretch:108%;line-height:1.02}.work-problem{color:var(--paper-mid);padding-top:.4rem;transition:color .3s;font-size:.9375rem;line-height:1.5}.work-meta{display:flex;align-items: center;gap:1.25rem;padding-top:.6rem}.work-stack{grid-column:2/-1;display:flex;opacity:0;transition:opacity .3s var(--ease-out),transform .3s var(--ease-out);flex-wrap:wrap;gap:.5rem 1.1rem;margin-top:.9rem;transform:translateY(-4px)}@media (hover:hover) and (pointer:fine){.work-row:hover:before{clip-path:inset(0 0 0 0)}.work-row:hover .work-row-inner{color:var(--olive-ink)}.work-row:hover .work-problem,.work-row:hover .mono{color:#0d1000b8}.work-row:hover .work-stack{opacity:1;transform:translateY(0)}.work-row:hover .work-arrow{transform:translate(3px,-3px)}}.work-row:focus-visible .work-stack{opacity:1;transform:translateY(0)}.work-arrow{transition:transform .3s var(--ease-out)}@media (max-width:720px){.work-row-inner{grid-template-columns:1.2rem minmax(0,1fr)}.work-problem{grid-column:2;padding-top:.5rem}.work-meta{grid-column:2;padding-top:.35rem}.work-stack{opacity:1;transform:none}}.about-grid{display:grid;grid-template-columns:minmax(0,1fr)minmax(0,1fr);align-items: start;gap:clamp(2rem,5vw,5rem)}.about-grid h2{font-size:clamp(2rem,4.4vw,3.5rem)}@media (max-width:860px){.about-grid{grid-template-columns:1fr}}.xp-head{display:flex;border-bottom:1px solid var(--rule);flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:1rem;padding-bottom:1.25rem}.xp-company{letter-spacing:-.03em;font-size:clamp(1.5rem,3vw,2.25rem);font-weight:500;font-stretch:106%}.xp-wins{display:flex;border-block:1px solid var(--rule);flex-wrap:wrap}.xp-win{flex:0 auto;min-width:min(240px,100%);padding:clamp(1.5rem,3vw,2.25rem) clamp(2rem,5vw,4rem)}.xp-win:first-child{padding-left:0}.xp-win+.xp-win{border-left:1px solid var(--rule)}.xp-win-label{display:block;margin-bottom:1rem}.xp-delta{display:flex;font-family:var(--font-mono);font-variant-numeric:tabular-nums;letter-spacing:-.01em;align-items:baseline;gap:.7rem}.xp-from{color:var(--paper-soft);text-decoration:line-through;text-decoration-thickness:1px;text-underline-offset:2px;font-size:clamp(1.1rem,2vw,1.4rem)}.xp-to{color:var(--accent-text);font-size:clamp(1.6rem,3.4vw,2.5rem);font-weight:500}.xp-notes{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:clamp(1.5rem,3vw,3rem);margin-top:clamp(2rem,4vw,3rem)}.contact{background:var(--olive);color:var(--olive-ink);margin-inline:calc(var(--gutter)*-1);margin-right:calc((var(--gutter) + var(--rail))*-1);padding:clamp(4.5rem,11vh,8rem)var(--gutter);padding-right:calc(var(--gutter) + var(--rail));border-top:none}@media (max-width:860px){.contact{margin-right:calc(var(--gutter)*-1);padding-right:var(--gutter)}}.contact .mono{color:#0d1000b3}.contact .availability-dot{background:var(--olive-ink);animation:none}.contact-grid{display:grid;grid-template-columns:minmax(0,1.25fr)minmax(0,1fr);align-items: end;gap:clamp(2rem,5vw,4rem)}.contact h2{font-size:clamp(2.5rem,6.4vw,5.5rem)}.contact-email{display:inline-flex;letter-spacing:-.025em;text-decoration:none;transition:border-color .2s ease,gap .24s var(--ease-out);border-bottom:1px solid #0d100040;align-items: center;gap:.75rem;padding-bottom:.4rem;font-size:clamp(1.15rem,2.6vw,1.75rem);font-weight:500}@media (hover:hover) and (pointer:fine){.contact-email:hover{border-color:var(--olive-ink);gap:1.1rem}}.contact-links{display:flex;flex-wrap:wrap;gap:.5rem 1.5rem;margin-top:1.75rem}.contact-links a{text-decoration:none;font-size:.6875rem;font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:#0d1000b0;border-bottom:1px solid #0000;padding-bottom:2px;transition:color .18s,border-color .18s}@media (hover:hover) and (pointer:fine){.contact-links a:hover{color:var(--olive-ink);border-color:#0d100066}}@media (max-width:860px){.contact-grid{grid-template-columns:1fr;align-items: start}}.colophon{display:flex;border-top:1px solid #0d100026;flex-wrap:wrap;justify-content:space-between;gap:1rem 2rem;margin-top:clamp(3.5rem,8vw,6rem);padding-top:1.25rem}.colophon a{text-decoration:none;border-bottom:1px solid #0000;transition:border-color .18s}@media (hover:hover) and (pointer:fine){.colophon a:hover{border-color:#0d100066}}.project-page{padding-top:9rem}.back-link{display:inline-flex;text-decoration:none;align-items: center;gap:.5rem;margin-bottom:clamp(2.5rem,6vw,4rem);transition:color .18s}.back-link svg{transition:transform .26s var(--ease-out)}@media (hover:hover) and (pointer:fine){.back-link:hover{color:var(--paper)}.back-link:hover svg{transform:translate(-3px)}}.project-title{margin-bottom:clamp(1.25rem,2.5vw,2rem);font-size:clamp(2.75rem,8vw,6.5rem)}.project-problem{letter-spacing:-.02em;color:var(--paper);font-size:clamp(1.1rem,2.1vw,1.55rem);line-height:1.35;font-family:var(--font-accent);max-width:34ch;font-style:italic}.project-meta{display:flex;border-top:1px solid var(--rule);flex-wrap:wrap;align-items: center;gap:1.5rem 2.5rem;margin-top:clamp(2rem,4vw,3rem);padding-top:1.5rem}.out-link{display:inline-flex;text-decoration:none;border-bottom:1px solid var(--rule-strong);align-items: center;gap:.5rem;padding-bottom:.3rem;transition:color .2s,border-color .2s;font-size:.8125rem;font-weight:500}.out-link svg{transition:transform .3s var(--ease-out)}@media (hover:hover) and (pointer:fine){.out-link:hover{color:var(--accent-text);border-color:var(--accent-text)}.out-link:hover svg{transform:translate(3px,-3px)}}.project-body{display:grid;grid-template-columns:minmax(0,1.15fr)minmax(0,1fr);align-items: start;gap:clamp(2rem,6vw,6rem);padding-block-start:clamp(3rem,8vh,6rem);padding-block-end:clamp(3rem,8vh,6rem)}@media (max-width:860px){.project-body{grid-template-columns:1fr}}.flow{display:grid;gap:0;margin-top:2.5rem}.flow-step{display:grid;grid-template-columns:1.5rem minmax(0,1fr);gap:1rem}.flow-text{padding-bottom:1.6rem}.flow-marker{display:flex;flex-direction:column;align-items: center;padding-top:.45rem}.flow-dot{background:var(--olive);border-radius:50%;flex:none;width:7px;height:7px}.flow-line{background:linear-gradient(to bottom,var(--rule-strong),var(--rule));flex:1;width:1px;margin-top:.4rem}.flow-step:last-child .flow-line{display:none}.flow-stage{letter-spacing:-.015em;font-size:1.0625rem;font-weight:500}.flow-detail{color:var(--paper-mid);margin-top:.15rem;font-size:.875rem}.facts{display:grid;background:var(--rule);border-block:1px solid var(--rule);gap:1px;margin-top:2.5rem}.fact{background:var(--ink);display:flex;flex-wrap:wrap;justify-content:space-between;gap:1rem;padding:.9rem 0}.fact-value{font-family:var(--font-mono);color:var(--paper);font-variant-numeric:tabular-nums;font-size:.8125rem}.caveat{border-left:1px solid var(--olive-deep);color:var(--paper-mid);max-width:54ch;margin-top:2.5rem;padding-left:1.25rem;font-size:.875rem;line-height:1.6}.project-next{display:flex;border-top:1px solid var(--rule);text-decoration:none;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:1rem;padding-block-start:clamp(2.5rem,6vw,4rem);padding-block-end:clamp(2.5rem,6vw,4rem)}.project-next-title{letter-spacing:-.035em;transition:color .22s;font-size:clamp(1.75rem,4vw,3rem);font-weight:500;font-stretch:106%}@media (hover:hover) and (pointer:fine){.project-next:hover .project-next-title{color:var(--accent-text)}}.player{display:flex;align-items: center;gap:.85rem;width:min(300px,70vw);margin-top:clamp(2rem,6vw,3rem)}.player-button{display:grid;border:1px solid var(--rule-strong);background:var(--surface-3);color:var(--paper);cursor:pointer;transition:transform .16s var(--ease-out),border-color .2s ease,color .2s ease;border-radius:50%;flex:none;place-items: center;width:34px;height:34px;padding:0}.player-button:disabled{opacity:.4;cursor:not-allowed}.player-button:active:not(:disabled){transform:scale(.94)}@media (hover:hover) and (pointer:fine){.player-button:hover:not(:disabled){border-color:var(--olive);color:var(--olive)}}.player-text{flex:1;min-width:0}.player-title{color:var(--paper-mid);letter-spacing:-.005em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:.75rem}.player-track{background:var(--rule-strong);overflow:hidden;border-radius:2px;height:2px;margin-top:.45rem}.player-track-fill{background:var(--olive);transform-origin:left;height:100%;transform:scaleX(0)}.player-artist{flex:none}@media (max-width:860px){.player{width:min(260px,80vw)}.player-artist{display:none}}.chat-bubble{position:fixed;z-index:80;display:grid;border:1px solid var(--rule-strong);background:var(--surface-3);color:var(--paper);cursor:pointer;transition:transform .18s var(--ease-out),border-color .22s ease,color .22s ease;border-radius:50%;place-items: center;width:46px;height:46px;padding:0;bottom:clamp(1rem,2.5vw,1.75rem);right:clamp(1rem,2.5vw,1.75rem);box-shadow:0 10px 30px -12px #000000c4}.chat-bubble:active{transform:scale(.94)}@media (hover:hover) and (pointer:fine){.chat-bubble:hover{border-color:var(--olive);color:var(--olive)}}.chat-panel{position:fixed;z-index:79;display:flex;background:var(--surface);border:1px solid var(--rule-strong);overflow:hidden;transform-origin:bottom right;opacity:0;visibility:hidden;transition:opacity .18s var(--ease-out),transform .18s var(--ease-out),visibility 0s linear .18s;border-radius:16px;flex-direction:column;width:min(380px,100vw - 2rem);height:min(520px,100svh - 10rem);bottom:calc(clamp(1rem,2.5vw,1.75rem) + 58px);right:clamp(1rem,2.5vw,1.75rem);transform:scale(.96)translateY(6px);box-shadow:0 28px 70px -24px #000000e6}.chat-panel[data-open=true]{opacity:1;visibility:visible;transition-delay:0s;transform:scale(1)translateY(0)}@media (prefers-reduced-motion:reduce){.chat-panel{transition:opacity .15s,visibility 0s linear .15s;transform:none}.chat-panel[data-open=true]{transform:none}}.chat-head{display:flex;border-bottom:1px solid var(--rule);align-items: center;gap:.55rem;padding:.95rem 1.1rem}.chat-status{background:var(--olive);border-radius:50%;flex:none;width:7px;height:7px}.chat-name{letter-spacing:-.015em;font-size:.875rem;font-weight:500}.chat-role{color:var(--paper-soft);flex:1;font-size:.8125rem}.chat-close{display:grid;color:var(--paper-mid);cursor:pointer;background:0 0;border:0;border-radius:6px;flex:none;place-items: center;width:26px;height:26px;padding:0;transition:background .16s,color .16s}@media (hover:hover) and (pointer:fine){.chat-close:hover{background:var(--surface-2);color:var(--paper)}}.chat-log{overflow-y:auto;overscroll-behavior:contain;display:flex;flex-direction:column;flex:1;gap:1rem;padding:1.1rem}.chat-empty .body-copy{color:var(--paper-mid);font-size:.875rem}.chat-suggestions{display:flex;flex-direction:column;align-items: flex-start;gap:.45rem;margin-top:1.1rem}.chat-suggestion{text-align:left;border:1px solid var(--rule-strong);color:var(--paper-mid);cursor:pointer;transition:color .16s ease,border-color .16s ease,transform .16s var(--ease-out);background:0 0;border-radius:99px;padding:.45rem .75rem;font-size:.8125rem}.chat-suggestion:active{transform:scale(.98)}@media (hover:hover) and (pointer:fine){.chat-suggestion:hover{color:var(--paper);border-color:var(--paper-faint)}}.chat-turn{color:var(--body-text);white-space:pre-wrap;font-size:.875rem;line-height:1.6}.chat-turn[data-role=user]{background:var(--surface-3);color:var(--paper);border-radius:14px;align-self: flex-end;max-width:85%;padding:.5rem .8rem}.chat-typing{display:inline-flex;gap:4px;padding-block-start:.4rem;padding-block-end:.4rem}.chat-typing i{background:var(--paper-faint);animation:blink 1.1s ease-in-out infinite;border-radius:50%;width:4px;height:4px}.chat-typing i:nth-child(2){animation-delay:.16s}.chat-typing i:nth-child(3){animation-delay:.32s}@keyframes blink{0%,to{opacity:.25}50%{opacity:1}}@media (prefers-reduced-motion:reduce){.chat-typing i{animation:none;opacity:.6}}.chat-input{display:flex;border-top:1px solid var(--rule);align-items: center;gap:.5rem;padding:.75rem}.chat-input input{background:var(--surface-2);color:var(--paper);border:1px solid #0000;border-radius:10px;flex:1;min-width:0;padding:.55rem .7rem;transition:border-color .16s;font-size:.875rem}.chat-input input:focus{outline:none;border-color:var(--paper-faint)}.chat-input button{display:grid;background:var(--olive);color:var(--olive-ink);cursor:pointer;transition:transform .16s var(--ease-out),opacity .16s ease;border:0;border-radius:50%;flex:none;place-items: center;width:32px;height:32px;padding:0}.chat-input button:disabled{opacity:.3;cursor:not-allowed}.chat-input button:active:not(:disabled){transform:scale(.94)}.js-motion .reveal{opacity:0;transform:translateY(14px)}@media (prefers-reduced-motion:reduce){.reveal{opacity:1!important;transform:none!important}.hero-media{transform:none!important}}.contact .availability{display:none}@media (max-width:860px){.contact .availability{display:inline-flex}}.nav-end{display:inline-flex;align-items: center;gap:1rem}.skills-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:clamp(2rem,4vw,3rem) clamp(1.5rem,3vw,2.5rem)}.skills-group-label{border-bottom:1px solid var(--rule-strong);margin-bottom:.9rem;padding-bottom:.75rem}.skills-items{list-style:none;display:flex;flex-direction:column;gap:.55rem;margin:0;padding:0}.skills-items li{color:var(--body-text);letter-spacing:-.005em;font-size:.9375rem}
