/* --- Component Structural Styles --- */ mc-world, mc-timeline, mc-camera, mc-frame { display: none; } mc-diorama { display: block; position: relative; width: 100%; height: 20em; & canvas { display: block; width: 100%; height: 100%; } } .spacetime-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; pointer-events: none; display: flex; flex-direction: column; justify-content: space-between; box-sizing: border-box; padding: 12px; z-index: 10; font-family: sans-serif; & .btn { background: rgba(255, 255, 255, 0.1); border: 1px solid rgba(255, 255, 255, 0.2); color: white; padding: 4px 8px; border-radius: 4px; cursor: pointer; text-align: center; font-weight: bold; font-family: inherit; backdrop-filter: blur(4px); transition: background 0.1s, border-color 0.1s; pointer-events: auto; /* Always clickable when visible */ &:hover { background: rgba(255, 255, 255, 0.2); } } & .reset-wrapper { display: flex; justify-content: flex-end; width: 100%; & .btn { visibility: hidden; } } /* Bottom: Timeline Panel Context */ & .visualizer-ui { pointer-events: none; background: transparent; padding: 12px; border-radius: 8px; display: flex; flex-direction: column; gap: 12px; color: white; user-select: none; border: 1px solid transparent; transition: all 0.2s ease; & .scrubber-row { display: flex; gap: 12px; align-items: center; & .btn { min-width: 4ch; } } & .track-container { flex-grow: 1; height: 24px; padding: 0 10px; cursor: pointer; display: flex; align-items: center; & .track-inner { position: relative; width: 100%; height: 100%; pointer-events: none; & .track-bg { position: absolute; left: -10px; right: -10px; top: 8px; height: 8px; background: rgba(255, 255, 255, 0.2); border-radius: 4px; } & .track-fill { position: absolute; left: -10px; top: 8px; height: 8px; background: #f00; width: 10px; border-radius: 4px; } & .track-handle { position: absolute; width: 16px; height: 16px; background: #fff; border-radius: 50%; top: 12px; transform: translate(-50%, -50%); z-index: 3; box-shadow: 0 0 4px rgba(0, 0, 0, 0.5); } & .marker { position: absolute; top: 8px; height: 8px; transform: translateX(-50%); pointer-events: none; z-index: 1; &.marker-event { width: 2px; background: rgba(255, 255, 255, 0.5); } &.marker-label { width: 4px; background: gold; z-index: 2; } } } } } /* Spatial Tool Hints */ & .spacetime-indicator { position: absolute; left: 33px; top: 29px; display: flex; gap: 12px; color: rgba(255, 255, 255, 0.4); font-family: monospace; font-size: 14px; pointer-events: none; opacity: 1; transition: opacity 0.2s ease; } } /* --- Hover Visibility Logic --- */ .spacetime-hover-reveal { opacity: 0; pointer-events: none; transition: opacity 0.2s ease; } .spacetime-container:hover { & .spacetime-hover-reveal { opacity: 1; pointer-events: auto; } & .spacetime-indicator { opacity: 0; } & .visualizer-ui { background: rgba(20, 20, 20, 0.85); backdrop-filter: blur(4px); border: 1px solid rgba(255, 255, 255, 0.1); box-shadow: 0 4px 12px rgba(0, 0, 0, 0.5); pointer-events: auto; } }