@font-face{font-family:Bacon;src:url(/cactus/fonts/BACON.ttf) format("truetype");font-weight:400;font-style:normal;font-display:swap}html,body,#root{margin:0;padding:0;height:100%;background:#fff;overflow:hidden}body{font-family:system-ui,-apple-system,sans-serif}.stage{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:#fff}.stage__frame{position:relative;width:100%;height:100%;background:#fff;overflow:hidden}:root{--ui-font: "Bebas Neue", "Oswald", "Anton", system-ui, sans-serif;--ui-color: #e8d2a3;--ui-color-dim: rgba(232, 210, 163, .7)}.ui{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;font-family:var(--ui-font);color:var(--ui-color);letter-spacing:.08em;text-transform:uppercase;text-shadow:0 1px 2px rgba(0,0,0,.4);z-index:10}.ui__top-left,.ui__top-right{position:absolute;top:clamp(4px,.8vh,12px);font-size:clamp(28px,2.2vw,36px);display:flex;align-items:center;gap:20px}.ui__top-left{left:clamp(16px,2.5vw,40px)}.ui__top-right{right:clamp(16px,2.5vw,40px)}.ui__eq{position:relative;display:inline-flex;align-items:flex-end;gap:4px;height:28px;background:transparent;border:0;padding:0;cursor:pointer;pointer-events:auto;color:var(--ui-color);transform:translateY(-6px);transition:color .3s ease-out}.ui__eq:hover{color:#fff}.ui__eq span{display:block;width:6px;background:currentColor;animation:ui-eq .9s ease-in-out infinite}.ui__eq:after{content:"";position:absolute;top:50%;left:50%;width:38px;height:5px;background:#ff5a7e;border-radius:2px;transform:translate(-50%,-50%) rotate(-45deg) scaleX(0);transform-origin:center;opacity:0;pointer-events:none;transition:opacity .3s ease-out,transform .3s cubic-bezier(.6,0,.85,.45)}.ui__eq--muted{color:var(--ui-color-dim)}.ui__eq--muted span{animation-play-state:paused}.ui__eq--muted:after{opacity:1;animation:ui-eq-slash 1.6s ease-in-out infinite}@keyframes ui-eq-slash{0%,to{transform:translate(-50%,-50%) rotate(-45deg) scaleX(.4)}50%{transform:translate(-50%,-50%) rotate(-45deg) scaleX(1)}}.ui__eq span:nth-child(1){height:60%;animation-delay:0s}.ui__eq span:nth-child(2){height:100%;animation-delay:.15s}.ui__eq span:nth-child(3){height:70%;animation-delay:.3s}@keyframes ui-eq{0%,to{transform:scaleY(.4)}50%{transform:scaleY(1)}}.ui__side-right{position:absolute;right:clamp(8px,1.2vw,18px);top:50%;transform:translateY(-50%) rotate(180deg);writing-mode:vertical-rl;font-size:clamp(26px,2vw,32px);letter-spacing:.25em;color:var(--ui-color-dim)}.ui__buttons{position:absolute;left:50%;bottom:clamp(50px,7vh,100px);transform:translate(-50%);display:flex;align-items:center;gap:clamp(16px,3vw,40px);pointer-events:auto}.ui__button{background:transparent;border:0;padding:0;cursor:pointer;filter:drop-shadow(0 4px 8px rgba(0,0,0,.5))}.ui__button img{display:block;height:clamp(108px,14vh,156px);width:auto;-webkit-user-select:none;user-select:none;transition:transform .18s ease-out}.ui__button--center img{height:clamp(128px,17vh,188px)}.ui__button:hover img{transform:scale(1.08)}.ui__button:active img{transform:scale(1.02)}.ui__marquee{position:absolute;left:0;right:0;bottom:0;height:clamp(36px,4.5vh,56px);background:#0000008c;border-top:1px solid rgba(245,233,212,.15);overflow:hidden;display:flex;align-items:center}.ui__marquee-track{display:flex;width:max-content;white-space:nowrap;animation:ui-marquee 60s linear infinite;font-size:clamp(24px,2vw,32px);letter-spacing:.2em}.ui__marquee-track>span{display:block;padding-right:24px}@keyframes ui-marquee{0%{transform:translate(0)}to{transform:translate(-50%)}}.ui__top-left,.ui__top-right,.ui__side-right,.ui__marquee{transition:transform .55s cubic-bezier(.65,0,.85,.45)}.ui__top-left{transform:translate(-160%)}.ui__top-right{transform:translate(160%)}.ui__side-right{transform:translate(160%) translateY(-50%) rotate(180deg)}.ui__marquee{transform:translateY(110%)}.ui--entered .ui__top-left,.ui--entered .ui__top-right{transform:translate(0);transition:transform .55s cubic-bezier(.2,.7,.25,1)}.ui--entered .ui__side-right{transform:translate(0) translateY(-50%) rotate(180deg);transition:transform .55s cubic-bezier(.2,.7,.25,1)}.ui--entered .ui__marquee{transform:translateY(0);transition:transform .55s cubic-bezier(.2,.7,.25,1)}.ui__button{transform:translateY(220%);transition:transform .5s cubic-bezier(.65,0,.85,.45)}.ui--entered .ui__button{transform:translateY(0);transition:transform .5s cubic-bezier(.2,.7,.25,1)}.ui--entered .ui__button:not(.ui__button--center),.ui--exit .ui__button:not(.ui__button--center){transition-delay:.12s}.scene-canvas{position:absolute;top:0;right:0;bottom:0;left:0}.scene-canvas--hidden{visibility:hidden;pointer-events:none}.artists{position:fixed;top:0;right:0;bottom:0;left:0;background:#fff;z-index:5}.artists--hidden{visibility:hidden;pointer-events:none}.artists__heading{position:absolute;top:clamp(20px,4vh,60px);left:clamp(20px,3vw,50px);margin:0;font-family:Bacon,Bebas Neue,system-ui,sans-serif;font-size:clamp(96px,13.5vw,210px);font-weight:400;letter-spacing:.02em;color:#1a1a1a;text-transform:uppercase;line-height:1;z-index:10;pointer-events:none;animation:artists-heading-in .65s cubic-bezier(.2,.7,.25,1) both}@keyframes artists-heading-in{0%{translate:-22% 0;opacity:0}to{translate:0 0;opacity:1}}.artists__home{position:absolute;bottom:clamp(18px,4vh,50px);left:clamp(20px,3vw,50px);background:transparent;border:0;padding:4px 6px;color:#1a1a1a;font-family:Bacon,Bebas Neue,system-ui,sans-serif;font-size:clamp(28px,3.2vw,48px);letter-spacing:.06em;line-height:1;cursor:pointer;display:flex;align-items:center;gap:12px;z-index:10;transition:transform .18s ease-out;animation:artists-home-in .65s cubic-bezier(.2,.7,.25,1) both}.artists__home:hover{transform:translate(10px)}.artists__home:active{transform:translate(6px)}.artists__home-arrow{display:inline-block;font-size:.9em;line-height:1}@keyframes artists-home-in{0%{translate:-120% 0;opacity:0}to{translate:0 0;opacity:1}}.artists--exit .artists__heading{animation:artists-heading-out .5s cubic-bezier(.6,0,.85,.45) both}.artists--exit .artists__home{animation:artists-home-out .5s cubic-bezier(.6,0,.85,.45) both}@keyframes artists-heading-out{to{translate:-120% 0;opacity:0}}@keyframes artists-home-out{to{translate:-120% 0;opacity:0}}.artists__scroll-hint{position:absolute;bottom:clamp(18px,4vh,50px);right:clamp(20px,3vw,50px);padding:4px 6px;color:#1a1a1a;font-family:Bacon,Bebas Neue,system-ui,sans-serif;font-size:clamp(28px,3.2vw,48px);letter-spacing:.06em;line-height:1;display:flex;align-items:center;gap:12px;z-index:9;pointer-events:none;opacity:0;translate:30% 0;transition:opacity .5s ease-out,translate .6s cubic-bezier(.2,.7,.25,1)}.artists__scroll-hint--visible{opacity:1;translate:0 0;animation:artists-scroll-hint-pulse 2.4s ease-in-out infinite}.artists__scroll-hint-arrow{font-size:.9em;line-height:1;animation:artists-scroll-hint-bob 1.6s ease-in-out infinite}@keyframes artists-scroll-hint-bob{0%,to{transform:translateY(-5px)}50%{transform:translateY(0)}}@keyframes artists-scroll-hint-pulse{0%,to{color:#1a1a1a}50%{color:#8a8a8a}}.artists--exit .artists__scroll-hint{animation:artists-scroll-hint-out .5s cubic-bezier(.6,0,.85,.45) both}@keyframes artists-scroll-hint-out{to{translate:120% 0;opacity:0}}.artists__canvas{position:absolute;top:0;right:0;bottom:0;left:0}.artists--transparent{background:transparent}.noise-bg{position:absolute;top:0;right:0;bottom:0;left:0;z-index:3}.noise-bg canvas{display:block;width:100%!important;height:100%!important}.noise-bg--prewarm{inset:0 auto auto 0;width:64px;height:64px;visibility:hidden;pointer-events:none}.artist-info{position:fixed;top:0;right:0;bottom:0;left:0;z-index:5;color:#ffe5d6;font-family:Bebas Neue,system-ui,sans-serif;overflow:hidden;pointer-events:none}.artist-info__inner{position:relative;width:100%;max-width:200vh;height:100%;margin:0 auto}.artist-info__left{position:absolute;top:10vh;left:5%;z-index:2;display:flex;flex-direction:column;gap:clamp(18px,2.5vh,32px);min-width:0;transform-origin:top left}.artist-info__name-wrap{position:relative;display:inline-block}.artist-info__name{margin:0;font-family:Bacon,Bebas Neue,system-ui,sans-serif;font-size:clamp(80px,11vw,180px);line-height:.88;min-height:1.1em;letter-spacing:.01em;font-weight:400;text-transform:uppercase;color:#fff;display:flex;align-items:baseline}.artist-info__name:after{content:"";display:inline-block;width:.06em;height:.8em;margin-left:.06em;background:#ff5a7e;animation:caret-blink .9s steps(2,end) infinite}.artist-info__name--done:after{visibility:hidden;animation:none}@keyframes caret-blink{0%,50%{opacity:1}51%,to{opacity:0}}.artist-info__underline{height:4px;width:clamp(180px,26vw,400px);background:#ff5a7e;margin-top:12px;border-radius:2px;transform:scaleX(0);transform-origin:left center;animation:ai-underline .45s cubic-bezier(.2,.7,.25,1) .6s forwards}@keyframes ai-underline{to{transform:scaleX(1)}}.artist-info__rise,.artist-info__release{opacity:0;transform:translateY(18px);animation:ai-rise 1s cubic-bezier(.2,.7,.25,1) both}@keyframes ai-rise{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}.artist-info__birth{display:flex;align-items:baseline;gap:clamp(16px,2vw,32px);animation-delay:0s}.artist-info__birth-label{font-family:system-ui,sans-serif;font-size:clamp(11px,.95vw,14px);letter-spacing:.22em;color:#ffe5d673;text-transform:uppercase}.artist-info__birth-value{font-family:Bebas Neue,sans-serif;font-size:clamp(20px,1.7vw,30px);color:#fff;letter-spacing:.03em}.artist-info__stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(20px,2.5vw,48px);max-width:680px;animation-delay:.15s}.artist-info__stat-value{display:flex;align-items:baseline;gap:12px;line-height:1}.artist-info__stat-value>span:first-child{font-size:clamp(36px,4.2vw,64px);color:#fff}.artist-info__stat-tag{font-family:system-ui,sans-serif;font-size:clamp(11px,.9vw,13px);letter-spacing:.22em;color:#ff5a7e;text-transform:uppercase}.artist-info__stat-sub{margin-top:8px;font-family:system-ui,sans-serif;font-size:clamp(11px,.9vw,13px);letter-spacing:.14em;text-transform:uppercase;color:#ffe5d699;line-height:1.4}.artist-info__releases-section{display:flex;flex-direction:column;gap:clamp(10px,1.5vh,16px)}.artist-info__releases-head{font-family:system-ui,sans-serif;font-size:clamp(11px,.95vw,14px);letter-spacing:.26em;color:#ffe5d673;text-transform:uppercase;animation-delay:.3s}.artist-info__releases{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(12px,1.4vw,20px);max-width:700px}.artist-info__release{padding:clamp(14px,1.4vw,20px);border:1px solid rgba(255,229,214,.18);border-radius:6px;background:#ffffff12;backdrop-filter:blur(14px) saturate(1.15);-webkit-backdrop-filter:blur(14px) saturate(1.15);display:flex;flex-direction:column;gap:6px;position:relative;overflow:hidden}.artist-info__release-title{font-family:Bebas Neue,sans-serif;font-size:clamp(20px,1.9vw,30px);color:#fff;letter-spacing:.02em;line-height:1}.artist-info__release-type{font-family:system-ui,sans-serif;font-size:clamp(10px,.8vw,12px);letter-spacing:.18em;color:#ffe5d68c;text-transform:uppercase}.artist-info__release-year{font-family:Bebas Neue,sans-serif;font-size:clamp(16px,1.4vw,22px);color:#ff5a7e;letter-spacing:.05em;margin-top:2px}.artist-info__release-tag{font-family:system-ui,sans-serif;font-size:clamp(10px,.78vw,12px);color:#ffe5d6d9;padding:4px 10px;border:1px solid rgba(255,229,214,.15);border-radius:4px;align-self:flex-start;margin-top:4px}.artist-info__release-play{position:absolute;bottom:clamp(10px,1.1vw,16px);right:clamp(10px,1.1vw,16px);width:clamp(28px,2.4vw,38px);height:clamp(28px,2.4vw,38px);padding:0;border-radius:50%;border:1px solid rgba(255,229,214,.3);background:#ffffff14;color:#ffe5d6;cursor:pointer;display:flex;align-items:center;justify-content:center;pointer-events:auto;transition:background .18s ease-out,transform .18s ease-out}.artist-info__release-play:hover{background:#ffffff29;transform:scale(1.08)}.artist-info__release-play:active{transform:scale(.96)}.artist-info__release-play svg{width:45%;height:45%;fill:currentColor}.artist-info__release-progress{position:absolute;bottom:0;left:0;right:0;height:2px;background:#ffe5d614}.artist-info__release-progress-fill{height:100%;width:0;background:#ff5a7e;transition:width .4s ease-out}.artist-info__release-progress-fill--playing{transition:none}.artist-info__right{position:absolute;top:0;bottom:0;right:0;z-index:1}.artist-info__portrait{height:100%;width:auto;display:block;opacity:0;transform:translateY(30px);animation:ai-rise-portrait 1.5s cubic-bezier(.2,.7,.25,1) 0s both;filter:drop-shadow(0 18px 40px rgba(0,0,0,.55));-webkit-user-select:none;user-select:none}@keyframes ai-rise-portrait{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}.artist-info__back{align-self:flex-start;background:transparent;border:0;padding:4px 6px;color:#ffe5d6;font-family:Bebas Neue,system-ui,sans-serif;font-size:clamp(28px,3.2vw,48px);letter-spacing:.06em;line-height:1;cursor:pointer;display:flex;align-items:center;gap:12px;pointer-events:auto;transition:transform .18s ease-out;animation:ai-back-in .65s cubic-bezier(.2,.7,.25,1) both}.artist-info__back:hover{transform:translate(-10px)}.artist-info__back:active{transform:translate(-6px)}.artist-info__back-arrow{display:inline-block;font-size:.9em;line-height:1}@keyframes ai-back-in{0%{translate:-120% 0;opacity:0}to{translate:0 0;opacity:1}}.artist-info--exit .artist-info__rise,.artist-info--exit .artist-info__release{animation:ai-fall .65s cubic-bezier(.6,0,.85,.45) forwards}@keyframes ai-fall{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(18px)}}.artist-info--exit .artist-info__portrait{animation:ai-fall-portrait .7s cubic-bezier(.6,0,.85,.45) forwards}@keyframes ai-fall-portrait{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(30px)}}.artist-info--exit .artist-info__name{animation:ai-name-out .45s cubic-bezier(.6,0,.85,.45) forwards}@keyframes ai-name-out{to{opacity:0;transform:translateY(18px)}}.artist-info--exit .artist-info__underline{animation:ai-underline-out .4s cubic-bezier(.6,0,.85,.45) forwards}@keyframes ai-underline-out{0%{transform:scaleX(1)}to{transform:scaleX(0)}}.artist-info--exit .artist-info__back{animation:ai-back-out .5s cubic-bezier(.6,0,.85,.45) forwards}@keyframes ai-back-out{to{translate:-120% 0;opacity:0}}.perf-graph{position:fixed;top:8px;left:50%;transform:translate(-50%);z-index:200;pointer-events:none;border-radius:4px;box-shadow:0 4px 16px #0006}
