@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-display:swap;src:url(fonts/plex-sans-400.woff2) format("woff2")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-display:swap;src:url(fonts/plex-sans-500.woff2) format("woff2")}:root{--ground:#f2f1f0;--ink:#222120;--muted:#67645f;--soft:#e6e4e0;--paper:#f8f8f7;--m:clamp(20px,4vw,56px);--header:76px;--small:14px;--body:16px;--lead:clamp(18px,1.4vw,20px);--title:clamp(30px,3vw,40px);--display:clamp(56px,7.4vw,120px);--ease:cubic-bezier(.2,.8,.2,1);color-scheme:light}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:var(--header-height,var(--header));-webkit-text-size-adjust:100%}body{margin:0;background:var(--ground);color:var(--ink);font:400 var(--body)/1.55 "IBM Plex Sans",Arial,sans-serif;-webkit-font-smoothing:antialiased;overflow-x:clip}img,svg{display:block;max-width:100%}a{color:inherit;text-decoration:none}h1,h2,h3,p,figure,ul{margin:0}ul{padding:0;list-style:none}button{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--ink);outline-offset:4px}::selection{background:var(--ink);color:var(--ground)}.skip-link{position:absolute;left:var(--m);top:-80px;z-index:50;background:var(--ink);color:var(--ground);padding:12px 18px}.skip-link:focus{top:12px}.visually-hidden{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.site-header{position:sticky;top:0;z-index:20;min-height:var(--header);display:flex;flex-wrap:wrap;gap:0 24px;align-items:center;justify-content:space-between;padding:0 var(--m);background:var(--ground)}.wordmark{font-weight:500;letter-spacing:-.01em;white-space:nowrap}.site-header nav{display:flex;flex-wrap:wrap;gap:0 32px}.site-header nav a{color:var(--muted);min-height:44px;display:inline-flex;align-items:center;transition:color .2s}.site-header nav a:hover,.site-header nav a[aria-current]{color:var(--ink)}.hero{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:end;gap:40px;padding:0 var(--m) clamp(48px,8vh,96px);min-height:calc(100svh - var(--header-height,var(--header)))}.hero-text{min-width:0;display:flex;flex-direction:column;gap:24px;padding-bottom:8px}.hero h1{overflow-wrap:anywhere;font-size:var(--display);font-weight:400;line-height:.95;letter-spacing:-.045em}.hero-role{font-size:var(--lead);line-height:1.45;color:var(--muted);max-width:32ch}.hero-more{align-self:flex-start;display:inline-flex;align-items:center;gap:8px;min-height:44px;font-size:var(--small);color:var(--ink)}.hero-more span{transition:transform .3s var(--ease)}.hero-more:hover span{transform:translateY(3px)}.hero-stage{min-width:0;position:relative;align-self:stretch;min-height:420px}#stage{position:absolute;inset:0}#stage canvas{position:absolute;inset:0}#render-status{position:absolute;left:0;bottom:0;font-size:var(--small);color:var(--muted)}.record-preview{display:grid;grid-template-columns:44px minmax(0,1fr);gap:6px 14px;align-items:center}.preview-play{width:44px;height:44px;border:0;border-radius:50%;display:grid;place-items:center;cursor:pointer;background:var(--ink);color:var(--ground);transition:transform .16s var(--ease)}.preview-play svg{width:16px;height:16px;fill:currentColor}.preview-play:active{transform:scale(.94)}.preview-info{display:flex;flex-direction:column;gap:6px;min-width:0}.preview-label{font-size:var(--small);color:var(--muted)}.preview-timeline{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:10px;align-items:center;font-size:13px;color:var(--muted);font-variant-numeric:tabular-nums}.preview-progress{height:2px;background:var(--soft);overflow:hidden}.preview-progress-fill{display:block;height:100%;background:var(--ink);transform:scaleX(0);transform-origin:left;transition:transform .25s linear}.preview-message{grid-column:1/-1;font-size:13px;color:var(--muted)}.preview-message:empty{display:none}.lab-work{padding:clamp(96px,14vh,160px) var(--m) 0}.work-head{display:flex;align-items:baseline;justify-content:space-between;gap:16px 32px;flex-wrap:wrap;margin-bottom:40px}.lab-work h2,.contact h2{font-size:var(--title);font-weight:400;line-height:1.1;letter-spacing:-.03em}.lab-project-count{font-size:var(--small);letter-spacing:0;color:var(--muted);vertical-align:super;margin-left:4px}.work-filters{display:flex;flex-wrap:wrap;gap:0 24px}.work-filter{min-height:44px;padding:0;border:0;background:none;cursor:pointer;color:var(--muted);transition:color .2s}.work-filter span{font-size:13px;margin-left:2px;font-variant-numeric:tabular-nums}.work-filter:hover,.work-filter[aria-pressed=true]{color:var(--ink)}.lab-projects{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:40px 20px}.lab-record{display:flex;flex-direction:column;padding:0;border:0;background:none;text-align:left;cursor:pointer;color:inherit;min-width:0}.lab-record[hidden]{display:none}.lab-art{position:relative;display:block;aspect-ratio:1;overflow:hidden;background:var(--soft)}.lab-art img{width:100%;height:100%;object-fit:cover;transition:transform .6s var(--ease),opacity .3s}.lab-kind,.project-open,.record-role{display:none}.record-meta{min-width:0;overflow-wrap:anywhere;display:flex;flex-direction:column;padding-top:12px;line-height:1.4}.record-artist{font-size:15px;font-weight:500}.record-release{font-size:var(--small);color:var(--muted)}.lab-record:focus-visible{outline-offset:6px}.contact{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:clamp(32px,5vw,80px);align-items:end;padding:clamp(120px,18vh,200px) var(--m) 0}.contact-photo{min-width:0;overflow:hidden;background:var(--soft)}.contact-photo img{width:100%;height:auto;aspect-ratio:1600/1061;object-fit:cover;filter:grayscale(1)}.contact-text{min-width:0;display:flex;flex-direction:column;gap:24px;padding-bottom:4px}.contact-links{display:flex;flex-direction:column;gap:6px;font-size:var(--lead)}.contact-links a{max-width:100%;overflow-wrap:anywhere;display:inline-flex;min-height:40px;align-items:center;background:linear-gradient(currentColor,currentColor) 0 calc(100% - 6px) /0 1px no-repeat;transition:background-size .3s var(--ease)}.contact-links a:hover{background-size:100% 1px}.site-footer{display:flex;flex-wrap:wrap;overflow-wrap:anywhere;justify-content:space-between;gap:16px;padding:clamp(64px,10vh,120px) var(--m) 32px;font-size:var(--small);color:var(--muted)}.site-footer a{transition:color .2s}.site-footer a:hover{color:var(--ink)}.lab-dialog{width:min(960px,calc(100% - 32px));max-height:calc(100svh - 32px);padding:0;border:0;background:var(--paper);color:var(--ink);overflow:auto;overscroll-behavior:contain}.lab-dialog::backdrop{background:#222120b3}html:has(.lab-dialog[open]){overflow:hidden}.lab-dialog-close{position:sticky;top:0;z-index:3;margin-left:auto;display:flex;align-items:center;gap:10px;min-height:52px;padding:0 20px;border:0;background:var(--paper);cursor:pointer;font-size:var(--small)}.dialog-close-icon{font-size:20px;line-height:1}.dialog-close-label{transition:opacity .2s}.lab-dialog[data-pointer-open] .lab-dialog-close:focus{outline:none}.lab-dialog-close{transition:background-color .2s,padding .2s}.lab-dialog[data-close-compact] .lab-dialog-close{background:transparent;padding:0;width:52px;justify-content:center}.lab-dialog[data-close-compact] .dialog-close-label{opacity:0;position:absolute;pointer-events:none;max-width:100%;overflow:hidden}.lab-dialog[data-close-compact] .dialog-close-icon{font-size:26px;text-shadow:0 0 6px #f8f8f7,0 0 2px #f8f8f7}.lab-detail-content{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px;padding:0 24px 24px;margin-top:-28px}.lab-detail-image{width:100%;height:auto;aspect-ratio:1;object-fit:cover;background:var(--soft)}.lab-detail-copy{min-width:0;overflow-wrap:anywhere;padding:40px 16px 16px 24px;display:flex;flex-direction:column;gap:14px}.lab-detail-copy h2{font-size:var(--title);font-weight:400;line-height:1.05;letter-spacing:-.03em}.lab-release-title{display:flex;flex-wrap:wrap;align-items:baseline;column-gap:10px;font-size:var(--lead)}.lab-release-kind{font-size:var(--small);color:var(--muted)}.lab-roles{font-weight:500}.lab-detail-copy p{max-width:52ch}.lab-other-credits p{font-size:var(--small);line-height:1.7;color:var(--muted)}.show-archive summary{display:flex;align-items:center;gap:10px;min-height:44px;cursor:pointer;list-style:none;font-weight:500}.show-archive summary::-webkit-details-marker{display:none}.show-archive summary small{color:var(--muted);font-weight:400}.show-archive summary svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.6;transition:transform .2s}.show-archive[open] summary svg{transform:rotate(90deg)}.show-archive table{width:100%;border-collapse:collapse;font-size:13px}.show-archive td{padding:6px 12px 6px 0;vertical-align:top}.show-archive td small{display:block;color:var(--muted)}.show-archive h3{font-size:13px;color:var(--muted);font-weight:500;margin-top:10px}.show-archive li{font-size:13px}.lab-project-listen{display:flex;flex-direction:column;gap:14px;margin-top:12px}.lab-project-links,.streaming-links{display:flex;flex-wrap:wrap;gap:20px}.lab-project-links a{min-height:44px;display:inline-flex;align-items:center;background:linear-gradient(currentColor,currentColor) 0 calc(100% - 10px) /100% 1px no-repeat}.lab-project-links a:hover{color:var(--muted)}@media(prefers-reduced-motion:no-preference){.js #stage canvas{opacity:0}.js #stage.art-ready canvas{opacity:1;animation:hero-art-in .8s ease-out both}.js .rise{opacity:0;transform:translateY(16px);transition:opacity .8s var(--ease),transform .8s var(--ease);transition-delay:calc(var(--d,0) * 90ms + .1s)}.js .rise.risen{opacity:1;transform:none}.js .contact-photo img{opacity:0;transform:scale(1.04);transition:opacity 1s var(--ease),transform 1.4s var(--ease)}.js .contact-photo.risen img{opacity:1;transform:none}.lab-record:hover img{transform:scale(1.03)}.lab-dialog[open]{animation:dialog-in .3s var(--ease) both}.lab-dialog[open]::backdrop{animation:fade-in .2s ease both}}@keyframes dialog-in{0%{opacity:0;transform:translateY(12px)}}@keyframes fade-in{0%{opacity:0}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}@media(max-width:1200px){.lab-projects{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(max-width:900px)and (orientation:portrait){.hero{grid-template-columns:1fr;grid-template-rows:minmax(140px,1fr) auto;align-items:stretch;height:auto;min-height:calc(100svh - var(--header-height,var(--header)))}.hero-stage{order:-1;min-height:0}}@media(max-height:560px){.hero-stage{min-height:0}.hero{min-height:calc(100svh - var(--header-height,var(--header)))}}@media(max-width:900px){.lab-projects{grid-template-columns:repeat(3,minmax(0,1fr))}.contact{grid-template-columns:1fr}}@media(max-width:600px){:root{--header:64px}.site-header nav{column-gap:24px}.hero{gap:8px;padding-bottom:clamp(20px,5svh,40px)}.hero-text{gap:14px}.hero h1{overflow-wrap:anywhere;font-size:clamp(52px,16vw,72px)}.lab-projects{grid-template-columns:repeat(2,minmax(0,1fr));gap:28px 12px}.record-artist{font-size:var(--small)}.record-release{font-size:13px}.site-footer{padding-top:72px}.lab-dialog{width:calc(100% - 12px);max-height:calc(100svh - 12px)}.lab-detail-content{grid-template-columns:1fr;margin-top:0;padding:0 12px 16px}.lab-detail-copy{min-width:0;overflow-wrap:anywhere;padding:16px 4px}}@keyframes hero-art-in{0%{opacity:0}to{opacity:1}}
