:root{--void: #07050c;--void-elevated: #100a18;--surface: #16101f;--border: #3a2a52;--text: #eee6f8;--muted: #9b8bb0;--purple: #a855f7;--magenta: #ff4fd8;--cyan: #4ff0ff;--violet-deep: #5b21b6;--glow-purple: rgba(168, 85, 247, .45);--glow-magenta: rgba(255, 79, 216, .35);--glow-cyan: rgba(79, 240, 255, .3);--radius: 10px;--font-ui: "Inter", system-ui, sans-serif}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0;min-height:100%}body.builder-body{font-family:var(--font-ui);color:var(--text);background:radial-gradient(ellipse 80% 60% at 15% 10%,rgba(91,33,182,.35),transparent 55%),radial-gradient(ellipse 70% 50% at 90% 80%,rgba(255,79,216,.18),transparent 50%),radial-gradient(ellipse 50% 40% at 50% 50%,rgba(79,240,255,.08),transparent 60%),var(--void);color-scheme:dark}body.viewer-body{background:transparent;overflow:hidden;width:100vw;height:100vh}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}.scene{position:relative;width:100%;height:100%;overflow:hidden;display:grid;place-items:center;isolation:isolate}.scene--opaque{background:var(--void)}.scene__bg{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:0}.scene__canvas{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;display:block}.scene__video{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;z-index:0;pointer-events:none}.scene__video-shade{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:none;background:linear-gradient(180deg,#07050c59,#07050c8c),radial-gradient(ellipse at center,transparent 20%,rgba(7,5,12,.65) 100%)}.scene__vignette{position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(ellipse at center,transparent 35%,rgba(0,0,0,.72) 100%);z-index:2;pointer-events:none}.scene__scanlines{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;pointer-events:none;background:repeating-linear-gradient(0deg,transparent,transparent 2px,rgba(0,0,0,.18) 2px,rgba(0,0,0,.18) 4px);mix-blend-mode:multiply;opacity:.55}.scene__aurora{position:absolute;top:-20%;right:-20%;bottom:-20%;left:-20%;z-index:0;background:radial-gradient(ellipse 45% 40% at 20% 30%,var(--glow-purple),transparent 60%),radial-gradient(ellipse 40% 35% at 80% 40%,var(--glow-magenta),transparent 55%),radial-gradient(ellipse 50% 40% at 50% 80%,var(--glow-cyan),transparent 50%);filter:blur(40px);animation:aurora-drift 14s ease-in-out infinite alternate}.scene__void-ring{position:absolute;top:12%;right:12%;bottom:12%;left:12%;border-radius:50%;border:1px solid rgba(168,85,247,.25);box-shadow:0 0 60px #a855f733,inset 0 0 80px #5b21b640;animation:void-pulse 8s ease-in-out infinite;z-index:0;pointer-events:none}.scene__text-host{position:absolute;top:0;right:0;bottom:0;left:0;z-index:3;pointer-events:none}.scene__text-canvas,.scene__text3d{display:block;width:100%;height:100%}.scene__text3d-host{position:absolute;top:0;right:0;bottom:0;left:0}.scene__content{position:relative;z-index:3;display:flex;flex-direction:column;gap:.35em;max-width:92%;padding:2rem;transform-style:preserve-3d}.scene__title{margin:0;line-height:1.05;text-transform:uppercase;white-space:pre-wrap;word-break:break-word;position:relative}.scene__title3d{position:relative;display:inline-block;transform-style:preserve-3d}.scene__extrude-layer{display:none}.scene__title--face{position:relative}.scene__subtitle{margin:0;opacity:.9;text-transform:uppercase;font-weight:500;position:relative;z-index:4}.fx-glow .scene__title{color:var(--scene-primary);-webkit-text-fill-color:var(--scene-primary);text-shadow:0 0 12px currentColor,0 0 36px var(--glow-purple),0 0 64px var(--glow-magenta)}.fx-spectral .scene__title{background:linear-gradient(105deg,var(--scene-primary) 0%,var(--scene-secondary) 40%,var(--scene-accent) 70%,var(--scene-primary) 100%);background-size:200% 100%;-webkit-background-clip:text;background-clip:text;color:var(--scene-primary);-webkit-text-fill-color:transparent;animation:spectral-shift 6s linear infinite;filter:drop-shadow(0 0 18px var(--glow-purple))}.fx-spectral .scene__title--face{color:var(--scene-primary)}.fx-chromatic .scene__title{position:relative;color:var(--scene-primary);-webkit-text-fill-color:var(--scene-primary);text-shadow:-2px 0 var(--scene-accent),2px 0 var(--scene-secondary),0 0 20px var(--glow-purple)}.fx-glitch .scene__title{position:relative;color:var(--scene-primary);-webkit-text-fill-color:var(--scene-primary);animation:glitch-jitter 2.4s infinite linear alternate-reverse;text-shadow:-1px 0 var(--scene-accent),1px 0 var(--scene-secondary)}.fx-glitch .scene__title:before,.fx-glitch .scene__title:after{content:attr(data-text);position:absolute;top:0;right:0;bottom:0;left:0;background:inherit;overflow:hidden;clip-path:inset(0 0 0 0)}.fx-glitch .scene__title:before{left:2px;text-shadow:-2px 0 var(--scene-accent);animation:glitch-slice 3s infinite linear alternate-reverse;color:var(--scene-accent);opacity:.7}.fx-glitch .scene__title:after{left:-2px;text-shadow:2px 0 var(--scene-secondary);animation:glitch-slice 2s infinite linear alternate-reverse;color:var(--scene-secondary);opacity:.7}.fx-float .scene__content{animation:float-bob 4.5s ease-in-out infinite}@keyframes aurora-drift{0%{transform:translate(-3%,-2%) rotate(-2deg) scale(1.05)}to{transform:translate(4%,3%) rotate(3deg) scale(1.12)}}@keyframes void-pulse{0%,to{transform:scale(1);opacity:.7}50%{transform:scale(1.04);opacity:1}}@keyframes spectral-shift{0%{background-position:0% 50%}to{background-position:200% 50%}}@keyframes float-bob{0%,to{transform:translateY(0)}50%{transform:translateY(-18px)}}@keyframes float-3d-orbit{0%,to{transform:rotateX(var(--extrude-tilt-x, 12deg)) rotateY(var(--extrude-tilt-y, -18deg)) translateY(0)}50%{transform:rotateX(calc(var(--extrude-tilt-x, 12deg) * -1)) rotateY(calc(var(--extrude-tilt-y, -18deg) * -1)) translateY(calc(var(--extrude-float, 14px) * -1))}}@keyframes glitch-jitter{0%{transform:translate(0)}20%{transform:translate(-2px,1px)}40%{transform:translate(2px,-1px)}60%{transform:translate(-1px,2px)}80%{transform:translate(1px,-2px)}to{transform:translate(0)}}@keyframes glitch-slice{0%{clip-path:inset(10% 0 80% 0)}25%{clip-path:inset(40% 0 30% 0)}50%{clip-path:inset(70% 0 5% 0)}75%{clip-path:inset(20% 0 55% 0)}to{clip-path:inset(55% 0 20% 0)}}
