:root{--bg-primary:#1a1a2e;--bg-secondary:#16213e;--accent:#0f3460;--highlight:#e94560;--text-primary:#fff;--text-secondary:#a0a0a0}.app{background:#1a1a2e;background:var(--bg-primary);color:#fff;color:var(--text-primary);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.app,.home-container{height:100%;width:100%}.home-container{align-items:center;background:linear-gradient(135deg,#1a1a2e,#16213e);background:linear-gradient(135deg,var(--bg-primary) 0,var(--bg-secondary) 100%);display:flex;justify-content:center}.home-content{padding:2rem;text-align:center}.home-logo{border-radius:20px;height:120px;margin-bottom:1rem;object-fit:contain;width:120px}.home-content h1{-webkit-text-fill-color:#0000;background:linear-gradient(90deg,#e94560,#ff6b6b);background:linear-gradient(90deg,var(--highlight),#ff6b6b);-webkit-background-clip:text;background-clip:text;font-size:3rem;margin-bottom:.5rem}.home-content p{color:#a0a0a0;color:var(--text-secondary);font-size:1.2rem;margin-bottom:2rem}.start-button{background:#e94560;background:var(--highlight);border:none;border-radius:50px;color:#fff;cursor:pointer;font-size:1.2rem;padding:1rem 3rem;transition:transform .2s,box-shadow .2s}.start-button:hover{box-shadow:0 10px 30px #e9456066;transform:scale(1.05)}.scan-container{display:flex;flex-direction:column;height:100%;width:100%}.scan-header{align-items:center;background:#16213e;background:var(--bg-secondary);border-bottom:1px solid #0f3460;border-bottom:1px solid var(--accent);display:flex;justify-content:space-between;padding:.5rem 1rem}.scan-header h2{font-size:1rem;font-weight:500}.scan-main{display:flex;flex:1 1;overflow:hidden;position:relative}.camera-preview{background:#000;border:2px solid #0f3460;border:2px solid var(--accent);border-radius:8px;height:90px;left:1rem;overflow:hidden;position:absolute;top:1rem;width:160px;z-index:10}.camera-preview video{height:100%;object-fit:cover;width:100%}.camera-preview.hidden{display:none}.viewer-container{background:#1a1a2e;background:var(--bg-primary);flex:1 1}.scan-controls{align-items:center;background:#16213e;background:var(--bg-secondary);border-top:1px solid #0f3460;border-top:1px solid var(--accent);display:flex;gap:1rem;justify-content:space-between;padding:1rem}.control-button{border:none;border-radius:8px;cursor:pointer;font-size:1rem;padding:.75rem 1.5rem;transition:background .2s}.control-button.primary{background:#e94560;background:var(--highlight);color:#fff}.control-button.primary:hover{background:#ff6b6b}.control-button.secondary{background:#0f3460;background:var(--accent);color:#fff}.control-button.secondary:hover{background:#1a4a7a}.control-button:disabled{cursor:not-allowed;opacity:.5}.stats{color:#a0a0a0;color:var(--text-secondary);display:flex;font-size:.9rem;gap:1.5rem}.stat-item{align-items:center;display:flex;flex-direction:column}.stat-value{color:#fff;color:var(--text-primary);font-size:1.2rem;font-weight:700}.stat-label{font-size:.75rem}.result-container{display:flex;flex-direction:column;height:100%;width:100%}.result-header{align-items:center;background:#16213e;background:var(--bg-secondary);border-bottom:1px solid #0f3460;border-bottom:1px solid var(--accent);display:flex;justify-content:space-between;padding:1rem}.back-button{background:#0f3460;background:var(--accent);border:none;border-radius:8px;color:#fff;cursor:pointer;padding:.5rem 1rem}.floorplan-container{background:#1a1a2e;background:var(--bg-primary);flex:1 1;overflow:hidden}.floorplan-viewer{height:100%;position:relative;width:100%}.floorplan-svg{height:100%;touch-action:none;width:100%}.floorplan-controls{bottom:1rem;display:flex;flex-direction:column;gap:.5rem;position:absolute;right:1rem}.floorplan-controls button{background:#16213e;background:var(--bg-secondary);border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:1.2rem;height:40px;width:40px}.error-message{background:#e94560e6;border-radius:8px;left:50%;padding:1rem 2rem;position:absolute;text-align:center;top:50%;transform:translate(-50%,-50%)}.connection-status{align-items:center;display:flex;font-size:.85rem;gap:.5rem}.status-dot{border-radius:50%;height:8px;width:8px}.status-dot.connected{background:#4ade80}.status-dot.disconnected{background:#e94560;background:var(--highlight)}.status-dot.connecting{animation:pulse 1s infinite;background:#fbbf24}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.processing-overlay{align-items:center;background:#000000b3;bottom:0;color:#fff;display:flex;flex-direction:column;font-size:.75rem;gap:.5rem;justify-content:center;left:0;position:absolute;right:0;top:0}.spinner{animation:spin 1s linear infinite;border:3px solid #ffffff4d;border-radius:50%;border-top:3px solid var(--highlight);height:24px;width:24px}@keyframes spin{to{transform:rotate(1turn)}}.scan-container-ar{background:#000;height:100%;overflow:hidden;position:relative;width:100%}.camera-fullscreen{height:100%;left:0;position:absolute;top:0;width:100%;z-index:1}.camera-fullscreen video{height:100%;object-fit:cover;width:100%}.camera-fullscreen video.hidden{opacity:0}.pointcloud-overlay{box-shadow:inset 0 0 60px #00ffff26;height:100%;left:0;pointer-events:auto;position:absolute;top:0;width:100%;z-index:2}.pointcloud-detected{animation:pointcloud-appear .5s ease-out;left:50%;pointer-events:none;position:absolute;top:50%;transform:translate(-50%,-50%);z-index:3}@keyframes pointcloud-appear{0%{opacity:0;transform:translate(-50%,-50%) scale(.5)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}.ar-header{align-items:center;background:linear-gradient(180deg,#0009 0,#0000);display:flex;justify-content:space-between;left:0;padding:1rem;position:absolute;right:0;top:0;z-index:10}.toggle-button{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#fff3;border:1px solid #ffffff4d;border-radius:20px;color:#fff;font-size:.8rem;padding:.5rem 1rem}.toggle-button.active{background:#e94560;background:var(--highlight);border-color:#e94560;border-color:var(--highlight)}.ar-stats{display:flex;gap:1rem;left:50%;position:absolute;top:4rem;transform:translateX(-50%);z-index:10}.stat-pill{align-items:center;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#00000080;border-radius:20px;display:flex;flex-direction:column;padding:.5rem 1rem}.stat-pill .stat-value{color:#fff;font-size:1.2rem;font-weight:700}.stat-pill .stat-label{color:#ffffffb3;font-size:.65rem;text-transform:uppercase}.ar-controls{align-items:center;bottom:2rem;display:flex;gap:2rem;justify-content:center;left:0;position:absolute;right:0;z-index:10}.capture-btn{background:#0000;border:none;border-radius:50%;cursor:pointer;height:80px;padding:0;width:80px}.capture-btn:disabled{opacity:.5}.capture-ring{align-items:center;border:4px solid #fff;display:flex;justify-content:center;padding:4px}.capture-inner,.capture-ring{border-radius:50%;height:100%;width:100%}.capture-inner{background:#fff;transition:transform .1s}.capture-btn:active .capture-inner{transform:scale(.9)}.capture-inner.processing{animation:pulse-capture 1s infinite}@keyframes pulse-capture{0%,to{opacity:1;transform:scale(1)}50%{opacity:.7;transform:scale(.85)}}.control-btn{align-items:center;border:none;border-radius:50%;cursor:pointer;display:flex;font-size:1.5rem;height:50px;justify-content:center;width:50px}.control-btn.secondary{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#fff3;color:#fff}.control-btn.primary{background:#e94560;background:var(--highlight);color:#fff}.control-btn:disabled{cursor:not-allowed;opacity:.4}.processing-indicator{align-items:center;color:#fff;display:flex;flex-direction:column;gap:1rem;left:50%;position:absolute;text-shadow:0 2px 10px #00000080;top:50%;transform:translate(-50%,-50%);z-index:15}.processing-overlay-fullscreen{align-items:center;animation:fade-in .2s ease-out;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#000000bf;bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:100}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.processing-content{align-items:center;background:#ffffff1a;border:1px solid #fff3;border-radius:20px;display:flex;flex-direction:column;gap:1.5rem;padding:2rem}.processing-text{color:#fff;font-size:1.2rem;font-weight:600}.processing-subtext{color:#ffffffb3;font-size:.9rem}.spinner-large{animation:spin .8s linear infinite;border:5px solid #fff3;border-radius:50%;border-top:5px solid var(--highlight);height:60px;width:60px}.error-toast{background:#e94560e6;border-radius:8px;bottom:8rem;color:#fff;left:50%;padding:.75rem 1.5rem;position:absolute;transform:translateX(-50%);z-index:20}@media (max-width:768px){.home-content h1{font-size:2rem}.camera-preview{height:68px;width:120px}.scan-controls{flex-wrap:wrap}.stats{justify-content:center;order:-1;width:100%}}.viewer-container canvas{outline:none}.onboarding-container{background:linear-gradient(135deg,#1a1a2e,#16213e);background:linear-gradient(135deg,var(--bg-primary) 0,var(--bg-secondary) 100%);height:100%;justify-content:center;padding:1rem}.onboarding-container,.onboarding-content{align-items:center;display:flex;width:100%}.onboarding-content{flex-direction:column;gap:1.5rem;max-width:400px}.onboarding-progress{display:flex;gap:.5rem}.progress-dot{background:#ffffff4d;border-radius:50%;height:10px;transition:all .3s ease;width:10px}.progress-dot.active{background:#e94560;background:var(--highlight);transform:scale(1.2)}.progress-dot.completed{background:#e9456099}.onboarding-video-container{aspect-ratio:9/16;background:#000;border-radius:16px;box-shadow:0 20px 60px #00000080;max-height:50vh;overflow:hidden;width:100%}.onboarding-video{height:100%;object-fit:cover;width:100%}.onboarding-text{padding:0 1rem;text-align:center}.onboarding-text h2{color:#fff;color:var(--text-primary);font-size:1.5rem;margin-bottom:.5rem}.onboarding-text p{color:#a0a0a0;color:var(--text-secondary);font-size:1rem;line-height:1.5}.onboarding-buttons{display:flex;gap:1rem;padding:0 1rem;width:100%}.onboarding-skip{background:#0000;border:1px solid #fff3;border-radius:12px;color:#a0a0a0;color:var(--text-secondary);cursor:pointer;flex:1 1;font-size:1rem;padding:1rem;transition:all .2s}.onboarding-skip:hover{background:#ffffff1a;color:#fff;color:var(--text-primary)}.onboarding-next{background:#e94560;background:var(--highlight);border:none;border-radius:12px;color:#fff;cursor:pointer;flex:2 1;font-size:1rem;font-weight:600;padding:1rem;transition:all .2s}.onboarding-next:hover{background:#ff6b6b;transform:scale(1.02)}.onboarding-counter{color:#a0a0a0;color:var(--text-secondary);font-size:.85rem}