:root{--ink:#0c0b0a;--ink-2:#14110e;--ink-3:#1f1914;--walnut:#2a1c12;--walnut-soft:#3d2818;--paper:#f3eee4;--paper-dim:#b0a594;--signal:#d4a84b;--signal-soft:#e8c56a;--brass:#c4923a;--ivory:#f6f1e7;--slate:#b0a594;--line:#f3eee41f;--line-strong:#f3eee442;--shadow:0 28px 70px #0000008c;--font-display:"Space Grotesk", "Figtree", sans-serif;--font-body:"Figtree", sans-serif;--font-mono:"IBM Plex Mono", ui-monospace, monospace;--ease:cubic-bezier(.22, 1, .36, 1);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth}body{min-height:100vh;font-family:var(--font-body);color:var(--paper);-webkit-font-smoothing:antialiased;background:#050504;margin:0;font-size:1.02rem;line-height:1.65}body:before{content:"";pointer-events:none;opacity:.04;z-index:50;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");position:fixed;inset:0}#root{min-height:100vh}img{max-width:100%;display:block}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0}h1,h2,h3{font-family:var(--font-display);letter-spacing:-.03em;margin:0 0 .5em;font-weight:600;line-height:1.05}p{margin:0 0 1em}::selection{background:var(--signal);color:#17120a}.eyebrow{font-family:var(--font-mono);letter-spacing:.22em;text-transform:uppercase;color:var(--signal);margin-bottom:.9rem;font-size:.72rem;font-weight:500}.btn{font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;transition:transform .25s var(--ease), background .25s var(--ease), border-color .25s var(--ease), color .25s var(--ease), box-shadow .25s var(--ease);border-radius:4px;justify-content:center;align-items:center;gap:.5rem;padding:.8rem 1.3rem;font-size:.82rem;font-weight:500;display:inline-flex}.btn:hover{transform:translateY(-1px)}.btn--primary{background:linear-gradient(180deg, var(--signal-soft) 0%, var(--signal) 100%);color:#17120a}.btn--primary:hover{background:linear-gradient(180deg, #f0d08a 0%, var(--signal-soft) 100%)}.btn--ghost{border:1px solid var(--line-strong);color:var(--paper);background:#2a1c1259}.btn--ghost:hover{border-color:var(--signal);color:var(--signal-soft);background:#3d281873}.section{width:min(1160px,100% - clamp(2.5rem,8vw,5rem));margin:0 auto;padding:4.5rem 0 1rem}.section__head{border-top:1px solid var(--line);max-width:44rem;margin-bottom:2.75rem;padding-top:1.6rem}.section__head h2{font-size:clamp(1.9rem,3.6vw,2.7rem)}.section__lede{color:var(--paper-dim);font-size:1.02rem}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.btn:hover,.projects__card:hover{transform:none}}.concept{font-family:var(--font-body)}.spotify__frame{background:#121212;border:0;border-radius:12px;display:block}.spotify__link{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--signal-soft);margin-top:.8rem;font-size:.72rem;display:inline-block}.spotify__link:hover{text-decoration:underline}.img-empty{background:#7f7f7f26}.concept-a{--ca-gutter:clamp(1.25rem, 5vw, 4rem);background:radial-gradient(120% 60% at 80% -10%, #d4a84b1f, transparent 60%), var(--ink);min-height:100vh;color:var(--paper);position:relative;overflow-x:clip}.concept-a h2{font-size:clamp(2rem,4.4vw,3.4rem);line-height:1.02}.ca-header{z-index:40;padding:.85rem var(--ca-gutter);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-bottom:1px solid var(--line);background:#0c0b0ae0;justify-content:space-between;align-items:center;gap:1.5rem;display:flex;position:sticky;top:0}.ca-brand{flex-direction:column;min-width:0;display:flex}.ca-brand__name{font-family:var(--font-display);letter-spacing:-.01em;white-space:nowrap;font-size:1.1rem;font-weight:700}.ca-brand__role{font-family:var(--font-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--paper-dim);white-space:nowrap;font-size:.64rem}.ca-keys{flex:none;width:min(560px,52vw)}.ca-keys__board{--black-w:calc(100% / 7 * .56);background:linear-gradient(#3d2818,#2a1c12);border-radius:8px 8px 4px 4px;grid-template-columns:repeat(7,1fr);gap:2px;height:64px;padding:3px 3px 0;display:grid;position:relative;box-shadow:inset 0 1px #ffffff14,0 10px 30px #00000080}.ca-key{color:#2a1c12;font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;transition:transform .12s var(--ease), background .2s var(--ease), box-shadow .2s var(--ease);cursor:pointer;background:linear-gradient(#fbf7ee 0%,#ebe3d2 100%);border-radius:0 0 6px 6px;flex-direction:column;justify-content:flex-end;align-items:center;gap:.15rem;padding:0 .15rem .45rem;font-size:.64rem;font-weight:500;display:flex;position:relative;box-shadow:inset 0 -4px #0000001f}.ca-key:hover{background:linear-gradient(#fff 0%,#f1e3bd 100%)}.ca-key:active{transform:translateY(2px);box-shadow:inset 0 -1px #0003}.ca-key:focus-visible{outline:2px solid var(--signal-soft);outline-offset:1px;z-index:3}.ca-key.is-active{background:linear-gradient(180deg, var(--signal-soft) 0%, var(--signal) 100%);box-shadow:inset 0 -4px #0000002e,0 0 18px #e8c56a73}.ca-key__label{text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.ca-key__ext{opacity:.6;font-size:.55rem;position:absolute;top:.3rem;right:.35rem}.ca-key-black{width:var(--black-w);z-index:2;cursor:pointer;height:58%;transition:transform .1s var(--ease);background:linear-gradient(#2b2b2b 0%,#0b0b0b 100%);border-radius:0 0 4px 4px;position:absolute;top:3px;box-shadow:inset 0 -3px #ffffff12,0 3px 6px #00000080}.ca-key-black:active{transform:translateY(2px)}.ca-overture{min-height:min(86vh,820px);padding:clamp(3rem, 8vh, 6rem) var(--ca-gutter);grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);align-items:center;gap:clamp(2rem,5vw,5rem);display:grid;position:relative}.ca-kicker{font-family:var(--font-display);letter-spacing:.08em;text-transform:uppercase;color:var(--signal-soft);margin:0 0 1.1rem;font-size:.85rem;font-weight:600}.ca-name{letter-spacing:-.045em;margin:0 0 1.4rem;font-size:clamp(3.2rem,8.4vw,7.2rem);font-weight:700;line-height:.92}.ca-headline{max-width:24ch;font-family:var(--font-display);color:var(--signal-soft);margin:0 0 1rem;font-size:clamp(1.25rem,2.4vw,1.85rem);font-weight:600;line-height:1.22}.ca-lede{color:#f7f2eab8;max-width:34rem;margin:0 0 1.8rem}.ca-cta{flex-wrap:wrap;gap:.75rem;display:flex}.ca-hint{font-family:var(--font-mono);letter-spacing:.06em;color:var(--paper-dim);margin:1.6rem 0 0;font-size:.72rem}.ca-hint span{color:var(--signal)}.ca-overture__visual{aspect-ratio:16/10;border:1px solid var(--line);box-shadow:var(--shadow), 0 0 90px #d4a84b24;background:#000;border-radius:14px;margin:0;position:relative;overflow:hidden}.ca-overture__visual img{object-fit:cover;width:100%;height:100%}.ca-overture__visual:after{content:"";background:radial-gradient(90% 80% at 50% 60%,#0000 50%,#0505048c);position:absolute;inset:0}.ca-section{padding:clamp(4rem, 9vw, 7rem) var(--ca-gutter);scroll-margin-top:5rem}.ca-overture,#top{scroll-margin-top:5rem}.ca-section__head{max-width:46rem;margin-bottom:clamp(1.8rem,4vw,3rem)}.ca-section__lede{color:#f7f2eabd;max-width:42rem;font-size:1.08rem}.ca-listen{background:linear-gradient(#0000,#2a1c1259 40%,#0000);grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);align-items:start;gap:clamp(2rem,5vw,5rem);display:grid}.ca-pull{border-left:3px solid var(--signal);background:#2a1c1273;border-radius:0 10px 10px 0;margin-top:2rem;padding:1.4rem 1.5rem}.ca-pull__title{font-family:var(--font-display);letter-spacing:-.02em;color:var(--signal-soft);margin:0 0 .5rem;font-size:1.35rem;font-weight:600}.ca-pull p:last-child{color:#f7f2eacc;margin-bottom:0}.ca-listen__player .spotify{border:1px solid var(--line-strong);box-shadow:var(--shadow);background:linear-gradient(160deg,#2a1c12,#14110e);border-radius:16px;padding:.9rem}.ca-cues{grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(1rem,2.5vw,2rem);margin:0;padding:0;list-style:none;display:grid}.ca-cue__link{border:1px solid var(--line);background:var(--ink-2);height:100%;transition:transform .35s var(--ease), border-color .35s var(--ease);border-radius:14px;display:block;position:relative;overflow:hidden}.ca-cue__link:hover{border-color:var(--signal);transform:translateY(-4px)}.ca-cue__num{z-index:2;font-family:var(--font-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--signal-soft);background:#0c0b0ac7;border-radius:999px;padding:.25rem .6rem;font-size:.66rem;position:absolute;top:1rem;left:1rem}.ca-cue__img{aspect-ratio:16/9;object-fit:cover;background:#000;width:100%}.ca-cue__body{gap:.45rem;padding:1.4rem 1.5rem 1.6rem;display:grid}.ca-cue__sub{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--signal);font-size:.7rem}.ca-cue__title{font-family:var(--font-display);letter-spacing:-.03em;font-size:clamp(1.6rem,2.6vw,2.2rem);font-weight:600;line-height:1.05}.ca-cue__summary{color:#f7f2eab8;font-size:.97rem}.ca-cue__open{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--signal-soft);margin-top:.4rem;font-size:.74rem}.ca-also{border-top:1px solid var(--line);margin:clamp(1rem,2.5vw,2rem) 0 0;padding:0;list-style:none}.ca-also a{border-bottom:1px solid var(--line);transition:color .2s var(--ease), padding .25s var(--ease);grid-template-columns:minmax(0,1.2fr) minmax(0,1fr) auto;align-items:baseline;gap:1rem;padding:1.1rem .25rem;display:grid}.ca-also a:hover{color:var(--signal-soft);padding-left:.9rem}.ca-also__title{font-family:var(--font-display);font-size:1.15rem;font-weight:600}.ca-also__sub{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--paper-dim);font-size:.72rem}.ca-craft{padding-top:0}.ca-craft__panel{border:1px solid var(--line-strong);background:linear-gradient(135deg, #3d2818b3, #14110ee6), var(--walnut);border-radius:18px;grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr);gap:clamp(1.5rem,4vw,4rem);padding:clamp(1.8rem,4vw,3.5rem);display:grid}.ca-craft h2{font-size:clamp(1.7rem,3.2vw,2.6rem)}.ca-roles{align-self:center;gap:0;margin:0;padding:0;list-style:none;display:grid}.ca-roles li{border-top:1px solid var(--line);gap:.1rem;padding:.95rem 0;display:grid}.ca-roles li:first-child{border-top:0}.ca-roles__period{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--signal);font-size:.7rem}.ca-roles__role{font-family:var(--font-display);font-size:1.15rem;font-weight:600}.ca-roles__org{color:var(--paper-dim);font-size:.92rem}.ca-about{grid-template-columns:minmax(0,.7fr) minmax(0,1.3fr);align-items:start;gap:clamp(2rem,5vw,5rem);display:grid}.ca-about__portrait{border:1px solid var(--line);box-shadow:var(--shadow);border-radius:14px;margin:0;position:sticky;top:6.5rem;overflow:hidden}.ca-about__portrait img{aspect-ratio:4/5;object-fit:cover;object-position:center 20%;width:100%}.ca-about__lead{font-family:var(--font-display);letter-spacing:-.02em;color:var(--paper);font-size:clamp(1.3rem,2.2vw,1.8rem);font-weight:500;line-height:1.25}.ca-about__copy p{color:#f7f2eac2;max-width:44rem}.ca-about__copy .ca-about__lead{color:var(--paper)}.ca-contact{padding:clamp(5rem, 11vw, 9rem) var(--ca-gutter);background:#000;scroll-margin-top:5rem;position:relative;overflow:hidden}.ca-contact__bg{object-fit:cover;opacity:.55;width:100%;height:100%;position:absolute;inset:0}.ca-contact__veil{background:linear-gradient(180deg, var(--ink) 0%, #0c0b0a8c 40%, #0c0b0ae6 100%);position:absolute;inset:0}.ca-contact__inner{max-width:46rem;position:relative}.ca-footer{padding:1.6rem var(--ca-gutter);border-top:1px solid var(--line);font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--paper-dim);justify-content:space-between;gap:1rem;font-size:.72rem;display:flex}.ca-footer p{margin:0}@media (width<=960px){.ca-overture,.ca-listen,.ca-craft__panel,.ca-about{grid-template-columns:minmax(0,1fr)}.ca-overture{min-height:0}.ca-about__portrait{max-width:22rem;position:static}}@media (width<=720px){.concept-a{padding-bottom:82px}.ca-header{padding:.7rem var(--ca-gutter);-webkit-backdrop-filter:none;backdrop-filter:none;background:#0c0b0af5}.ca-brand__role{display:none}.ca-keys{z-index:45;width:100%;padding:.4rem .5rem calc(.4rem + env(safe-area-inset-bottom));border-top:1px solid var(--line-strong);background:#0c0b0af0;position:fixed;inset:auto 0 0}.ca-keys__board{height:66px}.ca-key{letter-spacing:.02em;padding-bottom:.4rem;font-size:.56rem}.ca-cues{grid-template-columns:minmax(0,1fr)}.ca-also a{grid-template-columns:minmax(0,1fr) auto}.ca-also__sub{grid-area:2/1}.ca-also a span[aria-hidden]{grid-area:1/2/span 2}.ca-footer{flex-direction:column;padding-bottom:1.6rem}}.app{position:relative;overflow-x:clip}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{z-index:100;border:1px solid var(--line);background:var(--ink-2);color:var(--paper);font-family:var(--font-mono);letter-spacing:.08em;transition:transform .2s var(--ease);border-radius:6px;padding:.7rem 1.1rem;font-size:.78rem;position:fixed;top:.75rem;left:.75rem;transform:translateY(calc(-100% - 1.5rem))}.skip-link:focus-visible{outline:2px solid var(--signal);outline-offset:2px;transform:translateY(0)}.gpu{backface-visibility:hidden;transform:translateZ(0)}.gpu-scroll,.gpu-media{backface-visibility:hidden;contain:paint;transform:translateZ(0)}@media (width>=861px) and (hover:hover) and (pointer:fine){.gpu-scroll{will-change:transform, opacity}.gpu-media{will-change:transform}}@media (width<=860px),(pointer:coarse){.gpu-scroll,.gpu-media{will-change:auto}}@media (prefers-reduced-motion:reduce){.gpu-scroll,.gpu-media{will-change:auto}}.hero{view-timeline-name:--hero;view-timeline-axis:block}@supports (animation-timeline:view()){.parallax-hero-media{animation:linear both parallax-hero-media;animation-timeline:--hero;animation-range:exit}.parallax-hero-content{animation:linear both parallax-hero-content;animation-timeline:--hero;animation-range:exit}.parallax-project{animation:linear both parallax-project-enter;animation-timeline:view();animation-range:entry cover 40%}.parallax-project-media{animation:linear both parallax-project-media;animation-timeline:view();animation-range:entry cover 45%}.parallax-contact-bg{animation:linear both parallax-contact-bg;animation-timeline:view();animation-range:entry exit}.parallax-portrait{animation:linear both parallax-portrait;animation-timeline:view();animation-range:entry exit}@keyframes parallax-hero-media{0%{transform:translate(0,0)scale(1)}to{transform:translateY(28%)scale(1.18)}}@keyframes parallax-hero-content{0%{opacity:1;transform:translate(0,0)}to{opacity:0;transform:translateY(18%)}}@keyframes parallax-project-enter{0%{transform:translate3d(var(--parallax-x,48px), 0, 0);opacity:.15}to{opacity:1;transform:translate(0,0)}}@keyframes parallax-project-media{0%{transform:translate(0,0)scale(1.12)}to{transform:translate(0,0)scale(1)}}@keyframes parallax-contact-bg{0%{transform:translateY(8%)scale(1.15)}to{transform:translateY(-8%)scale(1)}}@keyframes parallax-portrait{0%{transform:translateY(50px)}to{transform:translateY(-30px)}}@media (width<=860px),(pointer:coarse){@keyframes parallax-hero-media{0%{transform:translate(0,0)scale(1)}to{transform:translateY(14%)scale(1.08)}}@keyframes parallax-hero-content{0%{opacity:1;transform:translate(0,0)}to{opacity:0;transform:translateY(10%)}}@keyframes parallax-project-enter{0%{transform:translate3d(var(--parallax-x,22px), 0, 0);opacity:.15}to{opacity:1;transform:translate(0,0)}}@keyframes parallax-project-media{0%{transform:translate(0,0)scale(1.06)}to{transform:translate(0,0)scale(1)}}@keyframes parallax-contact-bg{0%{transform:translateY(4%)scale(1.06)}to{transform:translateY(-4%)scale(1)}}@keyframes parallax-portrait{0%{transform:translateY(28px)}to{transform:translateY(-16px)}}}}@media (prefers-reduced-motion:reduce){.parallax-hero-media,.parallax-hero-content,.parallax-project,.parallax-project-media,.parallax-contact-bg,.parallax-portrait{opacity:1!important;animation:none!important;transform:none!important}}.nav{z-index:40;transition:background .3s var(--ease), backdrop-filter .3s var(--ease), border-color .3s var(--ease);border-bottom:1px solid #0000;justify-content:space-between;align-items:center;gap:.75rem;padding:1.1rem clamp(1.5rem,4.5vw,2.75rem);display:flex;position:fixed;inset:0 0 auto}@media (width<=860px),(pointer:coarse){.nav,.nav--solid{-webkit-backdrop-filter:none;background:#0c0b0af0}}.nav__brand{min-width:0;font-family:var(--font-display);letter-spacing:-.01em;align-items:center;gap:.6rem;font-size:1.05rem;font-weight:700;display:inline-flex}.nav__name{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.nav__links{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--paper-dim);flex:none;gap:clamp(.75rem,2.5vw,1.9rem);font-size:.74rem;display:flex}.nav__links a{transition:color .2s var(--ease), border-color .2s var(--ease);border-bottom:1px solid #0000;align-items:baseline;gap:.45rem;padding:.2rem 0;display:inline-flex}.nav__links a:hover{color:var(--paper);border-bottom-color:var(--signal)}@media (width<=860px){.nav__links{gap:.75rem;font-size:.68rem}}@media (width<=720px){.nav{gap:.65rem;padding:.85rem 1rem}.nav__brand{font-size:.92rem}.nav__links{letter-spacing:.1em;gap:.55rem;font-size:.62rem}}@media (width<=420px){.nav__links{gap:.45rem;font-size:.58rem}}.hero{align-items:end;min-height:100svh;display:grid;position:relative;overflow:hidden}.hero__media{background:#050504;position:absolute;inset:-8% 0;overflow:hidden}.hero__image{object-fit:cover;object-position:center 40%;width:100%;height:100%}.hero__veil{background:linear-gradient(#05050426 0%,#05050473 45%,#050504f5 82%,#050504 100%),linear-gradient(95deg,#050504c7 0%,#0000 55%);position:absolute;inset:0}.hero__glow{pointer-events:none;background:radial-gradient(#e8c56a38,#0000 70%);height:55%;position:absolute;inset:12% 0 auto}.hero__content{z-index:2;width:min(1160px,100% - clamp(2.5rem,8vw,5rem));margin:0 auto;padding:clamp(6.5rem,14vh,8.5rem) 0 clamp(6rem,12vh,8rem);position:relative}.hero__kicker{font-family:var(--font-display);letter-spacing:.08em;text-transform:uppercase;color:var(--signal-soft);margin:0 0 1.1rem;font-size:.85rem;font-weight:600;display:inline-flex}.hero__brand{font-family:var(--font-display);letter-spacing:-.035em;color:var(--paper);flex-wrap:wrap;gap:.18em;margin:0 0 1.4rem;font-size:clamp(2.9rem,8vw,6.2rem);font-weight:700;line-height:.95;display:flex}.hero__brand-word{padding-bottom:.06em;display:inline-flex;overflow:hidden}.hero__brand-char{display:inline-block}.hero__brand-space{width:.28em}.hero h1{max-width:20ch;color:var(--signal-soft);margin:0 0 1rem;font-size:clamp(1.25rem,2.6vw,1.9rem);font-weight:600;line-height:1.25}.hero__lede{color:#f7f2eab8;max-width:34rem;margin:0 0 1.8rem;font-size:1.05rem}.hero__cta{flex-wrap:wrap;gap:.75rem;display:flex}.focus{width:min(1160px,100% - clamp(2.5rem,8vw,5rem));margin:0 auto;padding:4.5rem 0 1rem}.focus__list{border-top:1px solid var(--line)}.focus__row{border-bottom:1px solid var(--line)}.focus__row-head{text-align:left;width:100%;transition:background .2s var(--ease);grid-template-columns:minmax(7rem,12rem) 1fr 2rem;align-items:baseline;gap:1rem;padding:1.35rem .25rem;display:grid}.focus__row-head:hover{background:#f0ece308}.focus__label{font-family:var(--font-display);letter-spacing:-.02em;color:var(--paper);font-size:clamp(1.25rem,2.4vw,1.7rem);font-weight:600}.focus__headline{color:var(--paper-dim);font-size:.95rem}.focus__toggle{font-family:var(--font-mono);color:var(--signal);transition:transform .25s var(--ease);justify-self:end;font-size:1.1rem}.focus__row.is-open .focus__toggle{transform:rotate(180deg)}.focus__row.is-open .focus__label{color:var(--signal-soft)}.focus__panel{max-width:46rem;padding:0 .25rem 1.6rem}.focus__panel p{color:var(--paper-dim);margin:0;font-size:1rem}@media (width<=720px){.focus__row-head{grid-template-columns:1fr 2rem}.focus__headline{grid-column:1/2;font-size:.85rem}}.score__spotify-list{gap:.75rem;max-width:720px;display:grid}.score__spotify{border:1px solid var(--line);background:#121212;border-radius:12px;overflow:hidden}.score__spotify-frame{vertical-align:top;border:0;width:100%;height:560px;display:block}.score__spotify-frame[data-kind=track]{height:152px}.score__stage{border:1px solid var(--line);background:var(--ink-2);border-radius:10px;position:relative;overflow:hidden}.score__wave-frame{opacity:.5;pointer-events:none;position:absolute;inset:0}.score__wave{width:100%;height:100%;display:block}.score__list{gap:.35rem;margin:0;padding:.5rem;list-style:none;display:grid;position:relative}.score__item{transition:background .25s var(--ease);border-radius:8px}.score__row{text-align:left;width:100%;transition:border-color .2s var(--ease);border-left:2px solid #0000;border-radius:8px;grid-template-columns:2.6rem 1fr auto;align-items:center;gap:.75rem;padding:.9rem 1rem;display:grid}.score__row:hover{border-left-color:var(--line-strong)}.score__row.is-playing{border-left-color:var(--signal)}.score__play{border:1px solid var(--line-strong);width:2.4rem;height:2.4rem;color:var(--paper);transition:background .2s var(--ease), border-color .2s var(--ease), color .2s var(--ease);border-radius:6px;place-items:center;display:grid}.score__row:hover .score__play{border-color:var(--signal);color:var(--signal-soft)}.score__row.is-playing .score__play{background:var(--signal);border-color:var(--signal);color:#17130a}.score__icon{width:1rem;height:1rem}.score__meta{gap:.15rem;min-width:0;display:grid}.score__title{font-family:var(--font-display);letter-spacing:-.01em;text-overflow:ellipsis;white-space:nowrap;font-size:1.05rem;font-weight:600;overflow:hidden}.score__mood{color:var(--paper-dim);text-overflow:ellipsis;white-space:nowrap;font-size:.85rem;overflow:hidden}.score__bpm{font-family:var(--font-mono);letter-spacing:.12em;color:var(--slate);border:1px solid var(--line);border-radius:4px;padding:.25rem .5rem;font-size:.7rem}.score__error{color:#ff9c7a;margin:.25rem 1rem .75rem;font-size:.85rem}.score__scrub{grid-template-columns:3rem 1fr 3rem;align-items:center;gap:.75rem;padding:0 1rem .9rem 4.35rem;display:grid}.score__time{font-family:var(--font-mono);color:var(--paper-dim);font-variant-numeric:tabular-nums;font-size:.7rem}.score__range{--score-progress:0%;appearance:none;cursor:pointer;background:0 0;border-radius:999px;width:100%;height:28px}.score__range::-webkit-slider-runnable-track{background:linear-gradient(90deg, var(--signal) var(--score-progress), #f0ece329 var(--score-progress));border-radius:999px;height:3px}.score__range::-moz-range-track{background:#f0ece329;border-radius:999px;height:3px}.score__range::-moz-range-progress{background:var(--signal);border-radius:999px;height:3px}.score__range::-webkit-slider-thumb{appearance:none;background:var(--signal);border:none;border-radius:3px;width:14px;height:14px;margin-top:-5.5px}.score__range::-moz-range-thumb{background:var(--signal);border:none;border-radius:3px;width:14px;height:14px}.score__range:disabled{cursor:default;opacity:.5}.projects__index{gap:1.25rem;margin:0;padding:0;list-style:none;display:grid}.projects__feature{min-height:220px;transition:border-color .35s var(--ease), transform .4s var(--ease), box-shadow .4s var(--ease);background:linear-gradient(135deg,#2a1c128c 0%,#14110ed9 55%,#0c0b0af2 100%);border:1px solid #d4a84b24;border-radius:4px;grid-template-columns:auto 1fr minmax(220px,38%);align-items:stretch;gap:clamp(1rem,3vw,2rem);padding:clamp(1.25rem,3vw,1.75rem);display:grid;position:relative;overflow:hidden}.projects__feature:before{content:"";pointer-events:none;opacity:.8;background:radial-gradient(600px 240px at 0 0,#d4a84b1f,#0000 60%);position:absolute;inset:0}.projects__feature:hover{border-color:#d4a84b66;transform:translateY(-3px);box-shadow:0 28px 60px #0006}.projects__feature-index{z-index:1;font-family:var(--font-mono);letter-spacing:.18em;color:var(--signal);padding-top:.35rem;font-size:.72rem;position:relative}.projects__feature-copy{z-index:1;align-content:center;gap:.55rem;min-width:0;display:grid;position:relative}.projects__feature-sub{font-family:var(--font-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--paper-dim);font-size:.68rem}.projects__feature-title{font-family:var(--font-display);letter-spacing:-.03em;color:var(--ivory);font-size:clamp(1.7rem,3.4vw,2.6rem);font-weight:700;line-height:1.05}.projects__feature-summary{color:var(--paper-dim);-webkit-line-clamp:2;-webkit-box-orient:vertical;max-width:48ch;font-size:.95rem;display:-webkit-box;overflow:hidden}.projects__feature-cta{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--signal-soft);transition:transform .25s var(--ease);margin-top:.35rem;font-size:.72rem}.projects__feature:hover .projects__feature-cta{transform:translate(4px)}.projects__feature-media{z-index:1;background:var(--walnut);border:1px solid #f3eee41a;border-radius:3px;min-height:160px;position:relative;overflow:hidden}.projects__feature-media img,.projects__feature-media .gpu-media{object-fit:cover;width:100%;height:100%;display:block}.projects__feature-media .gpu-media img{object-fit:cover;width:100%;height:100%}.projects__feature-media--empty{background:radial-gradient(circle at 30% 30%, #d4a84b33, transparent 55%), var(--ink-3)}.projects__grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:1rem;display:grid}.projects__card{border:1px solid var(--line);background:var(--ink-2);transition:border-color .25s var(--ease), transform .25s var(--ease);border-radius:6px;grid-template-rows:auto 1fr;display:grid;overflow:hidden}.projects__card:hover{border-color:#d4a84b59;transform:translateY(-3px)}.projects__card img{aspect-ratio:16/9;object-fit:cover;width:100%}.projects__card-noimg{aspect-ratio:16/9;background:repeating-linear-gradient(135deg, #f0ece30d 0 2px, transparent 2px 10px), var(--ink-3);width:100%}.projects__card-body{align-content:start;gap:.35rem;padding:1rem 1.1rem 1.2rem;display:grid}.projects__card-body h3{margin:0;font-size:1.15rem}.projects__card-sub{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--paper-dim);margin:0;font-size:.68rem}.projects__card-summary{color:var(--paper-dim);margin:.35rem 0 0;font-size:.88rem}.projects__card-cta{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--signal);margin-top:.6rem;font-size:.7rem}.projects__links{flex-wrap:wrap;gap:.65rem;display:flex}@media (width<=860px){.projects__feature{grid-template-columns:auto 1fr}.projects__feature-media{aspect-ratio:16/9;order:-1;grid-column:1/-1;min-height:0}}@media (hover:none),(pointer:coarse){.projects__feature{transition:border-color .35s var(--ease)}.projects__feature:hover{box-shadow:none;transform:none}}@media (prefers-reduced-motion:reduce){.projects__feature,.projects__feature-media img,.projects__feature-cta{transition:none}.projects__feature:hover,.projects__feature:hover .projects__feature-media img,.projects__feature:hover .projects__feature-cta{transform:none}}.project-page__hero{width:min(1160px,100% - clamp(2.5rem,8vw,5rem));margin:0 auto;padding:clamp(7rem,16vh,9rem) 0 2.5rem}.project-page__back{font-family:var(--font-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--paper-dim);transition:color .2s var(--ease);margin-bottom:2.2rem;font-size:.72rem;display:inline-block}.project-page__back:hover{color:var(--signal)}.project-page__hero h1{letter-spacing:-.03em;max-width:18ch;margin:0 0 1.1rem;font-size:clamp(2.4rem,6vw,4.2rem);font-weight:700;line-height:1}.project-page__summary{max-width:44rem;color:var(--paper-dim);margin:0 0 1.6rem;font-size:1.1rem}.project-page__plate{border:1px solid var(--line);background:var(--ink-2);border-radius:12px;margin:2.5rem 0 0;overflow:hidden}.project-page__plate img{object-fit:cover;width:100%;max-height:62vh}.project-page__body{grid-template-columns:200px minmax(0,1fr);align-items:start;gap:clamp(2rem,5vw,4.5rem);width:min(1160px,100% - clamp(2.5rem,8vw,5rem));margin:0 auto;padding:1.5rem 0 2rem;display:grid}.project-page__toc{border-top:1px solid var(--line);padding-top:1.2rem;position:sticky;top:6rem}.project-page__toc ul{gap:.55rem;margin:0;padding:0;list-style:none;display:grid}.project-page__toc a{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--paper-dim);transition:color .2s var(--ease);font-size:.72rem}.project-page__toc a:hover{color:var(--signal)}.project-page__article{min-width:0}.project-page__intro{border-top:1px solid var(--line);padding-top:1.6rem}.project-page__intro>p{max-width:62ch;font-size:1.08rem}.project-page__highlights{gap:.5rem;margin:1.6rem 0 0;padding:0;list-style:none;display:grid}.project-page__highlights li{font-family:var(--font-mono);letter-spacing:.04em;color:var(--paper);padding-left:1.6rem;font-size:.8rem;position:relative}.project-page__highlights li:before{content:"▸";color:var(--signal);position:absolute;left:.2rem}.project-page__section{border-top:1px solid var(--line);margin-top:3.5rem;padding-top:1.6rem;scroll-margin-top:5.5rem}.project-page__section h2{font-size:clamp(1.4rem,2.6vw,1.9rem)}.project-page__section p{max-width:62ch;color:var(--paper-dim)}.project-page__section blockquote{border-left:2px solid var(--signal);font-family:var(--font-display);color:var(--paper);max-width:40ch;margin:1.4rem 0;padding:.2rem 0 .2rem 1.4rem;font-size:1.15rem;line-height:1.45}.project-page__section figure{margin:1.8rem 0 0}.project-page__zoom{border:1px solid var(--line);background:var(--ink-2);cursor:zoom-in;width:100%;transition:border-color .25s var(--ease);border-radius:10px;padding:0;display:block;overflow:hidden}.project-page__zoom:hover{border-color:var(--line-strong)}.project-page__zoom img{width:100%}.project-page__section figcaption{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--paper-dim);margin-top:.6rem;font-size:.7rem}.project-page__gallery{border-top:1px solid var(--line);margin-top:3.5rem;padding-top:1.6rem;scroll-margin-top:5.5rem}.project-page__gallery-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:.8rem;display:grid}.project-page__gallery-item{border:1px solid var(--line);background:var(--ink-2);cursor:zoom-in;transition:border-color .25s var(--ease), transform .25s var(--ease);border-radius:8px;padding:0;overflow:hidden}.project-page__gallery-item:hover{border-color:var(--signal);transform:translateY(-2px)}.project-page__gallery-item img{aspect-ratio:4/3;object-fit:cover;width:100%}.project-page__more{border-top:1px solid var(--line);margin-top:4rem;padding-top:1.6rem}.lightbox{z-index:80;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#0c0b0ae6;place-items:center;padding:2rem;display:grid;position:fixed;inset:0}.lightbox__img{border:1px solid var(--line-strong);border-radius:10px;max-width:min(1200px,94vw);max-height:86vh}.lightbox__close{font-family:var(--font-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--paper);border:1px solid var(--line-strong);background:#1a1815cc;border-radius:6px;padding:.55rem .9rem;font-size:.74rem;position:absolute;top:1.2rem;right:1.4rem}.lightbox__close:hover{border-color:var(--signal);color:var(--signal-soft)}@media (width<=900px){.project-page__body{grid-template-columns:1fr}.project-page__toc{flex-wrap:wrap;align-items:baseline;gap:1rem;display:flex;position:static}.project-page__toc ul{flex-wrap:wrap;gap:1rem;display:flex}}.about__lead-title{margin:0;font-size:clamp(2rem,4vw,3rem)}.about__stage{background:linear-gradient(155deg,#2a1c1280 0%,#0c0b0aeb 60%);border:1px solid #d4a84b24;border-radius:4px;grid-template-columns:minmax(260px,380px) 1fr;align-items:start;gap:clamp(2rem,5vw,4rem);padding:1.5rem;display:grid}.about__portrait{margin:0;position:sticky;top:5.5rem}.about__portrait-frame{background:var(--ink-2);border:1px solid #f3eee41f;border-radius:3px;position:relative;overflow:hidden}.about__portrait-frame>img:first-child{aspect-ratio:4/5;object-fit:cover;width:100%}.about__portrait-overlay{object-fit:cover;object-position:center 60%;opacity:.28;pointer-events:none;width:100%;height:38%;position:absolute;inset:auto 0 0;-webkit-mask-image:linear-gradient(#0000,#000 40%);mask-image:linear-gradient(#0000,#000 40%)}.about__caption{font-family:var(--font-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--paper-dim);margin:.75rem 0 0;font-size:.7rem}.about__copy h3{max-width:26ch;color:var(--ivory);font-size:clamp(1.45rem,2.6vw,2rem);font-weight:700;line-height:1.2}.about__copy>p{color:var(--paper-dim);max-width:62ch}.about__note{font-family:var(--font-mono);color:var(--signal);font-size:.78rem}.about__timeline{border-top:1px solid var(--line);margin-top:2.5rem;padding-top:1.25rem}.about__timeline ol{gap:.85rem;margin:0;padding:0;list-style:none;display:grid}.about__timeline li{grid-template-columns:minmax(7rem,9rem) 1fr;align-items:baseline;gap:.35rem 1rem;display:grid}.about__period{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--signal);font-size:.7rem}.about__role{color:var(--paper);font-weight:600}.about__org{color:var(--paper-dim);grid-column:2;font-size:.92rem}@media (width<=860px){.about__stage{grid-template-columns:1fr;padding:1rem}.about__portrait{max-width:320px;position:relative;top:0}.about__timeline li{grid-template-columns:1fr}.about__org{grid-column:1}}.contact{padding-bottom:2rem}.contact__panel{border:1px solid #d4a84b33;border-radius:4px;align-items:end;min-height:360px;display:grid;position:relative;overflow:hidden}.contact__bg{object-fit:cover;object-position:center 40%;width:100%;height:116%;position:absolute;inset:-8% 0;transform:translateZ(0)}.contact__bg img{object-fit:cover;object-position:center 40%;width:100%;height:100%;display:block}.contact__veil{background:linear-gradient(#0c0b0a8c 0%,#0c0b0ae0 55%,#0c0b0af5 100%),radial-gradient(700px 300px at 20% 80%,#d4a84b2e,#0000 60%);position:absolute;inset:0}.contact__inner{z-index:1;width:min(720px,100%);padding:clamp(2rem,5vw,3.5rem);position:relative}.contact__head{border-top:0;max-width:none;margin-bottom:1.75rem;padding-top:0}.contact__head:before{display:none}.contact__actions{flex-wrap:wrap;gap:.65rem;display:flex}.footer{border-top:1px solid #d4a84b24;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;width:min(1160px,100% - clamp(2.5rem,8vw,5rem));margin:3.5rem auto 0;padding:1.5rem 0 2.4rem;display:flex}.footer p,.footer__top{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--paper-dim);margin:0;font-size:.72rem}.footer__top{transition:color .2s var(--ease)}.footer__top:hover{color:var(--signal-soft)}.notfound{width:min(1160px,100% - clamp(2.5rem,8vw,5rem));margin:0 auto;padding:clamp(8rem,20vh,11rem) 0 3rem}.notfound h1{letter-spacing:-.03em;max-width:16ch;font-size:clamp(2.2rem,5.5vw,3.6rem);font-weight:700}.notfound__lede{color:var(--paper-dim);max-width:34rem;margin-bottom:1.8rem}.notfound__projects{border-top:1px solid var(--line);margin-top:4rem;padding-top:1.6rem}.app--under-intro{content-visibility:hidden;pointer-events:none;-webkit-user-select:none;user-select:none}.app--revealing,.app--live{pointer-events:auto;-webkit-user-select:auto;user-select:auto}.nav{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#0c0b0a66;border-bottom-color:#d4a84b14}.nav--solid{-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border-bottom-color:var(--line);background:#14110ee6}@media (width<=860px),(pointer:coarse){.nav,.nav--solid{-webkit-backdrop-filter:none;border-bottom-color:var(--line);background:#0c0b0af0}}.hero__kicker{font-family:var(--font-mono);letter-spacing:.18em;text-transform:uppercase;color:var(--signal-soft);background:#2a1c128c;border:1px solid #d4a84b66;border-radius:999px;align-items:center;gap:.55rem;margin:0 0 1rem;padding:.35rem .75rem;font-size:.68rem;display:inline-flex}.hero__kicker:before{content:"";background:var(--signal);border-radius:50%;width:6px;height:6px;box-shadow:0 0 12px #d4a84bb3}.hero__media:after{content:"";pointer-events:none;mix-blend-mode:screen;opacity:.9;background:radial-gradient(900px 420px at 18% 12%,#d4a84b24,#0000 55%),radial-gradient(700px 360px at 85% 70%,#3d281859,#0000 50%);position:absolute;inset:0}.section__head{position:relative}.section__head:before{content:"";background:linear-gradient(90deg, var(--signal), transparent);transform-origin:0;width:min(8rem,40%);height:1px;position:absolute;top:0;left:0}.section__head h2{text-wrap:balance}.projects__row,.btn{box-shadow:0 0 #0000}.projects__row{transition:transform .35s var(--ease), border-color .35s var(--ease), background .35s var(--ease), box-shadow .35s var(--ease)}.projects__row:hover{background:#3d281859;box-shadow:0 18px 40px #00000052}.btn--primary{box-shadow:0 10px 28px #d4a84b47}.btn--primary:hover{box-shadow:0 14px 34px #d4a84b61}.piano-entrance__curtain{z-index:4;pointer-events:none;transform-origin:bottom;background:linear-gradient(#0c0b0a00 0%,#0c0b0a26 35%,#0c0b0af2 100%);position:absolute;inset:0}.piano-entrance__flare{z-index:1;pointer-events:none;opacity:.2;background:radial-gradient(circle at 50% 55%,#d4a84b1f,#0000 58%);position:absolute;inset:-20%}.score__stage,.score__spotify,.about__portrait{background:linear-gradient(165deg, var(--ink-3) 0%, var(--ink-2) 55%, #120e0b 100%);border-color:#d4a84b1f}.score__item.is-active{background:#d4a84b17}.section{padding:6rem 0 1.5rem}.projects__rail{transform-origin:0;background:linear-gradient(90deg, var(--signal), transparent 80%);height:1px;margin-top:2.5rem}.hero__kicker{background:0 0;border:0;border-radius:0;padding:0}.hero__kicker:before{display:none}
