*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html,body,#root{width:100%;height:100dvh;overflow:hidden;background:#0a0a0f;font-family:Share Tech Mono,monospace;color:#b0e0ff;touch-action:none;-webkit-overflow-scrolling:none;overscroll-behavior:none}.scene-container{position:fixed;top:0;right:0;bottom:0;left:0;width:100vw;height:100dvh;z-index:2;overflow:hidden;touch-action:none}.scene-container>canvas{position:absolute;top:0;right:0;bottom:0;left:0;display:block;width:100%!important;height:100%!important;z-index:1;touch-action:none}.webcam-video{position:fixed;top:0;left:0;width:1px;height:1px;opacity:0;pointer-events:none}.ui-overlay{position:fixed;top:0;right:0;bottom:0;left:0;width:100vw;height:100dvh;z-index:10;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;padding-bottom:max(8vh,env(safe-area-inset-bottom,0px) + 80px);pointer-events:none}.ui-overlay>*{pointer-events:auto}.jarvis-title{position:fixed;top:3vh;left:50%;transform:translate(-50%);font-size:clamp(.7rem,1.2vw,1rem);letter-spacing:.4em;text-transform:uppercase;color:#64c8ff59;pointer-events:none;-webkit-user-select:none;user-select:none;white-space:nowrap}.status-pill{display:flex;align-items:center;gap:10px;font-size:.75rem;letter-spacing:.15em;text-transform:uppercase;margin-bottom:1.2rem;color:#64c8ff80;transition:opacity .4s ease;opacity:0}.status-pill.visible{opacity:1}.status-dot{width:8px;height:8px;border-radius:50%;background:#0f8;box-shadow:0 0 6px #0f8,0 0 12px #0f85;animation:pulse-dot 1.8s ease-in-out infinite}.status-dot.music{background:#0cf;box-shadow:0 0 6px #0cf,0 0 12px #0cf5}.status-dot.colorcycle{background:#f9c;box-shadow:0 0 6px #f9c,0 0 12px #f9c5}@keyframes pulse-dot{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(.8)}}.activate-btn{position:relative;min-height:56px;max-width:280px;width:100%;padding:14px 32px;font-family:Share Tech Mono,monospace;font-size:.95rem;letter-spacing:.2em;text-transform:uppercase;color:#b0e0ff;background:transparent;border:1px solid rgba(100,200,255,.25);border-radius:4px;cursor:pointer;transition:all .3s ease;outline:none;touch-action:manipulation;margin:0 auto}.activate-btn:before{content:"";position:absolute;top:-1px;right:-1px;bottom:-1px;left:-1px;border-radius:4px;background:#64c8ff0a;z-index:-1}.activate-btn:hover{border-color:#64c8ff99;box-shadow:0 0 20px #64c8ff1a,inset 0 0 20px #64c8ff0d;color:#d0f0ff}.activate-btn:active{transform:scale(.98)}.activate-btn.active{border-color:#64c8ff80;color:#64c8ff}.activate-btn:disabled{opacity:.4;cursor:not-allowed}.debug-toggle-btn{position:fixed;bottom:max(16px,env(safe-area-inset-bottom,0px) + 16px);left:16px;z-index:100;width:44px;height:44px;border-radius:50%;border:1px solid rgba(100,200,255,.25);background:#0a0a0fd9;color:#b0e0ff;font-size:1.2rem;cursor:pointer;display:flex;align-items:center;justify-content:center;touch-action:manipulation;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.debug-toggle-btn:active{transform:scale(.92)}.debug-overlay{position:fixed;bottom:max(68px,env(safe-area-inset-bottom,0px) + 68px);left:12px;right:12px;max-height:40vh;z-index:99;background:#0a0a0feb;border:1px solid rgba(100,200,255,.15);border-radius:6px;display:flex;flex-direction:column;overflow:hidden;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.debug-header{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;border-bottom:1px solid rgba(100,200,255,.1);font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;color:#64c8ff80}.debug-clear-btn{background:none;border:1px solid rgba(255,80,80,.3);color:#ff9090;font-family:Share Tech Mono,monospace;font-size:.6rem;letter-spacing:.1em;text-transform:uppercase;padding:2px 8px;border-radius:2px;cursor:pointer}.debug-logs{flex:1;overflow-y:auto;padding:8px 10px;font-family:Share Tech Mono,monospace;font-size:.65rem;line-height:1.5;-webkit-overflow-scrolling:touch}.debug-line{display:flex;gap:6px;word-break:break-all;padding:2px 0}.debug-time{color:#64c8ff4d;flex-shrink:0}.debug-level{flex-shrink:0;font-weight:700}.debug-log .debug-level{color:#64c8ff80}.debug-warn .debug-level{color:#fc4}.debug-error .debug-level{color:#ff6060}.debug-msg{color:#b0e0ff}.debug-error .debug-msg{color:#ff9090}.debug-warn .debug-msg{color:#ffe080}.mode-toggle-group{position:fixed;top:max(20px,env(safe-area-inset-top,0px) + 12px);right:20px;z-index:12;display:flex;gap:8px;pointer-events:auto}.mode-toggle-btn{padding:10px 20px;font-family:Share Tech Mono,monospace;font-size:.8rem;letter-spacing:.15em;text-transform:uppercase;border-radius:4px;cursor:pointer;transition:all .3s ease;outline:none;touch-action:manipulation;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);white-space:nowrap}.mode-toggle-btn.hand{color:#0f8;background:#00ff880f;border:1px solid rgba(0,255,136,.25)}.mode-toggle-btn.hand:hover{border-color:#00ff8880;box-shadow:0 0 16px #00ff881a}.mode-toggle-btn.music{color:#0cf;background:#00ccff0f;border:1px solid rgba(0,204,255,.25)}.mode-toggle-btn.music:hover{border-color:#00ccff80;box-shadow:0 0 16px #00ccff1a}.mode-toggle-btn:active{transform:scale(.96)}.color-cycle-btn{position:relative;padding:10px 18px;font-family:Share Tech Mono,monospace;font-size:.8rem;letter-spacing:.12em;text-transform:uppercase;color:#c9f;background:#c896ff0f;border:1px solid rgba(200,150,255,.25);border-radius:4px;cursor:pointer;transition:all .3s ease;outline:none;touch-action:manipulation;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);white-space:nowrap}.color-cycle-btn:hover{border-color:#c896ff80;box-shadow:0 0 16px #c896ff26;color:#dbf}.color-cycle-btn.active{color:#f9c;background:#ff96c81a;border-color:#ff96c873;box-shadow:0 0 20px #ff96c826}.color-cycle-btn.active:hover{border-color:#ff96c899;box-shadow:0 0 24px #ff96c833}.color-cycle-btn:active{transform:scale(.96)}.gesture-list{position:fixed;left:20px;top:50%;transform:translateY(-50%);z-index:11;display:flex;flex-direction:column;gap:6px;padding:16px 18px;max-width:320px;background:#0a0a14bf;border:1px solid rgba(100,200,255,.12);border-radius:6px;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);-webkit-user-select:none;user-select:none;pointer-events:auto}.sheet-handle{display:none}.gesture-list-body{display:flex;flex-direction:column;gap:6px}.gesture-item{display:flex;align-items:baseline;gap:0;font-size:.68rem;letter-spacing:.05em;line-height:1.4;transition:all .2s ease;padding:2px 0}.gesture-item.active{color:#0fa}.gesture-item.active .gesture-name{color:#0fa;text-shadow:0 0 6px rgba(0,255,170,.4)}.gesture-emoji{width:22px;flex-shrink:0;text-align:center;font-style:normal}.gesture-name{color:#64dcffb3;flex-shrink:0;font-weight:700}.gesture-sep{color:#64c8ff33;margin:0 2px}.gesture-desc{color:#64c8ff59}.gesture-item.active .gesture-desc{color:#00ffaa80}.error-message{display:flex;flex-direction:column;align-items:center;gap:8px;max-width:90vw;padding:16px 24px;margin-bottom:1.5rem;background:#ff3c3c14;border:1px solid rgba(255,80,80,.3);border-radius:4px;color:#ff9090;font-size:.8rem;letter-spacing:.1em;text-align:center;line-height:1.5}.error-icon{font-size:1.4rem}.loading-text{font-size:.75rem;letter-spacing:.2em;text-transform:uppercase;color:#64c8ff80;margin-bottom:1rem;animation:fade-pulse 1.5s ease-in-out infinite}@keyframes fade-pulse{0%,to{opacity:.4}50%{opacity:1}}.corner-deco{position:fixed;width:40px;height:40px;border-color:#64c8ff26;border-style:solid;pointer-events:none}.corner-deco.tl{top:20px;left:20px;border-width:1px 0 0 1px}.corner-deco.tr{top:20px;right:20px;border-width:1px 1px 0 0}.corner-deco.bl{bottom:20px;left:20px;border-width:0 0 1px 1px}.corner-deco.br{bottom:20px;right:20px;border-width:0 1px 1px 0}@media(max-width:768px){.jarvis-title{font-size:clamp(.5rem,2.8vw,.7rem);letter-spacing:.2em;top:max(10px,env(safe-area-inset-top,8px));padding-top:8px}.corner-deco{width:20px;height:20px}.corner-deco.tl{top:8px;left:8px}.corner-deco.tr{top:8px;right:8px}.corner-deco.bl{bottom:8px;left:8px}.corner-deco.br{bottom:8px;right:8px}.mode-toggle-group{top:max(8px,env(safe-area-inset-top,0px) + 6px);right:8px;gap:5px;flex-wrap:wrap;justify-content:flex-end;max-width:55vw}.mode-toggle-btn{padding:7px 10px;font-size:.55rem;letter-spacing:.08em}.color-cycle-btn{padding:7px 9px;font-size:.5rem;letter-spacing:.06em}.gesture-list{position:fixed;left:0;right:0;top:auto;bottom:0;transform:none;max-width:none;width:100%;max-height:64px;min-height:64px;padding:0;gap:0;border:none;border-top:1px solid rgba(100,200,255,.15);border-radius:16px 16px 0 0;background:#080812eb;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);overflow:hidden;transition:max-height .35s cubic-bezier(.4,0,.2,1),min-height .35s cubic-bezier(.4,0,.2,1);padding-bottom:env(safe-area-inset-bottom,0px);z-index:15}.gesture-list.sheet-open{max-height:55vh;min-height:200px}.sheet-handle{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:12px 16px 10px;cursor:pointer;touch-action:pan-y;flex-shrink:0;-webkit-user-select:none;user-select:none}.sheet-handle-bar{width:40px;height:4px;border-radius:2px;background:#64c8ff40;margin-bottom:6px;transition:background .2s ease}.sheet-handle:active .sheet-handle-bar{background:#64c8ff80}.sheet-handle-label{font-size:.6rem;letter-spacing:.25em;text-transform:uppercase;color:#64c8ff73}.gesture-list-body{overflow-y:auto;-webkit-overflow-scrolling:touch;padding:4px 16px 16px;gap:4px;opacity:0;transition:opacity .25s ease .1s}.sheet-open .gesture-list-body{opacity:1}.gesture-list-header-row{display:none}.gesture-item{font-size:.6rem;line-height:1.3;padding:4px 0;border-bottom:1px solid rgba(100,200,255,.04)}.gesture-item:last-child{border-bottom:none}.gesture-emoji{width:20px;font-size:.6rem}.gesture-name{font-size:.58rem}.gesture-desc{font-size:.5rem}.gesture-sep{margin:0 2px}.ui-overlay{padding-bottom:max(10vh,env(safe-area-inset-bottom,0px) + 80px)}.sheet-open~.ui-overlay{padding-bottom:max(30vh,env(safe-area-inset-bottom,0px) + 80px)}.activate-btn{min-height:52px;max-width:260px;width:auto;padding:14px 28px;font-size:.85rem;letter-spacing:.15em}.status-pill{font-size:.6rem;gap:6px;margin-bottom:.8rem}.status-dot{width:6px;height:6px}.error-message{font-size:.7rem;padding:12px 16px;margin-bottom:1rem}.loading-text{font-size:.65rem}.debug-toggle-btn{bottom:max(12px,env(safe-area-inset-bottom,0px) + 12px);left:12px;width:38px;height:38px;font-size:1rem}.debug-overlay{bottom:max(56px,env(safe-area-inset-bottom,0px) + 56px);left:8px;right:8px;max-height:35vh}}@media(max-width:400px){.mode-toggle-group{max-width:60vw;gap:4px}.mode-toggle-btn{padding:6px 8px;font-size:.48rem}.color-cycle-btn{padding:6px 7px;font-size:.45rem}.gesture-list{min-height:56px;max-height:56px}.sheet-handle{padding:10px 12px 8px}.sheet-handle-label,.gesture-item,.gesture-name{font-size:.5rem}.gesture-desc{font-size:.42rem}.activate-btn{min-height:48px;max-width:240px;padding:12px 20px;font-size:.75rem}}@media(max-height:500px)and (orientation:landscape){.gesture-list{min-height:52px;max-height:52px}.sheet-open .gesture-list{max-height:45vh}.activate-btn{min-height:44px;padding:10px 20px;font-size:.7rem}.status-pill{margin-bottom:.4rem}.ui-overlay{padding-bottom:max(4vh,env(safe-area-inset-bottom,0px) + 50px)}}
