[data-novex-stage] canvas{width:100%!important;height:100%!important}@keyframes waveBar{0%,to{transform:scaleY(.3);opacity:.5}50%{transform:scaleY(1);opacity:1}}.wavebar{transform-box:fill-box;transform-origin:center;animation:waveBar .8s ease-in-out infinite}.wavebar-0{animation-delay:0s}.wavebar-1{animation-delay:.11s}.wavebar-2{animation-delay:.22s}.wavebar-3{animation-delay:.33s}.wavebar-4{animation-delay:.44s}.wavebar-5{animation-delay:.55s}.wavebar-6{animation-delay:.66s}@keyframes dotBlink{0%,to{opacity:.2}50%{opacity:1}}.orb-dot-blink{animation:dotBlink 1.2s ease-in-out infinite}.blink-0{animation-delay:0s}.blink-1{animation-delay:.4s}.blink-2{animation-delay:.8s}@keyframes soundWave{0%{r:155;opacity:.18;stroke-width:.8}60%{opacity:.06}to{r:230;opacity:0;stroke-width:.3}}@keyframes soundWaveActive{0%{r:155;opacity:.55;stroke-width:1.5}60%{opacity:.2}to{r:245;opacity:0;stroke-width:.5}}.sound-wave{animation:soundWave 3.5s ease-out infinite}.wave-0{animation-delay:0s}.wave-1{animation-delay:.9s}.wave-2{animation-delay:1.8s}.wave-3{animation-delay:2.7s}.novex-orb-wrap[data-state=speaking] .sound-wave,.novex-orb-wrap[data-state=thinking] .sound-wave{animation-name:soundWaveActive;animation-duration:2s}@keyframes ringBreathe{0%,to{opacity:.9}50%{opacity:1}}.orb-ring-breathe,.orb-ring-glow{animation:ringBreathe 3s ease-in-out infinite}.orb-ring-bright{animation:ringBreathe 2s ease-in-out infinite}@keyframes centerRingPulse{0%,to{opacity:.7}50%{opacity:1}}.orb-center-ring{animation:centerRingPulse 2.5s ease-in-out infinite}@keyframes orbRotateCW{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes orbRotateCCW{0%{transform:rotate(0deg)}to{transform:rotate(-1turn)}}@keyframes orbPulse{0%,to{opacity:.7;r:48}50%{opacity:1;r:52}}@keyframes orbPulseFast{0%,to{opacity:.8;r:46}50%{opacity:1;r:54}}@keyframes orbCenterBlink{0%,to{opacity:.9}50%{opacity:1}}@keyframes orbAmbient{0%,to{opacity:.15;transform:scale(1)}50%{opacity:.25;transform:scale(1.05)}}.orb-ring-slow{transform-origin:140px 140px;animation:orbRotateCW 18s linear infinite}.orb-ring-medium{transform-origin:140px 140px;animation:orbRotateCCW 12s linear infinite}.orb-ring-fast{transform-origin:140px 140px;animation:orbRotateCW 7s linear infinite}.orb-orbit-cw{transform-origin:140px 140px;animation:orbRotateCW 5s linear infinite}.orb-orbit-ccw{transform-origin:140px 140px;animation:orbRotateCCW 3s linear infinite}.orb-core-pulse{animation:orbPulse 3s ease-in-out infinite}.orb-center{animation:orbCenterBlink 2s ease-in-out infinite}.orb-ambient{transform-origin:140px 140px;animation:orbAmbient 4s ease-in-out infinite}@keyframes listeningGrow{0%{transform:scale(1)}25%{transform:scale(1.2)}62%{transform:scale(1.15)}to{transform:scale(1.2)}}@keyframes listeningPulse{0%,to{transform:scale(1.2)}50%{transform:scale(1.14)}}@keyframes listeningRing{0%{r:155;opacity:.7;stroke-width:2}60%{opacity:.25}to{r:280;opacity:0;stroke-width:.5}}.novex-orb-wrap[data-state=listening]{animation:listeningGrow 1s cubic-bezier(.22,1,.36,1) forwards,listeningPulse 2.4s ease-in-out 1s infinite;transform-origin:center}.novex-orb-wrap[data-state=listening] .sound-wave{animation-name:listeningRing;animation-duration:1.6s}.novex-orb-wrap[data-state=listening] .orb-ring-breathe{animation:ringBreathe 1s ease-in-out infinite}.novex-orb-wrap[data-state=listening] .orb-ring-glow{animation:ringBreathe .8s ease-in-out infinite}.novex-orb-wrap[data-state=thinking] .orb-core-pulse{animation:orbPulseFast 1s ease-in-out infinite}.novex-orb-wrap[data-state=thinking] .orb-ring-slow{animation-duration:6s}.novex-orb-wrap[data-state=thinking] .orb-ring-medium{animation-duration:4s}.novex-orb-wrap[data-state=speaking] .orb-ambient{animation:orbAmbient 1s ease-in-out infinite;opacity:.35}@keyframes novexHaloFlow{0%{transform:rotate(-16deg) scale(.98)}50%{transform:rotate(5deg) scale(1.04)}to{transform:rotate(-16deg) scale(.98)}}@keyframes novexHaloDrift{0%{transform:rotate(14deg) scale(1.03)}50%{transform:rotate(-12deg) scale(.99)}to{transform:rotate(14deg) scale(1.03)}}.novex-halo-flow{animation:novexHaloFlow 15s ease-in-out infinite}.novex-halo-drift{animation:novexHaloDrift 19s ease-in-out infinite}.novex-aurora[data-state=thinking] .novex-halo-flow{animation-duration:5s}.novex-aurora[data-state=speaking] .novex-halo-flow{animation-duration:3s}@media (prefers-reduced-motion:reduce){.novex-halo-drift,.novex-halo-flow{animation:none!important}}.live-root{height:100dvh;min-height:650px;background:#080b18;color:#eee9ff;font-family:system-ui,-apple-system,sans-serif;overflow:hidden;position:relative}.live-world{position:absolute;inset:0 0 185px;direction:ltr}.live-header{position:absolute;inset:22px 28px auto;z-index:22;display:flex;align-items:center;justify-content:space-between;gap:20px;pointer-events:none}.live-header>div,.live-header>nav{pointer-events:auto}.live-header strong{font-weight:300;letter-spacing:7px;font-size:25px}.live-header small{display:block;font-size:10px;margin-top:7px;color:#b9c9e3}.live-header nav{display:flex;gap:6px;flex-wrap:wrap;max-width:70%}.live-root button,.live-root input,.live-root select,.live-root textarea{font:inherit}.live-root button{cursor:pointer;border:1px solid #b39aff30;background:#1c1935bc;color:#ded6fa;border-radius:10px;padding:9px 13px;transition:background .2s}.live-root button:hover{background:#55417780}.live-root button:disabled{opacity:.4;cursor:default}.live-root button.selected{background:#a78bfa30;border-color:#b69aff80}.live-root button:focus-visible,.live-root input:focus-visible,.live-root select:focus-visible,.live-root textarea:focus-visible{outline:2px solid #b9eaff;outline-offset:3px}.live-panel{position:absolute;z-index:25;top:100px;bottom:190px;right:28px;width:min(500px,calc(100vw - 56px));border:1px solid #b49fff3a;border-radius:20px;background:#0e0d20ee;-webkit-backdrop-filter:blur(25px);backdrop-filter:blur(25px);box-shadow:0 25px 70px #0008;overflow:auto;padding:22px;box-sizing:border-box}.live-panel>header{display:flex;align-items:center;justify-content:space-between;margin-bottom:15px}.live-panel h2{font-size:18px;font-weight:500;margin:0}.live-panel p{line-height:1.9;font-size:13px;color:#c2c4d6}.live-panel header button{border:0;background:transparent;font-size:24px;padding:0 7px}.messages article{padding:14px;border:1px solid #ffffff09;border-radius:14px;background:#ffffff03;margin-bottom:12px}.messages article.user{background:#a78bfa12;border-color:#a78bfa20}.messages small{color:#c5b2ff;font-size:10px}.messages p{white-space:pre-wrap;overflow-wrap:anywhere;text-align:start;margin:8px 0}.messages button{font-size:10px;padding:5px 9px}.empty{text-align:center;color:#8586a5;padding:25px 8px}.empty h3{font-size:18px;font-weight:400;color:#ded9f5}.add-row{display:flex;gap:8px}.add-row input{min-width:0;flex:1 1;background:#ffffff06;border:1px solid #ffffff18;border-radius:10px;color:white;padding:10px}.record{display:flex;gap:10px;align-items:center;margin:12px 0;padding:13px;background:#ffffff04;border-radius:10px;overflow-wrap:anywhere}.record span{flex:1 1}.record small{font-size:9px;color:#a7acc4}.record input{accent-color:#a78bfa}.file-button{display:inline-block;background:#a78bfa20;border:1px solid #a78bfa40;padding:12px;border-radius:10px;cursor:pointer}.file-button input{display:block;margin-top:10px;max-width:100%;font-size:11px}.document{padding:12px;border:1px solid #ffffff15;margin-top:12px;border-radius:10px}.document summary{cursor:pointer;font-size:12px}.document pre{white-space:pre-wrap;max-height:220px;overflow:auto;font-size:11px;color:#c4cadd}.settings button{margin:5px}.live-composer{position:absolute;inset:auto 28px 17px;z-index:30;background:#0b0d1ce8;border-radius:20px;padding:12px 16px;border:1px solid #ab8ffa25;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.voice-row{display:flex;align-items:center;gap:12px;margin-bottom:10px;font-size:11px;flex-wrap:wrap}.voice-row>span{-webkit-margin-start:auto;margin-inline-start:auto;color:#9fa2bc;font-size:10px}.voice-row label{display:flex;align-items:center;gap:6px}.voice-row input{accent-color:#ae95fa}.voice-row select{background:#211d36;color:#d4e9ff;border:1px solid #ffffff18;border-radius:8px;padding:6px}.voice-row>button{border:0;background:#a78bfa10;color:#b8e4ff}.input-row{display:flex;gap:12px;align-items:center}.input-row textarea{flex:1 1;background:transparent;border:0;resize:none;height:42px;min-width:0;color:#eeeaff;font-size:14px;padding:6px;line-height:1.6;outline-offset:0}.input-row>button{background:#a78bfa;color:#120c24;font-size:23px;width:44px;height:44px;padding:0;border:0}.live-composer>small{display:block;text-align:center;font-size:9px;color:#8989a4;margin-top:8px}.error{display:flex;justify-content:space-between;align-items:center;background:#54203d80;color:#ffc6da;padding:9px 13px;border-radius:10px;font-size:12px;margin-bottom:9px;max-height:100px;overflow:auto}.error button{border:0;padding:0 7px;background:none;font-size:18px}.attachment{font-size:11px;color:#bfdbff;margin-bottom:8px}.attachment button{font-size:10px;padding:3px 8px}@media(max-width:700px){.live-header{inset:16px 16px auto;align-items:flex-start}.live-header strong{font-size:19px}.live-header nav{max-width:65%}.live-header nav button{font-size:10px;padding:6px 8px}.live-panel{top:115px;right:12px;width:calc(100vw - 24px);bottom:220px;padding:16px}.live-composer{inset:auto 10px 10px;padding:10px}.voice-row{gap:7px}.voice-row>span{display:none}.live-world{bottom:215px}.live-composer>small{font-size:8px}}.live-root[dir=ltr] .live-panel{right:auto;left:28px}.live-header nav{max-width:80%}.live-header nav button{font-size:12px;padding:8px 10px}.voice-row select{max-width:170px}.voice-row meter{width:80px;accent-color:#b39aff}.live-panel.vision-panel{width:min(680px,calc(100vw - 56px))}.vision-studio input,.vision-studio select,.vision-studio textarea{display:block;width:100%;box-sizing:border-box;background:#19172d;color:#e0ddf5;border:1px solid #ab9ac544;border-radius:8px;padding:9px;margin:8px 0}.vision-studio label{font-size:12px;color:#bac5dc}.camera-stage{position:relative;background:#030510;aspect-ratio:16/9;overflow:hidden;border-radius:14px;border:1px solid #a697cf33}.camera-stage canvas,.camera-stage video{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}.camera-off{position:absolute;inset:0;display:grid;place-items:center;background:#060817;color:#9fabc7}.camera-actions{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0;align-items:center}.camera-actions a{font-size:12px;color:#b6e7ff;text-decoration:underline}.vision-result{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.8;padding:13px;background:#a38cf212;border:1px solid #a38cf22b;border-radius:12px;margin:12px 0;font-size:13px}.snapshot-stage{position:relative;margin-top:16px;cursor:crosshair;line-height:0}.snapshot-stage img{width:100%;height:auto;display:block;border-radius:10px}.snapshot-stage svg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.measurement{border:1px solid #b79eee30;padding:10px;border-radius:10px}.connection-card{border:1px solid #b8a4f329;border-radius:12px;padding:14px;margin:12px 0;background:#ffffff03}.connection-card h3{margin:0 0 8px;font-weight:500}.connection-card span{font-size:11px;color:#b9b4d8}.connections h3{font-size:16px}.live-composer .voice-row>span{-webkit-margin-start:auto;margin-inline-start:auto}.vision-panel .file-button{display:block}@media(max-width:850px){.live-header{inset:12px 16px auto;gap:8px}.live-header nav{max-width:78%}.live-header nav button{font-size:10px;padding:6px}.live-header strong{font-size:18px}.live-header small{font-size:8px}.live-panel,.live-panel.vision-panel{top:105px;bottom:225px}.live-root[dir=ltr] .live-panel{left:12px}.live-composer{inset:auto 10px 10px}.voice-row{gap:7px}.voice-row select{max-width:120px}.voice-row>span{display:none}}.hands-row{display:flex;gap:9px;align-items:center;flex-wrap:wrap;margin-bottom:9px;font-size:11px}.hands-row>span{color:#b5efff}.hands-row small{color:#a4a2bf;font-size:10px}.hands-info{border:1px solid #b393fa60;background:#18152cef;border-radius:12px;padding:14px;margin-bottom:12px;font-size:12px;max-height:230px;overflow:auto}.hands-info p{line-height:1.7;color:#cfcae4}.halo-presence{position:absolute;top:115px;inset-inline-end:24px;z-index:24;width:145px;padding:8px;border:1px solid #b198ff55;border-radius:13px;background:#0e1027e8}.halo-presence video{width:100%;height:95px;object-fit:cover;border-radius:8px;transform:scaleX(-1)}.halo-presence small{display:block;font-size:9px;color:#b9e7ff;margin:5px 0}.halo-presence button{font-size:10px;padding:5px}.live-world{bottom:235px}.live-panel,.live-panel.vision-panel{bottom:245px}@media(max-width:850px){.live-panel,.live-panel.vision-panel{bottom:280px}.live-world{bottom:265px}.hands-row{gap:6px}.hands-row button{font-size:10px;padding:6px}.halo-presence{top:115px;width:110px;inset-inline-end:12px}}.live-root{min-height:100dvh;width:100%}.live-world{inset:0 0 180px}.live-header nav[hidden]{display:none}.live-header nav{position:absolute;top:58px;inset-inline-start:0;max-width:min(540px,90vw);padding:14px;background:#101126f5;border:1px solid #b39aff40;border-radius:16px;box-shadow:0 20px 70px #0008}.live-header .novex-logo{background:transparent;border:0;padding:0}.halo-presence{top:28px;max-width:240px;width:auto;display:flex;align-items:center;gap:8px}.halo-presence video{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.halo-presence small:before{content:"● ";color:#8be9dd}.halo-presence select{background:#18182c;color:#dceaff;border:1px solid #a89bd844;border-radius:8px;max-width:80px}.heard-line{font-size:11px;color:#c5e6f1;margin-bottom:8px;max-height:45px;overflow:auto}.hands-row meter{width:65px}.live-composer{max-width:1050px;margin-inline:auto}.live-panel,.live-panel.vision-panel{bottom:230px}@media(max-width:850px){.live-world{bottom:245px}.halo-presence{top:85px;max-width:210px}.live-panel,.live-panel.vision-panel{bottom:280px}}.account-page{min-height:100dvh;display:grid;place-items:center;background:radial-gradient(ellipse at 35% 30%,#302354,#080b18 65%);color:#eae5ff;font-family:system-ui;padding:24px}.account-card{width:min(420px,100%);background:#151528aa;border:1px solid #b9a0ff38;padding:36px;border-radius:26px;box-shadow:0 30px 90px #0006}.account-card strong{letter-spacing:8px;font-size:28px;color:#c9beff}.account-card h1{font-size:24px;margin-top:32px}.account-card p{color:#b5bbd0;font-size:14px;line-height:1.7}.account-card label{display:block;margin:18px 0;font-size:13px}.account-card input{display:block;width:100%;margin-top:8px;padding:13px;background:#080b1880;color:white;border:1px solid #b0a0df44;border-radius:10px;font:inherit}.account-card button{padding:12px 20px;-webkit-margin-end:8px;margin-inline-end:8px;border-radius:10px;border:1px solid #c4afff60;background:#685192;color:white;cursor:pointer}.account-card button:disabled{opacity:.5}