Spaces:
Running
Running
| * { | |
| box-sizing: border-box; | |
| margin: 0; | |
| padding: 0; | |
| } | |
| body, | |
| html { | |
| width: 100%; | |
| height: 100%; | |
| overflow: hidden; /* Prevent scrolling */ | |
| background-color: #000; | |
| font-family: | |
| -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, | |
| sans-serif; | |
| touch-action: none; /* Prevent native browser zooming/panning on mobile */ | |
| } | |
| #camera-stream { | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| width: 100%; | |
| height: 100%; | |
| object-fit: cover; /* Ensure video fills screen without distorting */ | |
| z-index: 1; | |
| pointer-events: none; | |
| } | |
| #canvas-container { | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| width: 100%; | |
| height: 100%; | |
| z-index: 2; | |
| pointer-events: none; /* Let touches pass through if not on the canvas itself */ | |
| touch-action: none; | |
| } | |
| #overlay-canvas { | |
| position: absolute; | |
| transform-origin: top left; /* Changed to top-left to make pan/zoom calculations simpler */ | |
| cursor: move; | |
| pointer-events: auto; /* Allow interaction with the canvas */ | |
| border: 1px dashed rgba(255, 255, 255, 0.5); /* Indicate it's movable */ | |
| touch-action: none; /* Prevent native pinch zoom on the canvas itself */ | |
| } | |
| /* Locked state */ | |
| body.locked #overlay-canvas { | |
| pointer-events: none; /* Prevent moving when locked */ | |
| border: none; | |
| } | |
| body.locked #controls-panel { | |
| background-color: transparent; | |
| box-shadow: none; | |
| height: auto; | |
| pointer-events: none; /* Pass clicks through the empty panel background */ | |
| } | |
| body.locked #settings-group { | |
| display: none; | |
| } | |
| body.locked h3 { | |
| display: none; | |
| } | |
| body.locked #unlock-btn { | |
| /* display: block; managed in JS now */ | |
| position: fixed; | |
| bottom: 20px; | |
| right: 20px; | |
| z-index: 100; | |
| background-color: #ff3b30; | |
| color: white; | |
| padding: 15px 20px; | |
| border-radius: 30px; | |
| border: none; | |
| font-weight: bold; | |
| box-shadow: 0 4px 6px rgba(0, 0, 0, 0.3); | |
| pointer-events: auto; /* Re-enable clicks just for the button */ | |
| } | |
| #controls-panel { | |
| position: absolute; | |
| bottom: 0; | |
| left: 0; | |
| width: 100%; | |
| background-color: rgba(255, 255, 255, 0.9); | |
| padding: 15px; | |
| z-index: 10; | |
| border-top-left-radius: 15px; | |
| border-top-right-radius: 15px; | |
| box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.2); | |
| max-height: 50vh; | |
| overflow-y: auto; | |
| } | |
| #controls-panel h3 { | |
| margin-bottom: 10px; | |
| font-size: 1.2rem; | |
| color: #333; | |
| display: inline-block; | |
| } | |
| button { | |
| background-color: #007aff; | |
| color: white; | |
| border: none; | |
| padding: 10px 15px; | |
| border-radius: 8px; | |
| font-size: 1rem; | |
| cursor: pointer; | |
| margin-bottom: 15px; | |
| } | |
| #lock-btn { | |
| float: right; | |
| background-color: #34c759; | |
| } | |
| button:active { | |
| opacity: 0.8; | |
| } | |
| .control-group { | |
| margin-bottom: 15px; | |
| display: flex; | |
| flex-direction: column; | |
| } | |
| .control-group label { | |
| margin-bottom: 5px; | |
| font-size: 0.9rem; | |
| color: #444; | |
| font-weight: 500; | |
| } | |
| input[type="range"] { | |
| width: 100%; | |
| } | |
| input[type="file"] { | |
| font-size: 0.9rem; | |
| } | |
| #reset-btn { | |
| background-color: #8e8e93; | |
| width: 100%; | |
| } | |