.work-section-heading{justify-content:space-between;align-items:flex-end;gap:32px;margin-bottom:38px;display:flex}.work-section-heading h2{font-family:var(--font-display), sans-serif;letter-spacing:-.04em;font-size:clamp(2.5rem,4.5vw,3.8rem);font-weight:650;line-height:1.05}.work-heading-dot{color:var(--accent)}.work-section-heading p{color:var(--ink-muted);font-size:.9375rem;line-height:1.65}.project-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:44px 28px;display:grid}.project-grid>div,.project-tile{min-width:0}.project-tile{flex-direction:column;height:100%;display:flex}.project-cover-link{isolation:isolate;border-radius:16px;display:block;position:relative;overflow:hidden}.project-artwork{color:#202331;justify-content:center;align-items:center;height:clamp(230px,24vw,280px);display:flex;position:relative;overflow:hidden}.project-artwork--halvo,.project-artwork--other{background:#dedff3}.project-artwork--nubmail{background:#dcebb8}.project-artwork--ytube-api{background:#f0c5ac}.project-artwork--nub-music-bot{background:#2947e8}.project-artwork-geometry{width:100%;height:100%;transition:transform .25s var(--ease-out);position:relative}.project-artwork-geometry svg{width:100%;height:100%;display:block}.project-cover-action{color:#202331;width:39px;height:39px;transition:background-color .18s ease, color .18s ease, transform .25s var(--ease-out);background:#f7f7f2;border-radius:50%;justify-content:center;align-items:center;display:flex;position:absolute;top:17px;right:17px}.project-arrow{vertical-align:middle;flex:none;display:inline-block}.project-arrow--external{transform:rotate(-45deg)}.project-arrow--left{transform:rotate(180deg)}.mail-art{flex-shrink:0;width:370px;height:225px;position:relative}.mail-envelope{width:220px;height:147px;transition:transform .25s var(--ease-out);position:absolute}.mail-envelope svg{width:100%;height:100%;display:block}.mail-envelope--back{color:#202331;--envelope-fold:#939795;top:22px;left:27px;transform:rotate(-15deg)}.mail-envelope--middle{color:#f7f7f2;--envelope-fold:#bac4a6;top:36px;left:118px;transform:rotate(14deg)}.mail-envelope--front{color:#2947e8;--envelope-fold:#b7c1ff;top:69px;left:80px;transform:rotate(-3deg)}.music-art{justify-content:center;align-items:center;gap:9px;width:100%;padding-inline:32px;display:flex}.music-bar{transform-origin:50%;max-width:20px;transition:transform .2s var(--ease-out);background:#dcebb8;border-radius:12px;flex:1;display:block}.music-bar:nth-child(3n){background:#dedff3}.music-bar:nth-child(4n){background:#f0c5ac}.project-tile-content{flex-direction:column;flex:1;padding-top:22px;display:flex}.project-title-row{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:10px 16px;display:flex}.project-title-row h2,.project-title-row h3{font-family:var(--font-display), sans-serif;letter-spacing:-.035em;font-size:clamp(1.6rem,2.5vw,2rem);font-weight:650;line-height:1.2}.project-title-row h2 a{align-items:center;gap:12px;display:inline-flex}.project-title-row>span{color:var(--ink-muted);font-size:.75rem}.project-title-row a{transition:color .18s}.project-summary{color:var(--ink-muted);max-width:70ch;margin-top:12px;font-size:.9375rem;line-height:1.7}.project-links{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-top:auto;padding-top:20px;font-size:.8125rem;display:flex}.project-links a{align-items:center;gap:6px;min-height:32px;transition:color .18s;display:inline-flex}.project-detail-link{color:var(--ink);font-weight:650}.project-external-links{color:var(--ink-muted);align-items:center;gap:16px;display:flex}.project-external-links .project-arrow{width:15px;height:15px}.work-section-footer{border-top:1px solid var(--rule);justify-content:space-between;align-items:center;gap:24px;margin-top:46px;padding-top:28px;display:flex}.work-section-footer p{color:var(--ink-muted);font-size:.875rem}.work-all-link{white-space:nowrap;align-items:center;gap:18px;min-height:44px;font-size:.875rem;font-weight:650;display:inline-flex}.work-index-page,.project-detail-page{padding-block:64px 96px}.work-index-intro{grid-template-columns:1.2fr 1fr;align-items:end;gap:64px;padding-block:20px 60px;display:grid}.work-index-intro h1{font-family:var(--font-display), sans-serif;letter-spacing:-.04em;font-size:clamp(3rem,5.5vw,4.9rem);font-weight:600;line-height:1.04}.work-index-intro h1 span{color:var(--accent)}.work-index-intro-copy{max-width:38ch;color:var(--ink-muted);font-size:1rem;line-height:1.8}.work-index-intro-copy .work-index-counts{color:var(--ink);margin-top:22px;font-size:.8125rem}.work-collection-heading{justify-content:space-between;align-items:end;gap:24px;padding-block:76px 25px;display:flex}.work-collection-heading h2,.project-story-layout>h2,.project-subsection-heading h2,.project-stack h2{font-family:var(--font-display), sans-serif;letter-spacing:-.03em;font-size:2rem;font-weight:600;line-height:1.15}.work-collection-heading p,.project-subsection-heading p{color:var(--ink-muted);font-size:.875rem}.project-index-list{border-top:1px solid var(--rule-strong)}.project-index-row{border-bottom:1px solid var(--rule);grid-template-columns:minmax(0,1fr) 220px;gap:48px;padding-block:30px;display:grid}.project-index-row .project-title-row{justify-content:start}.project-index-row .project-title-row h2{font-size:1.7rem}.project-index-row .project-summary{font-size:.9375rem}.project-tag-list{flex-wrap:wrap;gap:7px;margin-top:18px;display:flex}.project-tag-list li{color:var(--ink-muted);background:var(--bone-2);border-radius:6px;padding:4px 10px;font-size:.75rem;line-height:1.7}.project-index-aside{flex-direction:column;align-items:flex-start;padding-top:5px;display:flex}.project-status{color:var(--ink);align-items:center;gap:8px;font-size:.8125rem;display:inline-flex}.project-since{color:var(--ink-muted);margin-top:5px;font-size:.75rem}.project-index-aside .project-links{flex-direction:column;justify-content:flex-end;align-items:flex-start;gap:8px;padding-top:18px}.project-back-link{min-height:36px;color:var(--ink-muted);align-items:center;gap:8px;font-size:.875rem;display:inline-flex}.project-detail-header{grid-template-columns:minmax(0,1fr) 250px;gap:70px;margin-top:48px;display:grid}.project-detail-header h1{font-family:var(--font-display), sans-serif;letter-spacing:-.04em;text-wrap:balance;font-size:clamp(3rem,6.5vw,5.7rem);font-weight:600;line-height:1}.project-detail-summary{max-width:60ch;color:var(--ink-muted);margin-top:28px;font-size:1.125rem;line-height:1.75}.project-detail-facts{padding-top:7px}.project-detail-facts dl{margin-top:21px}.project-detail-facts dl>div{border-bottom:1px solid var(--rule);grid-template-columns:70px 1fr;gap:5px 16px;padding-block:9px;font-size:.8125rem;display:grid}.project-detail-facts dt{color:var(--ink-muted)}.project-detail-actions{flex-wrap:wrap;align-items:center;gap:12px 20px;margin-top:32px;display:flex}.project-primary-action,.project-secondary-action{border-radius:8px;justify-content:center;align-items:center;gap:10px;min-height:48px;padding:13px 18px;font-size:.875rem;font-weight:600;transition:background-color .18s;display:inline-flex}.project-primary-action{background:var(--accent);color:var(--bone)}.project-secondary-action{background:var(--bone-2);color:var(--ink)}.project-private-note{color:var(--ink-muted);font-size:.8125rem}.project-detail-cover{border-radius:16px;margin-top:46px;overflow:hidden}.project-detail-cover .project-artwork{height:370px}.project-detail-cover .project-artwork-geometry{max-width:740px}.project-detail-cover .mail-art{transform:scale(1.28)}.project-detail-cover .music-art{gap:16px;transform:scaleY(1.3)}.project-detail-cover .music-bar{max-width:30px}.project-story-layout{grid-template-columns:minmax(200px,.6fr) minmax(0,1.4fr);gap:60px;padding-block:70px;display:grid}.project-story{max-width:70ch;color:var(--ink-muted);font-size:1rem;line-height:1.85}.project-story p+p{margin-top:22px}.project-subsection-heading{justify-content:space-between;align-items:end;gap:24px;margin-bottom:26px;display:flex}.project-architecture dl{border-top:1px solid var(--rule-strong)}.project-architecture-row{border-bottom:1px solid var(--rule);grid-template-columns:minmax(200px,.6fr) minmax(0,1.4fr);gap:60px;padding-block:25px;display:grid}.project-architecture-row dt{font-size:.9375rem;font-weight:600}.project-architecture-row dd{color:var(--ink-muted);max-width:70ch;font-size:.9375rem;line-height:1.8}.project-stack{padding-block:48px 0}.project-stack .project-tag-list{margin-top:23px}.project-stack .project-tag-list li{padding:6px 14px;font-size:.875rem}.project-adjacent-nav{border-top:1px solid var(--rule-strong);grid-template-columns:repeat(2,minmax(0,1fr));gap:28px;margin-top:76px;padding-top:30px;display:grid}.project-adjacent-link{flex-direction:column;align-items:start;gap:11px;display:flex}.project-adjacent-link>span{color:var(--ink-muted);font-size:.8125rem}.project-adjacent-link strong{font-family:var(--font-display), sans-serif;letter-spacing:-.02em;align-items:center;gap:12px;font-size:clamp(1.1rem,2.5vw,1.7rem);font-weight:550;display:flex}.project-adjacent-next{text-align:right;align-items:end}@media (hover:hover) and (pointer:fine){.project-cover-link:hover .deployment-art{transform:translateY(-7px)rotate(-3deg)}.project-cover-link:hover .stream-art{transform:translate(12px)scale(1.04)}.project-cover-link:hover .mail-envelope--back{transform:translate(-13px,-6px)rotate(-21deg)}.project-cover-link:hover .mail-envelope--middle{transform:translate(13px,-9px)rotate(19deg)}.project-cover-link:hover .mail-envelope--front{transform:translateY(8px)rotate(-5deg)}.project-cover-link:hover .music-bar:nth-child(odd){transform:scaleY(.66)}.project-cover-link:hover .music-bar:nth-child(2n){transform:scaleY(1.13)}.project-cover-link:hover .project-cover-action{color:#f7f7f2;background:#202331;transform:rotate(-45deg)}.project-title-row a:hover,.project-links a:hover,.work-all-link:hover,.project-adjacent-link:hover strong,.project-back-link:hover{color:var(--accent)}.project-primary-action:hover{background:var(--ink)}.project-secondary-action:hover{background:var(--surface-hover)}}@media (max-width:900px){.project-title-row{display:block}.project-title-row>span{margin-top:6px;display:block}.project-index-row{grid-template-columns:minmax(0,1fr) 170px;gap:30px}.work-index-intro{gap:35px}.project-detail-header{grid-template-columns:minmax(0,1fr) 210px;gap:30px}.project-story-layout,.project-architecture-row{grid-template-columns:180px minmax(0,1fr);gap:35px}}@media (max-width:640px){.work-section-heading{margin-bottom:28px;display:block}.work-section-heading p{margin-top:18px;font-size:.875rem}.work-section-heading p br{display:none}.project-grid{grid-template-columns:minmax(0,1fr);gap:38px}.project-artwork{height:225px}.project-tile-content{padding-top:18px}.project-title-row{display:flex}.project-title-row h3{font-size:1.65rem}.project-title-row>span{margin-top:0;font-size:.7rem;display:inline}.project-summary{margin-top:10px}.project-links{padding-top:14px}.work-section-footer{margin-top:32px;padding-top:21px;display:block}.work-all-link{margin-top:15px}.work-index-page,.project-detail-page{padding-block:28px 65px}.work-index-intro{grid-template-columns:minmax(0,1fr);gap:26px;padding-block:15px 35px}.work-index-intro h1{font-size:clamp(2.7rem,10vw,4rem)}.work-index-intro-copy{font-size:.9375rem}.work-collection-heading{padding-block:50px 20px;display:block}.work-collection-heading h2,.project-story-layout>h2,.project-subsection-heading h2,.project-stack h2{font-size:1.75rem}.work-collection-heading p,.project-subsection-heading p{margin-top:12px}.project-index-row{grid-template-columns:minmax(0,1fr);gap:16px;padding-block:27px}.project-index-row .project-title-row{display:block}.project-index-row .project-title-row>span{margin-top:7px;font-size:.8125rem;display:block}.project-index-aside{padding-top:0;display:block}.project-index-aside .project-since{margin-left:16px}.project-index-aside .project-links{flex-direction:row;justify-content:space-between;align-items:center;gap:10px;padding-top:8px}.project-detail-header{grid-template-columns:minmax(0,1fr);gap:25px;margin-top:30px}.project-detail-header h1{font-size:clamp(2.7rem,11vw,4rem)}.project-detail-summary{margin-top:22px;font-size:1rem}.project-detail-facts dl{margin-top:12px}.project-detail-facts dl>div{grid-template-columns:90px 1fr}.project-detail-actions{margin-top:25px}.project-primary-action,.project-secondary-action{max-width:100%;padding-inline:13px;font-size:.8125rem}.project-detail-cover{margin-top:30px}.project-detail-cover .project-artwork{height:235px}.project-detail-cover .mail-art{transform:scale(.9)}.project-detail-cover .music-art{gap:9px;transform:none}.project-story-layout{grid-template-columns:minmax(0,1fr);gap:23px;padding-block:42px}.project-story{font-size:.9375rem}.project-subsection-heading{margin-bottom:22px;display:block}.project-architecture-row{grid-template-columns:minmax(0,1fr);gap:9px;padding-block:23px}.project-stack{padding-top:36px}.project-adjacent-nav{gap:16px;margin-top:48px;padding-top:24px}.project-adjacent-link strong{gap:7px}}.deployment-stage{display:block;position:absolute;inset:0}.mail-envelope-art,.stream-art-reveal{width:100%;height:100%;display:block}@media (prefers-reduced-motion:no-preference){.project-artwork.motion-ready:not(.is-visible) .deployment-stage,.project-artwork.motion-ready:not(.is-visible) .mail-envelope-art,.project-artwork.motion-ready:not(.is-visible) .stream-art-reveal,.project-artwork.motion-ready:not(.is-visible) .music-bar,.project-artwork.motion-ready:not(.is-visible) .tools-art{opacity:0}.project-artwork.motion-ready.is-visible .deployment-stage,.project-artwork.motion-ready.is-visible .mail-envelope-art,.project-artwork.motion-ready.is-visible .tools-art{animation:project-piece-enter .7s var(--ease-out) backwards}.project-artwork.motion-ready.is-visible .deployment-stage-two,.project-artwork.motion-ready.is-visible .mail-envelope--middle .mail-envelope-art{animation-delay:60ms}.project-artwork.motion-ready.is-visible .deployment-stage-three,.project-artwork.motion-ready.is-visible .mail-envelope--front .mail-envelope-art{animation-delay:.12s}.project-artwork.motion-ready.is-visible .stream-art-reveal{animation:project-stream-enter .8s var(--ease-out) backwards}.project-artwork.motion-ready.is-visible .music-bar{animation:project-bar-enter .6s var(--ease-out) backwards;animation-delay:calc(var(--bar-index) * 30ms)}.project-links .project-arrow,.project-adjacent-link .project-arrow,.project-back-link .project-arrow,.project-title-row .project-arrow,.work-all-link .project-arrow{transition:transform .2s var(--ease-out)}.project-cover-link:focus-visible .project-artwork *{animation:none}@media (hover:hover) and (pointer:fine){.project-links a:hover .project-arrow,.project-title-row a:hover .project-arrow,.work-all-link:hover .project-arrow,.project-adjacent-link:hover .project-arrow{transform:translate(3px)}.project-links a:hover .project-arrow--external{transform:translate(2px,-2px)rotate(-45deg)}.project-back-link:hover .project-arrow--left,.project-adjacent-link:hover .project-arrow--left{transform:translate(-3px)rotate(180deg)}}}@keyframes project-piece-enter{0%{opacity:0;transform:translateY(28px)scale(.95)}to{opacity:1;transform:none}}@keyframes project-stream-enter{0%{opacity:0;clip-path:inset(0 100% 0 0)}to{opacity:1;clip-path:inset(0)}}@keyframes project-bar-enter{0%{opacity:0;transform:scaleY(.65)}to{opacity:1;transform:scaleY(1)}}@media (prefers-reduced-motion:reduce){.project-artwork-geometry,.mail-envelope,.music-bar,.project-cover-action{transition:none}.project-cover-link:hover .project-artwork-geometry,.project-cover-link:hover .music-bar,.project-cover-link:hover .project-cover-action{transform:none}.project-cover-link:hover .mail-envelope--back{transform:rotate(-15deg)}.project-cover-link:hover .mail-envelope--middle{transform:rotate(14deg)}.project-cover-link:hover .mail-envelope--front{transform:rotate(-3deg)}}
