html,body{height:100%;margin:0;background:transparent;color:#e2e8f0;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto;overflow:hidden}.aurora-container{position:fixed;top:0;left:0;width:100%;height:100%;z-index:-1;background:radial-gradient(ellipse at 20% 30%,#8a2be2cc,#8a2be200 60%),radial-gradient(ellipse at 80% 50%,#00bfffb3,#00bfff00 70%),radial-gradient(ellipse at 50% 80%,#32cd3299,#32cd3200 65%),linear-gradient(135deg,#000,#0a0520);background-blend-mode:overlay,screen,hard-light;overflow:hidden;animation:aurora-drift 25s infinite alternate ease-in-out}.aurora-container:before{content:"";position:absolute;width:200%;height:200%;top:-50%;left:-50%;background:repeating-linear-gradient(45deg,rgba(255,255,255,.02) 0px,rgba(255,255,255,.02) 1px,transparent 1px,transparent 40px),repeating-linear-gradient(-45deg,rgba(255,255,255,.03) 0px,rgba(255,255,255,.03) 1px,transparent 1px,transparent 60px);animation:grid-shift 20s linear infinite}.aurora-container:after{content:"";position:absolute;width:100%;height:100%;background:radial-gradient(circle at center,transparent 70%,rgba(10,5,32,.9) 100%);animation:aurora-pulse 8s infinite alternate}@keyframes aurora-drift{0%{background-position:0% 0%,0% 0%,0% 0%;filter:hue-rotate(0deg) brightness(1)}50%{background-position:-10% -5%,5% 10%,0% 15%;filter:hue-rotate(30deg) brightness(1.2)}to{background-position:5% 10%,-10% -5%,15% 0%;filter:hue-rotate(60deg) brightness(1)}}@keyframes grid-shift{0%{transform:translate(0)}to{transform:translate(-50%,-50%)}}@keyframes aurora-pulse{0%{opacity:.8;transform:scale(1)}50%{opacity:.5;transform:scale(1.05)}to{opacity:.8;transform:scale(1)}}#app{position:fixed;inset:0;display:grid;grid-template-rows:1fr auto;gap:2px}#main-content{padding:10px;box-sizing:border-box;overflow:hidden;height:100%}#viewport{position:relative;width:100%;height:100%;overflow:hidden;border-radius:8px}#viewport canvas{display:block;width:100%!important;height:100%!important}#hud{display:flex;gap:14px;align-items:center;justify-content:center;padding:6px 10px;color:#94a3b8;background:#0f1218;border-top:1px solid #1e293b;font-size:13px}.btn,label.btn{background:#1e293b;border:1px solid #334155;color:#cbd5e1;padding:8px 12px;border-radius:6px;cursor:pointer;text-align:center;font-size:14px;transition:background-color .2s;width:100%;box-sizing:border-box}.btn:hover,label.btn:hover{background-color:#334155}input[type=file]{display:none}.switch{display:flex;align-items:center;justify-content:space-between;padding:8px 4px;font-size:14px;color:#9ca3af;cursor:pointer;border-radius:4px}.switch:hover{background-color:#ffffff0d}#status-overlay{position:absolute;padding:10px 20px;background-color:#f59e0b33;border:1px solid #f59e0b;color:#f59e0b;border-radius:8px;font-size:16px;font-weight:600;pointer-events:none;transition:opacity .5s ease-in-out;white-space:nowrap;opacity:0;animation:pulse 2.5s infinite;transform:translate(-50%);z-index:8}@keyframes pulse{0%{box-shadow:0 0 #f59e0bb3}70%{box-shadow:0 0 0 10px #f59e0b00}to{box-shadow:0 0 #f59e0b00}}.status-indicator{display:flex;align-items:center;gap:8px;padding:8px 12px;border-radius:5px;background-color:#2d374880;border:1px solid #334155;font-size:13px;font-weight:500;transition:all .3s ease}.status-icon{width:10px;height:10px;border-radius:50%;transition:background-color .3s ease}.status-indicator.connected .status-icon{background-color:#4ade80}.status-indicator.disconnected .status-icon{background-color:#64748b}#toolbar{position:absolute;top:10px;left:10px;display:flex;flex-direction:column;gap:8px;background-color:#0f1218d9;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid #1e293b;border-radius:8px;padding:8px;z-index:10}.toolbar-icon{width:40px;height:40px;display:flex;align-items:center;justify-content:center;border-radius:6px;cursor:pointer;color:#9ca3af;font-size:18px;transition:background-color .2s,color .2s}.toolbar-icon:hover{background-color:#334155;color:#e2e8f0}.toolbar-icon.active{background-color:#4f46e5;color:#fff}.toolbar-icon[data-panel=device-panel]{color:#f87171}.toolbar-icon[data-panel=device-panel]:hover{background-color:#dc2626;color:#fff}.toolbar-icon[data-panel=device-panel].active{background-color:#b91c1c;color:#fff}.toolbar-icon.connected-icon{color:#4ade80}.toolbar-icon.connected-icon:hover{background-color:#16a34a;color:#fff}.toolbar-icon.connected-icon.active{background-color:#15803d;color:#fff}.dock-panel{position:absolute;top:10px;left:66px;width:240px;background-color:#0f1218d9;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid #1e293b;border-radius:8px;padding:12px;display:flex;flex-direction:column;gap:10px;z-index:9;visibility:hidden;opacity:0;transform:translate(-10px);transition:opacity .3s ease,transform .3s ease,visibility .3s}.dock-panel.visible{visibility:visible;opacity:1;transform:translate(0)}.panel-title{font-size:12px;font-weight:600;color:#64748b;text-transform:uppercase;letter-spacing:.5px;border-bottom:1px solid #334155;padding-bottom:6px;margin-bottom:4px}#data-panel{position:absolute;top:20px;bottom:20px;right:20px;height:auto;width:33.33%;min-width:400px;max-width:800px;background-color:transparent;border:none;padding:0;display:flex;flex-direction:column;gap:10px;z-index:5;pointer-events:none}#data-panel>*{pointer-events:auto}.chart-widget{flex:1;background-color:#0f12184d;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid #1e293b;border-radius:8px;display:flex;flex-direction:column;min-height:0;overflow:hidden;position:relative}.chart-widget .panel-title{font-size:11px;font-weight:600;color:#a0aec0;text-transform:uppercase;letter-spacing:3px;padding:6px 8px;border-bottom:none;margin:0;background-color:transparent;-webkit-backdrop-filter:none;backdrop-filter:none;justify-content:center;z-index:3;display:flex;align-items:center}.chart-widget .panel-content{padding:10px;flex:1;display:flex;min-height:0}#raw-chart-container,#force-chart-container{flex:1;position:relative}#raw-pressure-chart,#force-chart{position:absolute;width:100%;height:100%;filter:drop-shadow(0 0 5px rgba(255,255,255,.2))}.chart-flex-1{flex:1}.chart-flex-2{flex:2}.modal-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#0009;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:1000;display:flex;align-items:center;justify-content:center;opacity:0;visibility:hidden;transition:opacity .3s ease,visibility .3s}.modal-overlay.active{opacity:1;visibility:visible}.modal-content{background-color:#1e293b;border:1px solid #334155;border-radius:12px;width:90%;max-width:500px;box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a;transform:scale(.95);transition:transform .3s ease}.modal-overlay.active .modal-content{transform:scale(1)}.modal-header{padding:16px 24px;border-bottom:1px solid #334155;display:flex;justify-content:space-between;align-items:center}.modal-header h2{margin:0;font-size:18px;color:#e2e8f0}.close-modal{color:#94a3b8;font-size:24px;font-weight:700;cursor:pointer;transition:color .2s}.close-modal:hover{color:#fff}.modal-body{padding:24px;display:flex;flex-direction:column;gap:20px}.help-item{display:flex;gap:16px;align-items:flex-start}.help-icon{font-size:20px;color:#4ade80;margin-top:4px;width:24px;text-align:center}.help-text h3{margin:0 0 4px;font-size:15px;color:#e2e8f0}.help-text p{margin:0;font-size:13px;color:#94a3b8;line-height:1.5}.help-text code{background-color:#0f172a;padding:2px 4px;border-radius:4px;font-family:monospace;color:#cbd5e1}.help-footer{margin-top:8px;padding-top:16px;border-top:1px dashed #334155;text-align:center}.help-footer p{margin:0;font-size:12px;color:#64748b}.contact-modal-body{display:flex;gap:40px;align-items:center;justify-content:center;transform:scale(1.2)}.cyber-container{position:relative;width:190px;height:254px;transition:.2s}.cyber-container:active{width:180px;height:245px}.cyber-card{position:absolute;inset:0;z-index:0;display:flex;justify-content:center;align-items:center;border-radius:20px;transition:.7s;background:linear-gradient(45deg,#1a1a1a,#262626);border:2px solid rgba(255,255,255,.1);overflow:hidden;box-shadow:0 0 20px #0000004d,inset 0 0 20px #0003}.card-content{position:relative;width:100%;height:100%}.qr-placeholder{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:100px;height:100px;display:flex;align-items:center;justify-content:center;border-radius:10px;border:1px solid rgba(255,255,255,.1);z-index:50;background-color:#fff;padding:5px}.qr-image{width:100%;height:100%;object-fit:contain;border-radius:8px}.title{opacity:1;transition:.3s ease-in-out;position:absolute;font-size:24px;font-weight:800;letter-spacing:4px;text-align:center;width:100%;padding-top:20px;background:linear-gradient(45deg,#0fa,#00a2ff);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;filter:drop-shadow(0 0 15px rgba(0,255,170,.3));text-shadow:0 0 10px rgba(92,103,255,.5),0 0 20px rgba(92,103,255,.3)}.subtitle{position:absolute;bottom:30px;width:100%;text-align:center;font-size:12px;letter-spacing:2px;color:#fff9}.highlight{color:#0fa;margin-left:5px;background:linear-gradient(90deg,#5c67ff,#ad51ff);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;font-weight:700}.glowing-elements{position:absolute;inset:0;pointer-events:none}.card-glare{position:absolute;inset:0;background:linear-gradient(125deg,#fff0,#ffffff0d 45%,#ffffff1a,#ffffff0d 55%,#fff0);opacity:0;transition:opacity .3s}.cyber-lines span{position:absolute;background:linear-gradient(90deg,transparent,rgba(92,103,255,.2),transparent)}.cyber-lines span:nth-child(1){top:20%;left:0;width:100%;height:1px;transform:scaleX(0);transform-origin:left;animation:lineGrow 3s linear infinite}.cyber-lines span:nth-child(2){top:40%;right:0;width:100%;height:1px;transform:scaleX(0);transform-origin:right;animation:lineGrow 3s linear infinite 1s}.cyber-lines span:nth-child(3){top:60%;left:0;width:100%;height:1px;transform:scaleX(0);transform-origin:left;animation:lineGrow 3s linear infinite 2s}.cyber-lines span:nth-child(4){top:80%;right:0;width:100%;height:1px;transform:scaleX(0);transform-origin:right;animation:lineGrow 3s linear infinite 1.5s}.card-particles span{position:absolute;width:3px;height:3px;background:#0fa;border-radius:50%;opacity:0;transition:opacity .3s ease}.card-particles span:nth-child(1){--x: 1;--y: -1;top:40%;left:20%}.card-particles span:nth-child(2){--x: -1;--y: -1;top:60%;right:20%}.card-particles span:nth-child(3){--x: .5;--y: 1;top:20%;left:40%}.card-particles span:nth-child(4){--x: -.5;--y: 1;top:80%;right:40%}.card-particles span:nth-child(5){--x: 1;--y: .5;top:30%;left:60%}.card-particles span:nth-child(6){--x: -1;--y: .5;top:70%;right:60%}.corner-elements span{position:absolute;width:15px;height:15px;border:2px solid rgba(92,103,255,.3);transition:all .3s ease}.corner-elements span:nth-child(1){top:10px;left:10px;border-right:0;border-bottom:0}.corner-elements span:nth-child(2){top:10px;right:10px;border-left:0;border-bottom:0}.corner-elements span:nth-child(3){bottom:10px;left:10px;border-right:0;border-top:0}.corner-elements span:nth-child(4){bottom:10px;right:10px;border-left:0;border-top:0}.scan-line{position:absolute;inset:0;background:linear-gradient(to bottom,transparent,rgba(92,103,255,.1),transparent);transform:translateY(-100%);animation:scanMove 2s linear infinite}.tracker:hover~.cyber-card .title{opacity:1;transform:translateY(-5px)}.tracker:hover~.cyber-card .card-particles span{animation:particleFloat 2s infinite}.tracker:hover~.cyber-card:before{opacity:1}.tracker:hover~.cyber-card{transition:.3s;filter:brightness(1.1)}.tracker:hover~.cyber-card .corner-elements span{border-color:#5c67ffcc;box-shadow:0 0 10px #5c67ff80}.cyber-container:hover .cyber-card:before{transition:.2s;content:"";opacity:.8}.cyber-canvas{perspective:800px;inset:0;z-index:200;position:absolute;display:grid;grid-template-columns:repeat(5,1fr);grid-template-rows:repeat(5,1fr)}.tracker{position:absolute;z-index:200;width:100%;height:100%;cursor:pointer}.tr-1{grid-area:1 / 1 / 2 / 2}.tr-2{grid-area:1 / 2 / 2 / 3}.tr-3{grid-area:1 / 3 / 2 / 4}.tr-4{grid-area:1 / 4 / 2 / 5}.tr-5{grid-area:1 / 5 / 2 / 6}.tr-6{grid-area:2 / 1 / 3 / 2}.tr-7{grid-area:2 / 2 / 3 / 3}.tr-8{grid-area:2 / 3 / 3 / 4}.tr-9{grid-area:2 / 4 / 3 / 5}.tr-10{grid-area:2 / 5 / 3 / 6}.tr-11{grid-area:3 / 1 / 4 / 2}.tr-12{grid-area:3 / 2 / 4 / 3}.tr-13{grid-area:3 / 3 / 4 / 4}.tr-14{grid-area:3 / 4 / 4 / 5}.tr-15{grid-area:3 / 5 / 4 / 6}.tr-16{grid-area:4 / 1 / 5 / 2}.tr-17{grid-area:4 / 2 / 5 / 3}.tr-18{grid-area:4 / 3 / 5 / 4}.tr-19{grid-area:4 / 4 / 5 / 5}.tr-20{grid-area:4 / 5 / 5 / 6}.tr-21{grid-area:5 / 1 / 6 / 2}.tr-22{grid-area:5 / 2 / 6 / 3}.tr-23{grid-area:5 / 3 / 6 / 4}.tr-24{grid-area:5 / 4 / 6 / 5}.tr-25{grid-area:5 / 5 / 6 / 6}.tr-1:hover~.cyber-card{transform:rotateX(20deg) rotateY(-10deg)}.tr-2:hover~.cyber-card{transform:rotateX(20deg) rotateY(-5deg)}.tr-3:hover~.cyber-card{transform:rotateX(20deg) rotateY(0)}.tr-4:hover~.cyber-card{transform:rotateX(20deg) rotateY(5deg)}.tr-5:hover~.cyber-card{transform:rotateX(20deg) rotateY(10deg)}.tr-6:hover~.cyber-card{transform:rotateX(10deg) rotateY(-10deg)}.tr-7:hover~.cyber-card{transform:rotateX(10deg) rotateY(-5deg)}.tr-8:hover~.cyber-card{transform:rotateX(10deg) rotateY(0)}.tr-9:hover~.cyber-card{transform:rotateX(10deg) rotateY(5deg)}.tr-10:hover~.cyber-card{transform:rotateX(10deg) rotateY(10deg)}.tr-11:hover~.cyber-card{transform:rotateX(0) rotateY(-10deg)}.tr-12:hover~.cyber-card{transform:rotateX(0) rotateY(-5deg)}.tr-13:hover~.cyber-card{transform:rotateX(0) rotateY(0)}.tr-14:hover~.cyber-card{transform:rotateX(0) rotateY(5deg)}.tr-15:hover~.cyber-card{transform:rotateX(0) rotateY(10deg)}.tr-16:hover~.cyber-card{transform:rotateX(-10deg) rotateY(-10deg)}.tr-17:hover~.cyber-card{transform:rotateX(-10deg) rotateY(-5deg)}.tr-18:hover~.cyber-card{transform:rotateX(-10deg) rotateY(0)}.tr-19:hover~.cyber-card{transform:rotateX(-10deg) rotateY(5deg)}.tr-20:hover~.cyber-card{transform:rotateX(-10deg) rotateY(10deg)}.tr-21:hover~.cyber-card{transform:rotateX(-20deg) rotateY(-10deg)}.tr-22:hover~.cyber-card{transform:rotateX(-20deg) rotateY(-5deg)}.tr-23:hover~.cyber-card{transform:rotateX(-20deg) rotateY(0)}.tr-24:hover~.cyber-card{transform:rotateX(-20deg) rotateY(5deg)}.tr-25:hover~.cyber-card{transform:rotateX(-20deg) rotateY(10deg)}.noselect{-webkit-user-select:none;user-select:none}@keyframes lineGrow{0%{transform:scaleX(0);opacity:0}50%{transform:scaleX(1);opacity:1}to{transform:scaleX(0);opacity:0}}@keyframes scanMove{0%{transform:translateY(-100%)}to{transform:translateY(100%)}}@keyframes particleFloat{0%{transform:translate(0);opacity:0}50%{opacity:1}to{transform:translate(calc(var(--x, 0) * 30px),calc(var(--y, 0) * 30px));opacity:0}}
