@font-face{font-family:Afacad Flux;src:url(/fonts/AfacadFlux-Variable.ttf)format("truetype");font-weight:100 1000;font-display:swap}@font-face{font-family:Ubuntu;src:url(/fonts/Ubuntu-Variable.ttf)format("truetype");font-weight:100 900;font-display:swap}:root{--paper:#efe9d7;--ink:#102d2c;--teal:#0a292b;--cyan:#b8e0df;--lime:#d7e34d;--coral:#ee3c78;--line:#b6bdae}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:2rem}body{background:var(--paper);color:var(--ink);margin:0;font-family:Ubuntu,sans-serif;font-size:16px;line-height:1.55}a{color:inherit;text-decoration:none}a:focus-visible{outline:3px solid var(--coral);outline-offset:5px}::selection{background:var(--lime);color:var(--teal)}.masthead,.layout,footer{max-width:1280px;margin-inline:auto}.masthead{border-bottom:1px solid var(--line);align-items:center;gap:2rem;padding:25px 48px;display:flex}.wordmark{letter-spacing:-.045em;font-family:Afacad Flux,sans-serif;font-size:2rem;font-weight:850;line-height:1}.wordmark span{color:#b52152}.location{margin-left:auto;font-size:.875rem}.header-contact{border-left:1px solid var(--line);padding-left:2rem;font-size:.875rem}.header-contact span{margin-left:.6rem}.layout{grid-template-columns:.95fr 1.15fr;gap:90px;padding:68px 48px 80px;display:grid}.intro{align-self:start}.eyebrow,.section-meta{text-transform:uppercase;letter-spacing:.09em;font-size:.75rem;font-weight:500}.eyebrow{margin:0 0 24px}h1,h2,h3{font-family:Afacad Flux,sans-serif}h1{letter-spacing:-.055em;margin:0 0 32px;font-size:clamp(4rem,7.6vw,6.5rem);font-weight:900;line-height:.84}h1 span{transform-origin:0 100%;display:inline-block;transform:skew(8deg)}.bio{max-width:340px;margin:0 0 14px;font-size:1.25rem;line-height:1.5}.intro-detail{color:#415953;max-width:350px;margin:0 0 28px}.coffee{background:var(--lime);border:1px solid var(--ink);justify-content:space-between;gap:32px;padding:13px 19px;font-weight:500;transition:background .18s;display:inline-flex}.coffee:hover{background:var(--cyan)}.index{max-width:350px;margin-top:48px}.index .eyebrow{margin-bottom:12px}.index a{border-top:1px solid var(--line);align-items:center;gap:18px;padding:11px 0;font-size:.875rem;display:flex}.index a span:first-child{color:#52635b;font-size:.75rem}.index a span:last-child{margin-left:auto}.index a:hover{background:#b8e0df55;padding-left:8px}.small-note{color:#52635b;margin:25px 0 0;font-size:.875rem}.directory-section{margin-bottom:40px;scroll-margin-top:25px}.section-meta{border-top:2px solid var(--ink);justify-content:space-between;gap:16px;margin-bottom:14px;padding-top:14px;display:flex}h2{text-transform:uppercase;letter-spacing:-.035em;margin:0 0 15px;font-size:2.6rem;font-weight:850;line-height:1}.section-description{color:#415953;max-width:490px;margin:0 0 22px}.link-list{border-top:1px solid var(--line);margin:0;padding:0;list-style:none}.link-list li{border-bottom:1px solid var(--line)}.link-list a{justify-content:space-between;gap:20px;padding:18px 0;transition:padding .18s,background .18s;display:flex}.link-list a:hover{background:#b8e0df66;padding-inline:12px}h3{margin:0 0 6px;font-size:1.6rem;font-weight:700;line-height:1.1}.link-list p{color:#415953;max-width:390px;margin:0 0 8px;font-size:.875rem}.link-label{font-size:.875rem;font-weight:500}.link-arrow{flex-shrink:0;font-size:1.5rem}.section-web3-ai{background:var(--cyan);margin-inline:-24px;padding:24px}.section-web3-ai .section-meta{border-top:0;padding-top:0}.section-web3-ai .link-list,.section-web3-ai li{border-color:#779f99}.section-web3-ai a:hover{background:#ffffff40}.section-experiments{margin-bottom:0}.lab-label{text-transform:none;letter-spacing:0}.empty-note{border-block:1px dashed var(--line);color:#52635b;gap:12px;margin:0;padding:17px 0;font-size:.875rem;display:flex}footer{border-top:1px solid var(--line);justify-content:space-between;gap:20px;padding:25px 48px;font-size:.875rem;display:flex}footer a:hover,.header-contact:hover{text-underline-offset:4px;text-decoration:underline}.skip-link{z-index:10;background:var(--lime);padding:12px;position:fixed;top:8px;left:8px;transform:translateY(-150%)}.skip-link:focus{transform:none}@media (min-width:1440px){.layout{gap:120px}}@media (max-width:900px){.layout{gap:45px;padding-inline:32px}.masthead,footer{padding-inline:32px}h1{font-size:5rem}}@media (max-width:700px){.masthead{flex-wrap:wrap;gap:16px;padding:20px 24px}.location{font-size:.75rem}.header-contact{display:none}.layout{padding:42px 24px 48px;display:block}.intro{margin-bottom:48px;position:static}h1{font-size:clamp(4.6rem,17vw,7rem)}.bio,.intro-detail,.index{max-width:100%}.index{margin-top:32px}.small-note{display:none}.section-web3-ai{margin-inline:-12px;padding:24px 12px}h2{font-size:2.4rem}footer{flex-wrap:wrap;padding:22px 24px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}.portrait-frame{background:var(--cyan);border:1px solid var(--ink);width:220px;max-width:100%;box-shadow:6px 6px 0 var(--lime);margin:0 0 30px;padding:6px}.portrait-crop{aspect-ratio:1;overflow:hidden}.portrait-crop img{object-fit:cover;object-position:43% 43%;width:100%;height:100%;display:block;transform:scale(1.2)}.work-list{border-top:1px solid var(--line);margin:0;padding:0;list-style:none}.work-list>li{border-bottom:1px solid var(--line);padding:22px 0}.work-role{letter-spacing:.035em;margin:0 0 8px;font-size:.75rem;font-weight:500}.work-description{color:#415953;margin:9px 0 15px;font-size:.9375rem}.work-actions{flex-wrap:wrap;gap:12px 24px;display:flex}.work-actions a{text-underline-offset:4px;padding-block:3px;font-size:.875rem;-webkit-text-decoration:underline #789087;text-decoration:underline #789087}.work-actions a:hover{text-decoration-color:currentColor}.section-web3-ai .work-list,.section-web3-ai .work-list>li{border-color:#779f99}.local-projects{margin-top:28px}.local-projects>h3{margin-bottom:15px;font-size:1.5rem}.local-demo{border:1px solid var(--line);border-left:4px solid var(--ink);padding:20px}.local-demo h4{margin:0;font:700 1.6rem/1.1 Afacad Flux,sans-serif}.gallery-guide{color:#415953;justify-content:space-between;gap:12px;margin-bottom:12px;font-size:.75rem;display:flex}.elastic-gallery{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-flow:dense;grid-auto-rows:72px;align-items:stretch;gap:10px;display:grid}.elastic-card{transform-origin:0 0;background:#f7f3e8;grid-row:span 3;min-width:0;min-height:0;position:relative}.elastic-card.format-tall{grid-row:span 4}.elastic-card.format-short,.elastic-card.format-wide{grid-row:span 3}.elastic-trigger{border:1px solid var(--line);color:var(--ink);text-align:left;cursor:pointer;width:100%;height:100%;font:inherit;background:0 0;flex-direction:column;padding:0;display:flex;overflow:hidden}.elastic-visual{background:var(--teal);flex:1;min-height:0;display:block;position:relative;overflow:hidden}.elastic-visual img{object-fit:cover;width:100%;height:100%;transition:filter .35s,transform .5s;display:block}.elastic-open{background:var(--paper);width:26px;height:26px;color:var(--ink);border:1px solid var(--ink);border-radius:50%;place-items:center;font-size:1rem;display:grid;position:absolute;top:10px;right:10px}.elastic-caption{flex:none;justify-content:space-between;align-items:center;gap:10px;width:100%;padding:14px;display:flex}.elastic-title{letter-spacing:-.02em;font:700 1.45rem/1 Afacad Flux,sans-serif;display:block}.elastic-category{color:#415953;margin-top:7px;font-size:.75rem;display:block}.elastic-number{border:1px solid var(--line);border-radius:50%;flex-shrink:0;place-items:center;width:26px;height:26px;font-size:.6875rem;display:grid}.elastic-gallery.has-peek .elastic-card:not(.is-peek){grid-row:span 2}.elastic-gallery.has-peek .is-peek{z-index:2;grid-row:span 5;box-shadow:0 12px 25px #102d2c20}.elastic-gallery.has-peek .elastic-card:not(.is-peek) img{filter:saturate(.65)}.elastic-gallery.has-open .elastic-card:not(.is-open){grid-row:span 2}.elastic-gallery.has-open .elastic-card:not(.is-open) .elastic-category{display:none}.elastic-gallery .elastic-card.is-open{border:1px solid var(--line);grid-area:auto/1/auto/-1}.elastic-detail[hidden]{display:none}.elastic-detail{padding:18px}.gallery-back{width:100%;font:inherit;cursor:pointer;color:var(--ink);text-align:left;background:0 0;border:0;justify-content:space-between;align-items:center;gap:16px;padding:0 0 16px;font-size:.875rem;display:flex}.gallery-back span{font-size:1.4rem}.elastic-detail-image{width:100%;height:auto;display:block}.elastic-detail-copy{padding-top:22px}.elastic-detail-copy h3{font-size:2.4rem}.elastic-detail-copy>p:not(.work-role){margin:14px 0 20px;font-size:.9375rem}.elastic-detail-copy a{border-block:1px solid var(--line);padding:14px 0;font-size:.875rem;font-weight:500;display:block}.elastic-detail-copy a>span:first-child{float:right}.elastic-trigger:focus-visible,.gallery-back:focus-visible{outline:3px solid var(--coral);outline-offset:3px}.experiment-destination{margin-top:8px;font-size:.75rem;display:block}.experiment-footnote{color:#415953;margin:18px 0 0;font-size:.875rem}.experiment-footnote a{text-underline-offset:3px;text-decoration:underline}.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (max-width:900px){.elastic-caption{padding:10px}.elastic-title{font-size:1.25rem}.elastic-number{display:none}}@media (max-width:700px){.elastic-gallery{grid-auto-rows:62px}.gallery-guide{flex-direction:column;gap:4px}.elastic-detail{padding:12px}}@media (prefers-reduced-motion:reduce){.elastic-visual img{transition:none}}.elastic-gallery.has-open{grid-auto-rows:auto}.elastic-gallery.has-open .elastic-card:not(.is-open){grid-row:auto;height:150px}.hero-panel{isolation:isolate;margin:-24px -24px 0;padding:24px 24px 62px;position:relative}.hero-panel>:not(.hero-atmosphere){z-index:1;position:relative}.hero-atmosphere{z-index:0;position:absolute;inset:0}.hero-film{background:var(--paper);pointer-events:none;position:absolute;inset:0;overflow:hidden}.hero-film video,.hero-poster{object-fit:cover;object-position:53% center;width:100%;height:100%;position:absolute;inset:0}.hero-film video{opacity:0}.hero-film video.is-ready{opacity:var(--loop-opacity,0)}.hero-film:after{content:"";background:linear-gradient(#efe9d770 0%,#efe9d747 30%,#efe9d7e0 82%,#efe9d7 100%),linear-gradient(90deg,#efe9d7b8,#efe9d726);position:absolute;inset:0}.hero-panel+.index{margin-top:20px}@media (max-width:700px){.hero-panel{margin:-16px -16px 0;padding:16px 16px 58px}}@media (prefers-reduced-motion:reduce){.hero-film video{transition:none;display:none}}.contact-section{margin-top:44px;margin-bottom:0}.contact-form{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;display:grid}.contact-form label{gap:7px;font-size:.875rem;display:grid}.contact-form input,.contact-form textarea{width:100%;min-width:0;color:var(--ink);font:inherit;background:#f7f3e8;border:1px solid #789087;border-radius:0;padding:12px}.contact-form textarea{resize:vertical}.contact-form input:focus-visible,.contact-form textarea:focus-visible,.contact-form button:focus-visible{outline:3px solid var(--coral);outline-offset:3px}.contact-message,.contact-status{grid-column:1/-1}.contact-form button{background:var(--lime);border:1px solid var(--ink);color:var(--ink);font:inherit;cursor:pointer;grid-column:1/-1;justify-self:start;gap:32px;padding:13px 19px;display:flex}.contact-form button:disabled{opacity:.65;cursor:wait}.contact-status{margin:0;font-size:.875rem}.contact-status:empty{display:none}.contact-direct{color:#415953;font-size:.875rem}.contact-direct a{text-underline-offset:4px;text-decoration:underline}.contact-trap{clip-path:inset(50%);width:1px;height:1px;position:absolute;overflow:hidden}@media (max-width:420px){.contact-form{grid-template-columns:1fr}}.layout{display:block}.top-layout{grid-template-columns:.95fr 1.15fr;align-items:start;gap:90px;margin-bottom:64px;display:grid}.local-projects{margin-top:0;margin-bottom:64px}.local-project-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:20px;margin-top:24px;display:grid}.local-demo+.local-demo{margin-top:0}.local-demo{flex-direction:column;display:flex}.local-demo h3{font-size:1.8rem}.local-demo .work-actions{margin-top:auto;padding-top:8px}.sections>.directory-section{margin-bottom:56px}.sections .section-description{max-width:650px}.sections .work-list{grid-template-columns:repeat(3,minmax(0,1fr));gap:28px;display:grid}.sections .section-projects .work-list{grid-template-columns:repeat(2,minmax(0,1fr))}.sections .work-list>li{flex-direction:column;display:flex}.sections .work-actions{margin-top:auto}.sections .elastic-gallery{grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-rows:88px}.sections .elastic-gallery.has-open{grid-auto-rows:auto}.elastic-detail-image{object-fit:contain;background:var(--teal);max-height:520px}.elastic-detail-copy{max-width:720px}.contact-section{grid-template-columns:1fr 1fr;column-gap:64px;display:grid}.contact-section .section-meta{grid-column:1/-1}.contact-section h2,.contact-section .section-description{grid-column:1}.contact-section .contact-form{grid-area:2/2/5}.contact-section .contact-direct{grid-column:1;align-self:start}@media (min-width:1440px){.top-layout{gap:120px}}@media (max-width:900px){.top-layout{gap:45px}.sections .work-list{gap:20px}.sections .elastic-gallery{grid-template-columns:repeat(2,minmax(0,1fr))}.contact-section{column-gap:32px}}@media (max-width:700px){.top-layout{margin-bottom:40px;display:block}.local-projects{margin-bottom:40px}.sections .work-list,.sections .section-projects .work-list{grid-template-columns:1fr;gap:0}.sections .elastic-gallery{grid-auto-rows:62px}.sections .elastic-gallery.has-open{grid-auto-rows:auto}.contact-section{display:block}}.sections .stable-gallery{overflow-anchor:none;grid-auto-rows:auto;grid-auto-flow:row;align-items:start}.stable-gallery .elastic-card{height:var(--tile-height,300px);grid-row:auto;transition:height .44s cubic-bezier(.2,.82,.2,1)}.sections .stable-gallery{transition:grid-template-columns .44s cubic-bezier(.2,.82,.2,1)}.stable-gallery .elastic-trigger:hover .elastic-visual img{transform:scale(1.04)}.stable-gallery .is-selected .elastic-trigger{border-color:var(--ink);box-shadow:inset 0 -4px var(--lime)}.gallery-row-detail{border:1px solid var(--line);background:#f7f3e8;grid-column:1/-1}@media (max-width:700px){.stable-gallery .elastic-card{height:220px}}.local-column{min-width:0}.local-column .local-projects{margin:30px 0 0}.local-column .local-projects h2{text-transform:none;margin-bottom:18px;font-size:1.8rem}.local-column .section-local{margin-bottom:0}.local-column .gallery-guide{gap:8px;font-size:.6875rem}.compact-gallery{overflow-anchor:none;grid-auto-rows:auto;grid-auto-flow:row;align-items:start;transition:grid-template-columns .44s cubic-bezier(.2,.82,.2,1)}.compact-gallery .elastic-card{height:235px}.compact-gallery .elastic-caption{padding:12px}.compact-gallery .elastic-title{font-size:1.25rem}.compact-gallery .elastic-category{font-size:.6875rem}.compact-gallery .elastic-number{display:none}.compact-gallery .elastic-visual img{object-position:top center}.compact-gallery .elastic-detail-copy h3{font-size:1.8rem}.compact-gallery .elastic-detail{padding:14px}@media (max-width:700px){.compact-gallery .elastic-card{height:225px}}.stable-gallery.selection-gallery{grid-auto-rows:auto;gap:14px;display:grid}.stable-gallery .elastic-card.is-expanded{border:1px solid var(--line);min-width:0;height:auto}.selection-gallery .elastic-detail{padding:18px}.selection-gallery .gallery-thumbnails{scroll-snap-type:x proximity;gap:10px;padding:4px 4px 12px;display:flex;overflow-x:auto}.stable-gallery .elastic-card.is-thumbnail{scroll-snap-align:start;flex:0 0 150px;height:120px}.is-thumbnail .elastic-caption{padding:8px}.is-thumbnail .elastic-title{font-size:1rem;line-height:1.1}.is-thumbnail .elastic-visual img{object-fit:cover}.compact-gallery.selection-gallery .elastic-detail{padding:12px}.compact-gallery .elastic-card.is-thumbnail{flex-basis:140px;height:115px}@media (max-width:700px){.selection-gallery .elastic-detail{padding:12px}.stable-gallery .elastic-card.is-thumbnail{flex-basis:130px;height:110px}}.stable-gallery .elastic-card{transition:transform .35s cubic-bezier(.2,.82,.2,1),box-shadow .35s}.stable-gallery .elastic-card.is-peek{z-index:3;box-shadow:0 12px 28px #102d2c26}.stable-gallery .elastic-card.is-peek .elastic-trigger{border-color:var(--ink);outline:2px solid var(--ink);outline-offset:-2px}@media (prefers-reduced-motion:reduce){.stable-gallery .elastic-card.is-peek{transform:none}}.gallery-row{gap:10px;min-width:0;transition:grid-template-columns .44s cubic-bezier(.2,.82,.2,1);display:grid}.stable-gallery .elastic-card.is-thumbnail{transition:flex-basis .44s cubic-bezier(.2,.82,.2,1),box-shadow .35s}
